Sea-Net: A Small and Inherently Interpretable Neural Network for Time Series Classification
Organizations: FOX Team, Centre de Recherche en Informatique, Signal et Automatique de Lille (CRIStAL) University of Lille, CNRS, Centrale Lille, UMR 9189 F-59000 Lille, France
Abstract
Traditional time-series classification methods often operate as black boxes, providing a class prediction without indicating which time point or time interval within the series led to that prediction. To improve temporal interpretability, MILLET (Multiple Instance Learning with Temporal Explanation), which combines an InceptionTime encoder with Conjunctive Pooling, provides both classification and temporal explanations. However, MILLET contains approximately 424 K parameters, making it unsuitable for deployment on resource-constrained micro-controllers, and it achieves an overall time-series accuracy of 0.888 and an explanation score of 0.681 NDCG@n. We therefore propose SEA-Net, a lightweight architecture using small multi-scale depthwise-separable convolutional TSC encoders and improved Multiple Instance Learning (MIL) pooling heads. Our SEA-Net bottleneck encoder with Top-k pooling achieves 0.931 accuracy and 0.765 NDCG@n with only 41 K parameters. Another variant, using a gated encoder with Top-k pooling, achieves 0.955 accuracy and 0.750 NDCG@n with 62 K parameters. These results demonstrate that lightweight architectures can maintain strong classification performance and temporal explanations while substantially reducing model size. The proposed variants address specific limitations of the pooling strategy used by MILLET, providing a practical direction for interpretable time-series classification on resource-constrained edge devices.
Figures & tables
Appendix figures & tables51 assets
Supplementary material from the paper’s appendix.
Appendix
| Stage | Layer | Output | Params |
| Input | z-normalised series | – | |
| Stem | Conv1d , kernel 7 | 512 | |
| Block 1 (dilation 1), unit: | depthwise Conv1d (kernels 5, 11, 23), summed | 2,688 | |
| pointwise Conv1d (reduce) | 1,040 | ||
| pointwise Conv1d (expand) | 1,088 | ||
| BatchNorm ReLU dropout | 128 |
| Stage | Layer | Output | Params |
| Input | z-normalised series | – | |
| Stem | Conv1d , kernel 7 | 512 | |
| Block 1 (dilation 1), unit: | depthwise Conv1d (kernels 5, 11, 23), summed | 2,688 | |
| pointwise Conv1d | 4,160 | ||
| BatchNorm ReLU dropout | 128 | ||
| after both units: residual add ReLU | block total 13,952 |
| # | Head | Attention | Reduction over time | Reduces at | Targets |
| 1 | Conjunctive (baseline) | shared gate | mean | — | — |
| 2 | Class-wise conjunctive | per-class gate | mean | L1 | |
| 3 | Soft-Max conjunctive | per-class score | softmax, learnable | L2 | |
| 4 | Top- conjunctive | per-class gate | mean of the largest | L3 | |
| 5 | Adaptive class-wise | per-class gate | soft-argmax, learnable | L3 | |
| 6 | Attention-max | per-class gate | blend of mean and max | L3 |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh | ||
| Linear sigmoid | (attention scores) | ||
| Classifier | Linear | (time-point logits) | |
| Pooling | Attention weighting | (interpretation) | |
| Mean over | (series logits) |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh | ||
| Linear sigmoid | (one gate per class) | ||
| Classifier | Linear | (time-point logits) | |
| Evidence | Gate logit (element-wise) | (interpretation) | |
| Pooling | Mean over | (series logits) |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh | ||
| Linear sigmoid | (one gate per class) | ||
| Classifier | Linear | (time-point logits) | |
| Evidence | Gate logit (element-wise) | (interpretation) | |
| Pooling | Top- over (per class) |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh | ||
| Linear (raw scores) | |||
| , softmax over | (weights, sum to 1) | ||
| Classifier | Linear | (time-point logits) | |
| Pooling | Weight logit (element-wise) | (interpretation) |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh | ||
| Linear sigmoid | (one gate per class) | ||
| Classifier | Linear | (time-point logits) | |
| Evidence | Gate logit (element-wise) | (interpretation) | |
| Pooling | softmax over of evidence | (weights) |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh | ||
| Linear sigmoid | (one gate per class) | ||
| Classifier | Linear | (time-point logits) | |
| Evidence | Gate logit (element-wise) | (interpretation) | |
| Pooling | Mean over |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh ( ) | ||
| Linear sigmoid ( ) | |||
| Element-wise product | (gated features) | ||
| Linear (scores), softmax over | (weights, sum to 1) | ||
| Classifier | Linear | (time-point logits) |
| Process | Layer | Input | Output |
| Input | Positional encoding dropout | (time-point embs.) | |
| Attention | Linear tanh | ||
| Linear sigmoid | (one gate per class) | ||
| Classifier | Linear | (time-point logits) | |
| Evidence | Gate logit (element-wise) | (interpretation) | |
| Stream A | Mean over |
| # | Dataset | Train | Test | Length | Classes | Imbalance |
|---|---|---|---|---|---|---|
| WebTraffic | 500 | 500 | 1,008 | 10 | 1.00 | |
| 1 | Adiac | 390 | 391 | 176 | 37 | 3.75 |
| 2 | ArrowHead | 36 | 175 | 251 | 3 | 1.00 |
| 3 | Beef | 30 | 30 | 470 | 5 | 1.00 |
| 4 | BeetleFly | 20 | 20 | 512 | 2 | 1.00 |
| 5 | BirdChicken | 20 | 20 | 512 | 2 | 1.00 |
| Setting | Value |
| Encoder size (every SEA-Net model) | width , 4 blocks; 41,324–69,768 parameters |
| Optimizer | Adam ( Kingma & Ba, 2015 ) , lr , weight decay |
| Epochs / early stopping | max 400 epochs; stop after 60 epochs with no improvement |
| Batch size | , floor of 2 |
| Validation split | stratified 80/20 when ; else train-loss early stopping |
| Label smoothing | 0.13 |
| Parameter | SEA-Net bottleneck Top- (the paper’s model) | SEA-Net gated (mean) Top- | MILLET, our recipe |
| Training | |||
| max epochs | 400 | 400 | 400 |
| early-stopping patience | 60 | 60 | 60 |
| batch size (max) | 16 | 16 | 16 |
| learning rate | 0.00125 | 0.00125 | 0.00125 |
| weight decay | 0.00012 | 0.00012 | 0.00012 |
| # | Encoder head | class-wise conj. | Top- conj. | softmax conj. | adaptive cw. | attn-max | gated attn. | dual-stream | conj. M | additive M | attention M |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | bottleneck (shallow) | – | 21,548 | – | – | – | – | – | – | – | – |
| 2 | multi-scale pyramid (bottleneck base, over channels) | – | 28,441 | – | – | – | – | – | – | – | – |
| 3 | bottleneck | 41,324 | 41,324 (+0.00%) | 41,325 (+0.00%) | 41,334 (+0.02%) | 41,334 (+0.02%) | 41,844 (+1.26%) | 41,845 (+1.26%) | – | – | – |
| 4 | multi-scale pyramid (bottleneck base) | – | 42,365 | – | – | – | – | – | – | – | – |
| 5 | multi-scale channels (bottleneck base, lean) | – | 43,576 | – | – | – | – | – | – | – | – |
| 6 | multi-scale channels (bottleneck base) | – | 47,176 | – | – | – | – | – | – | – | – |
| # | Encoder | Pooling head | Acc. | AUROC | NLL | AOPCR | NDCG@ | Params | Epochs run / best | Train (s) |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | bottleneck | Top- conjunctive (paper model, re-run) | 0.942 | 0.996 | 0.294 | 2.951 | 0.786 | 41,324 | 180 / 120 | 54 |
| 2 | bottleneck | Top- conjunctive, thresholded | 0.930 | 0.996 | 0.330 | 2.603 | 0.744 | 41,324 | 172 / 112 | 52 |
| 3 | bottleneck | softmax conjunctive, per-class | 0.914 | 0.991 | 0.377 | 2.076 | 0.732 | 41,334 | 151 / 91 | 65 |
| 4 | bottleneck | deviation-max (MLP form) | 0.912 | 0.990 | 0.369 | 2.394 | 0.742 | 42,544 | 164 / 104 | 276 |
| 5 | bottleneck | DSMIL (batched rewrite) | 0.900 | 0.991 | 0.477 | 1.462 | 0.667 | 71,956 | 379 / 319 | 611 |
| 6 | InceptionTime | conjunctive (MILLET, our recipe) | 0.890 | 0.985 | 0.531 | 2.120 | 0.692 | 423,707 | 184 / 124 | 443 |
| # | Encoder head | class-wise conj. | Top- conj. | softmax conj. | adaptive cw. | attn-max | gated attn. | dual-stream | conj. M | additive M | attention M |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | gated (mean) | 0.902 | 0.955 | 0.912 | 0.860 | 0.832 | – | – | – | – | – |
| 2 | base (wide, ) | 0.946 | – | 0.880 | 0.918 | – | – | – | 0.954 | 0.942 | – |
| 3 | gated (max) | 0.944 | 0.952 | 0.914 | 0.906 | 0.886 | – | – | – | – | – |
| 4 | spike/trend | 0.904 | 0.950 | 0.878 | 0.934 | 0.854 | 0.930 | 0.556 | – | – | – |
| 5 | multi-scale channels (input-gated base) | – | 0.948 | – | – | – | – | – | – | – | – |
| 6 | multi-scale channels (gated base) | – | 0.948 | – | – | – | – | – | – | – | – |
| # | Encoder head | class-wise conj. | Top- conj. | softmax conj. | adaptive cw. | attn-max | gated attn. | dual-stream | conj. M | additive M | attention M |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | gated (mean) | 2.49 / 0.714 | 2.23 / 0.750 | 2.09 / 0.765 | 2.24 / 0.731 | 1.67 / 0.704 | – | – | – | – | – |
| 2 | base (wide, ) | 1.72 / 0.686 | – | 1.02 / 0.605 | 1.61 / 0.619 | – | – | – | 1.50 / 0.698 | 1.58 / 0.729 | – |
| 3 | gated (max) | 1.89 / 0.592 | 2.27 / 0.719 | 1.88 / 0.776 | 2.07 / 0.729 | 1.12 / 0.575 | – | – | – | – | – |
| 4 | spike/trend | 2.15 / 0.699 | 2.32 / 0.756 | 1.43 / 0.665 | 1.91 / 0.747 | 1.65 / 0.644 | 1.59 / 0.721 | 1.64 / 0.510 | – | – | – |
| 5 | multi-scale channels (input-gated base) | – | 2.32 / 0.757 | – | – | – | – | – | – | – | – |
| 6 | multi-scale channels (gated base) | – | 2.22 / 0.717 | – | – | – | – | – | – | – | – |
| # | Encoder | Pooling head | Acc. | NLL | AOPCR | NDCG@ | Params | UCR-85 acc. |
|---|---|---|---|---|---|---|---|---|
| Accuracy | ||||||||
| 1 | gated (mean) | Top- conj. ∗ | 0.955 | 0.254 | 2.225 | 0.750 | 61,740 | 0.8083 |
| 2 | base (wide, ) | conj. M | 0.954 | 0.262 | 1.502 | 0.698 | 269,083 | 0.8238 |
| 3 | gated (max) | Top- conj. | 0.952 | 0.308 | 2.268 | 0.719 | 61,740 | 0.8108 |
| 4 | bottleneck | Top- conj. ( ) | 0.950 | 0.263 | 2.303 | 0.765 | 41,324 | – |
| 5 | spike/trend | Top- conj. | 0.950 | 0.288 | 2.316 | 0.756 | 67,020 | 0.8089 |
| # | Pooling head | Real multiplications | Scale w.r.t. | Scale w.r.t. | At WebTraffic (M) |
| 1 | conjunctive M | 2.351 ( ) | |||
| 2 | class-wise conjunctive | 1.262 ( ) | |||
| 3 | Top- conjunctive | 1.253 ( ) | |||
| 4 | softmax conjunctive | 1.272 ( ) | |||
| 5 | adaptive class-wise | 1.282 ( ) | |||
| 6 | attention-max | 1.262 ( ) |
| # | Pooling head | Mean acc. | Mean AOPCR | Mean NDCG@ | Best pairing (acc.) | |
| SEA-Net heads | ||||||
| 1 | class-wise conjunctive | 0.921 | 2.322 | 0.692 | 10 | 0.946 ( seanet_classwise ) |
| 2 | gated attention | 0.918 | 1.869 | 0.733 | 4 | 0.930 ( seanet_bottleneck_gatedattn ) |
| 3 | adaptive class-wise | 0.912 | 2.210 | 0.732 | 9 | 0.946 ( seanet_recon_adaptive ) |
| 4 | softmax conjunctive | 0.907 | 1.690 | 0.712 | 9 | 0.940 ( seanet_bottleneck_softmax ) |
| 5 | Top- conjunctive | 0.903 | 2.260 | 0.712 | 16 | 0.955 ( seanet_gated_mean_topk ) |
| # | Encoder | Mean acc. | Mean AOPCR | Mean NDCG@ | Best pairing (acc.) | |
| SEA-Net encoders ( = a wrapper around another encoder) | ||||||
| 1 | SEA-Net multi-scale channels † | 0.936 | 2.385 | 0.747 | 4 | 0.948 ( seanet_inputgate_mschan ) |
| 2 | SEA-Net reconstruction-residual | 0.924 | 2.315 | 0.719 | 5 | 0.946 ( seanet_recon_adaptive ) |
| 3 | SEA-Net input-gated | 0.903 | 2.345 | 0.718 | 5 | 0.946 ( seanet_inputgate_topk ) |
| 4 | SEA-Net gated | 0.902 | 2.056 | 0.710 | 19 | 0.955 ( seanet_gated_mean_topk ) |
| 5 | SEA-Net base | 0.898 | 1.933 | 0.693 | 12 | 0.954 ( seanet_conjunctive ) |
| # | at | Accuracy | NLL | AOPCR | NDCG@ | |
| 1 | 0.05 | 51 | 0.888 | 0.401 | 2.288 | 0.715 |
| 2 | 0.10 (default) | 101 | 0.888 | 0.391 | 2.409 | 0.755 |
| 3 | 0.25 | 252 | 0.940 | 0.277 | 2.648 | 0.733 |
| 4 | 0.50 | 504 | 0.882 | 0.418 | 3.114 | 0.732 |
| 5 | 1.00 (= class-wise conjunctive) | 1008 | 0.908 | 0.395 | 2.436 | 0.722 |
| 0.10, mean std over 3 runs | 101 |
| Accuracy | NLL | AOPCR | NDCG@ | |
| 0.01 (on, the default) | 0.888 | 0.391 | 2.409 | 0.755 |
| 0.00 (off) | 0.950 | 0.263 | 2.303 | 0.765 |
| # | Model | Metric | Run 1 | Run 2 | Run 3 | Run 4 | Mean std |
| 1 | SEA-Net gated (mean) + Top- conjunctive | accuracy | 0.954 | 0.958 | 0.952 | – | |
| AOPCR | 2.293 | 2.074 | 2.308 | – | |||
| NDCG@ | 0.772 | 0.749 | 0.728 | – | |||
| run | archive, seed 0 | archive, seed 1 | archive, seed 2 | ||||
| 2 | SEA-Net bottleneck + Top- conjunctive | accuracy | 0.888 | 0.938 | 0.966 | – | |
| AOPCR | 2.409 | 2.708 | 2.378 | – |
| Model | Params | Acc. | Mean rank | W/T/L |
| MILLET, published ( Early et al., 2024 ) | 423,707 | 0.8445 | — | — |
| SEA-Net wide class-wise conjunctive | 269,164 | 0.8292 | 11.53 | 26/19/39 |
| SEA-Net wide MILLET additive | 269,083 | 0.8298 | 11.98 | 23/19/42 |
| SEA-Net wide MILLET conjunctive | 269,083 | 0.8238 | 12.43 | 22/20/42 |
| MILLET, matched budget | 423,707 | 0.8274 ‡ | 12.60 | 13/25/46 |
| ResNet conjunctive | 506,331 | 0.8146 | 13.54 | 25/11/49 |
| # | Model | Acc. | Bal. acc. | AUROC | NLL | AOPCR | Params | |
|---|---|---|---|---|---|---|---|---|
| 1 | SEA-Net base (wide, ) + additive (MILLET) | 85 | 0.8298 | 0.8077 | 0.9295 | 0.5088 | 0.551 | 269,083 |
| 2 | SEA-Net base (wide, ) + class-wise conjunctive | 85 | 0.8292 | 0.8039 | 0.9255 | 0.5113 | 0.564 | 269,164 |
| 3 | MILLET (InceptionTime + conjunctive), our recipe | 84 | 0.8274 | 0.7997 | 0.9275 | 0.5297 | 0.812 | 423,707 |
| 4 | SEA-Net base (wide, ) + conjunctive (MILLET) | 85 | 0.8238 | 0.7993 | 0.9281 | 0.5180 | 0.626 | 269,083 |
| 5 | SEA-Net gated (max) + class-wise conjunctive | 85 | 0.8237 | 0.7979 | 0.9288 | 0.5214 | 0.619 | 61,740 |
| 6 | SEA-Net input-gated + adaptive class-wise | 85 | 0.8153 | 0.7905 | 0.9208 | 0.5545 | 0.964 | 58,102 |
| # | Model | W/T/L acc. | W/T/L NLL | W/T/L AOPCR |
|---|---|---|---|---|
| 1 | SEA-Net base (wide, ) + additive (MILLET) | 24/19/42 | 60/2/23 | 3/0/82 |
| 2 | SEA-Net base (wide, ) + class-wise conjunctive | 27/19/39 | 60/1/24 | 3/0/82 |
| 3 | MILLET (InceptionTime + conjunctive), our recipe | 13/25/46 | 56/2/26 | 3/0/81 |
| 4 | SEA-Net base (wide, ) + conjunctive (MILLET) | 23/20/42 | 57/5/23 | 4/0/81 |
| 5 | SEA-Net gated (max) + class-wise conjunctive | 20/17/48 | 61/0/24 | 4/0/81 |
| 6 | SEA-Net input-gated + adaptive class-wise | 20/15/50 | 60/0/25 | 4/0/81 |
| # | Dataset | MILLET pub. | bottleneck | gated (mean) | input-gated | spike/trend | MILLET (ours) | ResNet | FCN |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Adiac | 0.832 | 0.733 | 0.788 | 0.749 | 0.772 | 0.812 | 0.785 | 0.788 |
| 2 | ArrowHead | 0.838 | 0.851 | 0.829 | 0.840 | 0.869 | 0.827 | 0.886 | 0.840 |
| 3 | Beef | 0.847 | 0.822 | 0.867 | 0.833 | 0.767 | 0.800 | 0.800 | 0.733 |
| 4 | BeetleFly | 0.920 | 0.867 | 0.750 | 0.850 | 0.900 | 0.883 | 0.850 | 0.700 |
| 5 | BirdChicken | 0.940 | 0.850 | 0.800 | 0.950 | 0.850 | 0.983 | 1.000 | 0.900 |
| 6 | Car | 0.920 | 0.867 | 0.883 | 0.917 | 0.883 | 0.911 | 0.933 | 0.883 |
| # | Dataset | MILLET pub. † | bottleneck | gated (mean) | input-gated | spike/trend | MILLET (ours) | ResNet | FCN |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Adiac | 15.89 | -0.83 | -0.02 | -0.27 | -0.64 | 1.60 | -2.05 | 1.73 |
| 2 | ArrowHead | 3.20 | 0.24 | 0.45 | 1.37 | 0.67 | 0.60 | 0.84 | 1.31 |
| 3 | Beef | 5.49 | 1.33 | 1.95 | 0.80 | -0.30 | 1.34 | 2.07 | 1.63 |
| 4 | BeetleFly | 1.24 | 0.58 | 2.35 | 1.18 | 1.59 | 0.24 | 2.29 | 1.35 |
| 5 | BirdChicken | 3.37 | 1.96 | 2.77 | 1.30 | 1.58 | 0.96 | 1.15 | 1.36 |
| 6 | Car | 6.62 | 0.40 | 1.81 | -0.03 | 2.80 | 1.02 | 2.55 | 3.66 |
| WebTraffic | UCR-85 mean | ||||||
| # | How the number was obtained | Runs | Acc. | AOPCR | NDCG@ | Acc. | AOPCR |
| 1 | Published, mean of 5 seeds | 5 | 0.924 | 12.768 † | 0.674 | 0.8445 | 4.553 † |
| 2 | Published, 5-model ensemble | 1 | 0.940 | 11.100 † | 0.694 | – | – |
| 3 | Re-trained here, our recipe (400 epochs, label smoothing, early stopping): the baseline of every comparison | 4 | 0.8274 (84) | 0.812 | |||