How petrsokerin/hidden_adversarial_attacks works
Purpose and execution entry points
This repository benchmarks concealed adversarial attacks against time-series classifiers. Attacks are optimized both to cause misclassification and to evade a trained perturbation discriminator. The three experiment entry points are train_classifier.py, train_discriminator.py, and attack_run.py; batch orchestration is available in run_full_experiments.sh.
Configuration-driven experiment assembly
Hydra-style configuration selects dataset, classifier/attack target, discriminator, and attack procedure. Example composition roots are config_examples/train_classifier_config.yaml, config_examples/train_disc_config.yaml, and config_examples/attack_run_config.yaml; reusable selections live under config_examples/model/ and config_examples/attack/. Runtime config interpretation is centralized in src/config/config.py.
Data ingestion boundary
The data layer loads time-series classification datasets, principally externally downloaded UCR data expected outside the tracked source tree. It converts dataset records into the tensors and splits consumed by training and attack stages. The architectural boundary is src/data/data.py, isolating dataset-format handling from models and experiment scripts.
Classifier and discriminator model layer
The same model family layer supplies both target classifiers and discriminators: the discriminator learns to distinguish clean from adversarial series, while the classifier supplies attack gradients and success labels. Shared model contracts are in src/models/base_model.py and src/models/utils.py; implementations span recurrent, convolutional, transformer, state-space, and representation models, including src/models/LSTM.py, src/models/ResidualCNN.py, and src/models/S4.py. TS2Vec includes a vendored internal implementation at src/models/TS2Vec_src/ts2vec.py.
Training pipelines and model artifacts
Training scripts construct configured models and datasets, then delegate fitting/evaluation logic to src/training/train.py. train_classifier.py produces target-classifier checkpoints; train_discriminator.py trains detection models against adversarial perturbations. Checkpoints are a material filesystem contract: later attack and discriminator-check runs depend on the corresponding saved model weights.
Attack generation and concealment optimization
attack_run.py drives adversarial sample generation against a trained classifier, optionally using one or more discriminator models for concealment scoring. Attack abstractions and common scheduling are in src/attacks/base_attacks.py and src/attacks/attack_scheduler.py; concrete gradient attacks include src/attacks/fgsm.py, src/attacks/pgd.py, and src/attacks/kll2.py. The central distinction from vanilla attacks is regularization in src/attacks/regularizers.py, which incorporates discriminator-oriented penalties into perturbation optimization.
Evaluation and result reporting
Generated attacks are evaluated for classifier effectiveness and detectability/concealability, then persisted as experiment results for comparison. Metric/estimation logic is separated into src/estimation/estimators.py and src/estimation/utils.py, while attack procedure coordination resides in src/attacks/procedures.py. The repository expects writable checkpoints and results directories.
Runtime and infrastructure
The project is Python-based with dependencies declared in requirements.txt and pyproject.toml. Docker is optional and defined by docker_scripts/Dockerfile, docker_scripts/build, and docker_scripts/launch_container. External dependencies include the UCR time-series archive and, potentially, experiment-tracking/metric workflows represented by notebooks/clearml_metrics.ipynb.
Main entry points: procedures.py Attack procedures · train.py Training pipeline · data.py Dataset loader & splits · ResidualCNN.py Classifier & discriminator models
Components 19
Experiment Configuration
- Hydra config roots · Selects dataset, models, and attack procedure.
config_examples/attack_run_config.yaml - Config interpreter
src/config/config.py
Data Boundary
- UCR archive · Downloaded time-series datasets outside the repository.
- Dataset loader & splits
src/data/data.py
Model Layer
- Model contracts
src/models/base_model.py - Classifier & discriminator models · Shared recurrent, convolutional, transformer, state-space, and representation model family.
src/models/ResidualCNN.py - Vendored TS2Vec
src/models/TS2Vec_src/ts2vec.py
Attack & Evaluation
- Attack run
attack_run.py - Attack scheduler
src/attacks/attack_scheduler.py - Gradient attacks · FGSM, PGD, and KLL2 perturbation generators.
src/attacks/pgd.py - Concealment regularizers · Adds discriminator-oriented penalties to perturbation optimization.
src/attacks/regularizers.py - Attack procedures
src/attacks/procedures.py - Effectiveness & detectability metrics
src/estimation/estimators.py - Experiment results · Persisted metrics and attack comparisons.
Experiment Runtimes
- Training pipeline · Fits and evaluates configured classifier or discriminator models.
src/training/train.py - Classifier training
train_classifier.py - Discriminator training · Trains detectors on adversarial perturbations.
train_discriminator.py - Model checkpoints · Saved weights consumed by later attack and detection runs.
- Full experiment runner
run_full_experiments.sh
Connections 22
- Hydra config roots → Config interpreter: composes
- Config interpreter → Dataset loader & splits: selects dataset
- Config interpreter → Classifier & discriminator models: selects models
- UCR archive → Dataset loader & splits: loads
- Model contracts → Classifier & discriminator models: defines interface
- Vendored TS2Vec → Classifier & discriminator models: included in
- Classifier training → Training pipeline: delegates fitting
- Discriminator training → Training pipeline: delegates fitting
- Dataset loader & splits → Training pipeline: provides tensors and splits
- Classifier & discriminator models → Training pipeline: provides configured model
- Training pipeline → Model checkpoints: saves weights
- Attack run → Attack procedures: runs
- Dataset loader & splits → Attack procedures: provides evaluation data
- Model checkpoints → Attack procedures: loads classifier and detectors
- Attack procedures → Attack scheduler: coordinates
- Attack scheduler → Gradient attacks: schedules
- Concealment regularizers → Gradient attacks: regularizes optimization
- Attack procedures → Effectiveness & detectability metrics: evaluates generated attacks
- Effectiveness & detectability metrics → Experiment results: persists metrics
- Full experiment runner → Classifier training: orchestrates
- Full experiment runner → Discriminator training: orchestrates
- Full experiment runner → Attack run: orchestrates