When Does Unsupervised Learning Succeed or Fail? A PoS Perspective on Reconstruction-Based Anomaly Detection
Organizations: Tampere University, Tampere, Finland · Radboud University, Nijmegen, The Netherlands
Abstract
Reconstruction-based unsupervised learning can fail in two opposing ways: a model may reconstruct anomalies too accurately or discard valid nominal variation. Using the Pursuit of Subspaces hypothesis, we characterize these failures through the meet, union, and join geometries induced by the nominal components. Excess learned range produces join blindness, while insufficient capacity produces meet preference and loss of nominal fidelity. We show that the compact nominal union is optimal among nominal faithful ranges and generally requires a nonlinear reconstruction map. Based on this geometry, we introduce Dynamic Push and Pull, which learns from controlled perturbations without anomaly labels, and nested manifold carving, which applies the same principle recursively in latent space. Experiments confirm the predicted changes in latent geometry across every tested Push and Pull configuration. The proposed methods improve reconstruction-based anomaly detection across standard benchmarks and unseen image degradations, while also improving pretrained ECG representations for downstream classification. These results connect reconstruction failures to identifiable geometric conditions and provide practical mechanisms for learning compact representations.
Figures & tables
| Configuration | F1 | ROC-AUC | PR-AUC |
| Bouman-Heskes baseline | 0.693 | 0.866 | 0.936 |
| Higher-capacity AE | 0.780 | 0.893 | 0.962 |
| AE + mask | 0.766 | 0.881 | 0.957 |
| AE + PP | 0.792 | 0.897 | 0.963 |
| AE + nested + PP | 0.798 | 0.909 | 0.967 |
| AE + nested + PP + sparsity | 0.808 | 0.928 | 0.972 |
| Predicted change | AE | AE + PP |
| Increased nominal relative separation, | ||
| All four anomaly proximity indicators decrease |
| Baselines | Ours | |||||||||||||
| Dataset | IF | OC-SVM | DSEBM-e | AnoGAN | DAGMM | ALAD | RCGAN | DSVDD | GOAD | MEMAE | MEMGAN | TOLL | AE-PP | AE-PoS |
| Arrhythmia | 53.03 | 45.18 | 46.01 | 42.42 | 49.83 | 51.52 | 54.14 | 34.79 | 52.00 | 51.13 | 55.72 | 60.00 | ||
| Baselines | Ours | ||||||||||||
| OCGAN | VAE | DSVDD | DSEBM | DAGMM | IF | AnoGAN | ALAD | MEMAE | MEMGAN | TOLL | AE-PP | AE-PoS | |
| Average | 65.6 | 58.3 | 64.8 | 60.4 | 54.4 | 55.5 | 61.8 | 59.3 | 58.5 | 65.3 | 69.6 | 71.30 | 71.73 |
| AE (0.83M) | VAE (83.7M) | AE-PP (0.83M) | AE-PoS (1.67M) | |||||
| Family | ROC | PR | ROC | PR | ROC | PR | ROC | PR |
| Additive noise (1) | 1.000 | 1.000 | 0.998 | 0.998 | 1.000 | 1.000 | 1.000 | 1.000 |
| Blur (7) | 0.568 | 0.536 | 0.133 | 0.334 | 0.889 | 0.881 | 0.903 | 0.896 |
| Rain (5) | 0.440 | 0.462 | 0.791 | 0.687 | 0.946 | 0.931 | 0.958 | 0.938 |
| Underwater (3) | 0.295 | 0.378 | 0.449 | 0.439 | 0.967 | 0.962 | 0.985 | 0.981 |
| Overall (16) | 0.504 | 0.512 | 0.452 | 0.506 | 0.929 | 0.919 | 0.941 | 0.932 |
| AE | VAE | AE-PP | AE-PoS | |
| Clean | 63.04 | 27.59 | 43.42 | 43.07 |
| Blur 1.0 | 62.72 | 37.01 | 30.51 | 31.79 |
| PTB-XL | ICBEB | ||||
| Encoder | Super | Sub | Form | Rhythm | CPSC2018 |
| ECG-CPC | 0.8630 | 0.8860 | 0.8730 | 0.9380 | 0.9020 |
| ECG-FM | 0.8730 | 0.8660 | 0.7820 | 0.8650 | 0.9060 |
| MERL | 0.8870 | 0.8950 | 0.8640 | 0.8770 | 0.9140 |
| ST-MEM | 0.8954 | 0.8935 | 0.8548 | 0.9463 | 0.9559 |
| Stage 0 | 0.8969 | 0.8917 | 0.8523 | 0.9449 | 0.9530 |
Appendix figures & tables24 assets
Supplementary material from the paper’s appendix.
Appendix
| Result or construction | P1 | P2 | P3 | P4 |
| Score ordering, union optimality, and linear obstruction | ||||
| Join blindness and meet preference as PoS failures | ||||
| Dynamic Push and Pull construction | ||||
| Push and Pull geometric guarantees | ||||
| Nested Manifold Carving and the nested-range relation | ||||
| Increasing relative separation of nominal components |
| Learned geometry | AUROC | ||||
| Join (linear AE, ) | |||||
| Compact union (ReLU AE, ) | |||||
| Rank deficient underlearning (linear AE, ) |
| Normal digits | Aug. | Objective | Sparse | Stage 0 | Stage 1 | ||
|---|---|---|---|---|---|---|---|
| ROC-AUC | F1 | ROC-AUC | F1 | ||||
| 0,2,4,5,6,8,9 | mask | AE | – | ||||
| 0,2,4,5,6,8,9 | mask | AE | yes | ||||
| 0,2,4,5,6,8,9 | mask | AE+PP | – | ||||
| 0,2,4,5,6,8,9 | mask | AE+PP | yes | ||||
| 0,2,4,5,6,8,9 | none | AE | – | ||||
| Normal digits | Hierarchy | Push | Mask | Sparsity | F1 | ROC-AUC | PR-AUC |
|---|---|---|---|---|---|---|---|
| level | pull | ||||||
| Baseline (4,5,7) | 0.693 | 0.866 | 0.936 | ||||
| 4,5,7 | 0.780 | 0.893 | 0.962 | ||||
| 4,5,7 | ✓ | 0.780 | 0.893 | 0.962 | |||
| 4,5,7 | ✓ | 0.772 | 0.890 | 0.960 | |||
| 4,5,7 | ✓ | ✓ | 0.772 | 0.889 | 0.960 |
| Objective | Stage | F1 | ROC-AUC | PR-AUC |
| AE | 0 | 0.780 | 0.893 | 0.962 |
| AE | 1 | 0.780 | 0.893 | 0.962 |
| DAE | 0 | 0.783 | 0.895 | 0.962 |
| DAE | 1 | 0.783 | 0.895 | 0.962 |
| AE with Push and Pull | 0 | 0.792 | 0.897 | 0.963 |
| AE with Push and Pull | 1 | 0.798 | 0.909 | 0.967 |
| Channel fires | Disjoint outcomes | ||||||
| Digit | Role | Recon. | Subsp. | Recon. only | Subsp. only | Neither | Subsp.-only share of det. |
| 0 | anomaly | ||||||
| 1 | anomaly | ||||||
| 2 | anomaly | ||||||
| 3 | anomaly | ||||||
| 6 | anomaly | ||||||
| normal set | mask | loss | sparsity | |||
| (%) | (%) | (%) | ||||
| none | MSE | – | +0.1 | +0.0 | -0.0 | |
| none | MSE | yes | -0.2 | -0.1 | +0.1 | |
| mask | MSE | – | -0.1 | +0.0 | +0.1 | |
| mask | MSE | yes | -0.8 | -0.9 | -0.1 | |
| none | PP | – | +7.6 | -3.1 | -10.0 |
| normal set | mask | loss | sparsity | ||||
| (%) | (%) | (%) | (%) | ||||
| none | MSE | – | -0.4 | -0.1 | -0.5 | -0.1 | |
| none | MSE | yes | -0.5 | -0.3 | -0.4 | -0.6 | |
| mask | MSE | – | -1.0 | -0.8 | -1.0 | -0.6 | |
| mask | MSE | yes | -1.1 | -1.7 | -0.2 | -1.0 | |
| none | PP | – | -12.4 | -15.3 | -9.6 | -2.2 |
| Dataset | Training pool | Validation | Test | Input shape | Problems |
| MNIST | 50 000 | 10 000 | 10 000 | 10 | |
| Fashion-MNIST | 50 000 | 10 000 | 10 000 | 10 | |
| CIFAR-10 | 40 000 | 10 000 | 10 000 | 10 | |
| CIFAR-100 | 40 000 | 10 000 | 10 000 | 20 | |
| Arrhythmia | 452 records (fixed stratified split) | 274 features | 1 | ||
| Dataset | AE | AE-PP | AE-PoS |
| MNIST | 94.74 4.65 | 99.38 0.42 | 99.35 0.51 |
| Fashion-MNIST | 91.60 5.34 | 94.83 3.95 | 94.87 4.04 |
| CIFAR-10 | 68.96 7.29 | 71.30 6.70 | 71.73 6.60 |
| CIFAR-100 | 65.42 9.09 | 68.56 8.89 | 68.87 8.97 |
| Arrhythmia (F1) | 60.77 7.26 | 67.69 5.75 | 70.77 5.75 |
| Push-pull | |||||
| Dataset | Latent | LR | Batch | Scale | Weight |
| Arrhythmia | 16 | 100 | 3.00 | 1.00 | |
| MNIST | 128 | 1000 | 3.00 | 1.00 | |
| Fashion-MNIST | 256 | 500 | 3.00 | 1.00 | |
| CIFAR-10 | 64 | 50 | 2.00 | 1.00 | |
| CIFAR-100 | 64 | 100 | 2.00 | 1.00 | |
| Push-pull | ||||||
| Dataset | Encoder path | LR | Batch | Space | Scale | Weight |
| Arrhythmia | 100 | latent | 1.00 | 1.00 | ||
| MNIST | 1000 | pixel | 2.00 | 1.00 | ||
| Fashion-MNIST | 500 | pixel | 2.00 | 4.00 | ||
| CIFAR-10 | 50 | latent | 2.00 | 1.00 | ||
| CIFAR-100 | 100 | latent | 2.00 | 1.00 | ||
| Dataset | Stage 0 | Stage 1 |
| MNIST | CutPaste with three rotated patches | Same CutPaste configuration |
| Fashion-MNIST | OneOf : CutPaste (area – , two patches), patch shuffle (grid 2), rotation, and phase scramble ( ) | Same OneOf configuration |
| CIFAR-10 | OneOf : phase scramble ( ), patch shuffle (grid 2), CutPaste, and channel shuffle | Gaussian noise on the Stage-0 latent, with relative and |
| CIFAR-100 | OneOf : phase scramble ( ), patch shuffle (grid 2), CutPaste, and channel shuffle | Gaussian noise on the Stage-0 latent, with relative and |
| Arrhythmia | Feature shuffle with fraction | Same feature-shuffle configuration |
| Normal | OC-SVM | OCGAN | VAE | DCAE | IF | AnoGAN | KDE | DSVDD | MEMAE | MEMGAN | Toll | AE-PP | AE-PoS |
| 0 | 98.6 0.0 | 99.8 | 99.7 | 97.6 0.7 | 98.0 0.3 | 96.6 1.3 | 97.1 0.0 | 98.0 0.7 | 99.3 0.1 | 99.3 0.1 | 99.8 0.1 | 99.91 0.02 | 99.90 0.02 |
| 1 | 99.5 0.0 | 99.9 | 99.9 | 98.3 0.6 | 97.3 0.4 | 99.2 0.6 | 98.9 0.0 | 99.7 0.1 | 99.8 0.0 | 99.9 0.0 | 99.9 0.0 | 99.94 0.01 | 99.95 0.01 |
| 2 | 82.5 0.1 | 94.2 | 93.6 | 85.4 2.4 | 88.6 0.5 | 85.0 2.9 | 79.0 0.0 | 91.7 0.8 | 90.6 0.8 | 94.5 0.1 | 96.2 1.6 | 99.24 0.05 | 99.28 0.05 |
| 3 | 88.1 0.0 | 96.3 | 95.9 | 86.7 0.9 | 89.9 0.4 | 88.7 2.1 | 86.2 0.0 | 91.9 1.5 | 94.7 0.6 | 95.7 0.4 | 97.9 0.6 | 99.14 0.11 | 99.15 0.12 |
| 4 | 94.9 0.0 | 97.5 | 97.3 | 86.5 2.0 | 92.7 0.6 | 89.4 1.3 | 87.9 0.0 | 94.9 0.8 | 94.5 0.4 | 96.1 0.4 | 97.8 0.4 | 99.06 0.03 | 99.03 0.05 |
| 5 | 77.1 0.0 | 98.0 | 96.4 | 78.2 2.7 | 85.5 0.8 | 88.3 2.9 | 73.8 0.0 | 88.5 0.9 | 95.1 0.1 | 93.6 0.3 | 98.1 0.6 | 99.33 0.03 | 99.34 0.04 |
| Baselines | Ours | ||||||||
| Nominal | DAGMM | DSEBM | ADGAN | GANomaly | GeoTrans | ARNet | TOLL | AE-PP | AE-PoS |
| T-shirt/top | 42.1 | 91.6 | 89.9 | 80.3 | 99.4 | 92.7 | |||
| Trouser | 55.1 | 71.8 | 81.9 | 83.0 | 97.6 | 99.3 | |||
| Pullover | 50.4 | 88.3 | 87.6 | 75.9 | 91.1 | 89.1 | |||
| Dress | 57.0 | 87.3 | 91.2 | 87.2 | 89.9 | 93.6 | |||
| Coat | 26.9 | 85.2 | 86.5 | 71.4 | 92.1 | 90.8 | |||
| Baselines | Ours | ||||||||||||
| Nominal | OCGAN | VAE | DSVDD | DSEBM | DAGMM | IF | AnoGAN | ALAD | MEMAE | MEMGAN | TOLL | AE-PP | AE-PoS |
| Airplane | 75.7 | 70.0 | |||||||||||
| Automobile | 53.1 | 38.6 | |||||||||||
| Bird | 64.0 | 67.9 | |||||||||||
| Cat | 62.0 | 53.5 | |||||||||||
| Deer | 72.3 | 74.8 | |||||||||||
| Baselines | Ours | ||||||||
| Nominal | DAGMM | DSEBM | ADGAN | GANomaly | GeoTrans | ARNet | TOLL | AE-PP | AE-PoS |
| Aquatic mammals | 43.4 | 64.0 | 63.1 | 57.9 | 74.7 | 77.5 | |||
| Fish | 49.5 | 47.9 | 54.9 | 51.9 | 68.5 | 70.0 | |||
| Flowers | 66.1 | 53.7 | 41.3 | 36.0 | 74.0 | 62.4 | |||
| Food containers | 52.6 | 48.4 | 50.0 | 46.5 | 81.0 | 76.2 | |||
| Fruit and vegetables | 56.9 | 59.7 | 40.6 | 46.6 | 78.4 | 77.7 | |||
| Baseline | AE-PP ( ) | |||||||
| Dataset | AE ( ) | |||||||
| Arrhythmia (F1) | ||||||||
| MNIST | ||||||||
| Fashion-MNIST | ||||||||
| CIFAR-10 | ||||||||
| CIFAR-100 | ||||||||
| Dataset | Clean reference | # Images | AE | VAE | AE-PP | AE-PoS | ||||
| ROC | PR | ROC | PR | ROC | PR | ROC | PR | |||
| Additive noise | ||||||||||
| Kodak24 ( ) | Own GT | 24 | 1.0000 | 1.0000 | 0.9983 | 0.9983 | 1.0000 | 1.0000 | 1.0000 | 1.0000 |
| Blur | ||||||||||
| REDS blur 0.2 | Own GT | 200 | 0.7268 | 0.6589 | 0.3552 | 0.4024 | 0.6083 | 0.5725 | 0.6002 | 0.5766 |
| REDS blur 0.4 | Own GT | 200 | 0.6581 | 0.5683 | 0.2168 | 0.3484 | 0.7597 | 0.7239 | 0.7808 | 0.7574 |
| Dataset | Clean reference | # Images | AE | VAE | AE-PP | AE-PoS | ||||
| Clean | Degr. | Clean | Degr. | Clean | Degr. | Clean | Degr. | |||
| Additive noise | ||||||||||
| Kodak24 ( ) | Own GT | 24 | 57.15 | 26.49 | 26.49 | 18.86 | 44.58 | 23.64 | 43.65 | 23.55 |
| Synthetic blur | ||||||||||
| REDS blur 0.2 | Own GT | 200 | 63.04 | 62.06 | 27.59 | 29.11 | 43.42 | 42.55 | 43.07 | 42.38 |
| REDS blur 0.4 | Own GT | 200 | 63.04 | 62.41 | 27.59 | 30.84 | 43.42 | 41.00 | 43.07 | 40.88 |