
결합된 목적 함수와 EMA 기반 가중치 드리프트 가드를 통해 치명적 과적합을 방지하는 빠른 적대적 학습 방법의 PyTorch 참조 구현으로, AutoAttack 평가를 포함합니다.
위 논문에서 설명한 방법의 참조 PyTorch 구현. 빠른 적대적 훈련(FAT)은 치명적 과적합(CO) 을 겪는다: FGSM 강건 정확도는 높게 유지되는 반면 PGD 강건 정확도는 몇 에포크 안에 붕괴한다. 이 코드베이스는 논문의 두 가지 기여를 구현한다:
완전한 표준 AutoAttack(AA) 및 제약 완화 공격(CR) 하의 강건 정확도(%), ε = 8/255, ResNet18(Tiny-ImageNet에서는 PreActResNet18), 평균 ± 표본 표준편차. 기준선 행은 동일한 프로토콜 하에서 공개된 FastAT_Benchmark의 결과다.
| 방법 | C10 AA | C10 CR | C100 AA | C100 CR | Tiny AA | Tiny CR |
|---|---|---|---|---|---|---|
| PGD-AT-WA (다단계 참조) | 50.49±0.15 | 50.51±0.16 | 26.90±0.17 | 26.87±0.17 | 19.77±0.16 | 19.75±0.13 |
| NuAT | 50.10±0.18 | 50.11±0.19 | 14.41±3.29 | 17.66±0.42 | 10.20±0.44 | 10.19±0.44 |
| LIET | 49.99±0.15 | 49.93±0.15 | 26.64±0.13 | 26.63±0.14 | 19.88±0.09 | 19.86±0.07 |
| FGSM-PGI | 49.89±0.08 | 49.89±0.12 | 26.29±0.16 | 26.31±0.12 | 19.55±0.11 | 19.52±0.12 |
| FGSM-FUAP | 49.73±0.12 | 49.71±0.12 | 25.95±0.08 | 25.94±0.05 | 19.10±0.18 | 19.09±0.19 |
| FGSM-CUAP | 49.55±0.22 | 49.54±0.22 | 25.85±0.50 | 25.83±0.49 | 19.19±0.09 | 19.20±0.11 |
| Base + guard (ours) | 50.45±0.20 | 50.44±0.16 | 27.15±0.04 | 27.20±0.07 | 20.47±0.11 | 20.54±0.15 |
세 데이터셋 모두에서 빠른 방법 중 가장 강력한 AutoAttack 및 CR 정확도를 FAT 비용(단일 A100에서 실행당 약 0.7–1.1시간, 다단계 참조의 약 2시간 대비)으로 달성한다. CIFAR-10에서 가드 없는 기본 모델은 동전 던지기다: 4개 시드 중 2개가 CO 아티팩트(AutoAttack 7.5)로 붕괴하는 반면, 살아남은 시드는 가드 적용 행과 일치한다(50.67±0.08) — 가드의 효과는 정확히 이 실패 모드의 제거다. 특히 AutoAttack의 FAB-T 및 square 구성 요소는 우리가 공개한 모든 체크포인트에서 추가 점수를 전혀 찾지 못한다(그래디언트 마스킹 흔적 없음). 시드별 수치와 원시 로그: logs/.
pip install -r requirements.txt
Python 3.12, torch 2.5.1, torchvision 0.20.1, torchattacks 3.5.1, CUDA 12.4, A100-PCIE-40GB 환경에서 테스트되었습니다. 이 저장소의 autoattack/ 디렉터리는 공개된 수치를 산출할 때 사용된 벤더링된 복사본(Francesco Croce의 AutoAttack)이며, 저장소 루트에서 실행하면 pip로 설치된 복사본보다 우선 적용됩니다.
train.py는 논문의 방법을 구현하며, 기본값은 CIFAR-10 레시피입니다.
# CIFAR-10 (γ_max=4.0, m_max=2.5, λ_d=0.3, guard θ=0.08) — 4 seeds
bash scripts/train_cifar10.sh 0 # GPU 0, seeds 0 1 2 3
# CIFAR-100 (γ_max=1.25, m_max=4.5, λ_d=0)
bash scripts/train_cifar100.sh 0
# Tiny-ImageNet (PreActResNet18, γ_max=1.0, m_max=2.5, λ_d=0)
bash scripts/train_tiny.sh 0
# or a single run directly (equivalent to the CIFAR-10 script)
python train.py --dataset cifar10 --seed 0 --gpu 0 \
--nuc-max 4.0 --mse-extra 2.5 --lam-d 0.3 --guard val --guard-thr 0.08 \
--out-dir results/cifar10/guard_s0
각 실행은 train.log(에포크별 raw 및 EMA 가중치의 val PGD-10, guard-fire 라인), probe.csv(선택적 배치 수준 CO 동역학), 그리고 best.pth / last.pth / ema_last.pth를 기록합니다. best.pth는 검증 PGD-10이 가장 높은 에포크입니다(raw vs EMA 가중치, 동률 시 clean 정확도로 결정).
--guard none은 가드를 비활성화합니다(가드 없는 베이스라인, CIFAR-10에서 CO 코인 플립이 발생할 것으로 예상).--init-style bu는 섭동 초기화를 논문의 0.5ε에서의 fresh half-sign 방식에서 70% ±ε Rademacher / 30% U[−ε, ε]로 전환합니다.--probe-every 0은 진단 프로브를 비활성화합니다. 프로브는 RNG를 소비하므로 학습 궤적을 교란한다는 점에 유의하십시오(논문에서 보고된 "instrumentation lottery") — 비교 대상인 릴리스된 실행에 맞춰 이 플래그를 설정하십시오(logs/README.md 참조).# complete standard AutoAttack + CR attack, full test set, bs=200
bash scripts/eval.sh results/cifar10/guard_s0 0 # GPU 0, ResNet18
bash scripts/eval.sh results/tiny-imagenet/guard_s0 0 preact18
# or individually
python aa_eval.py --run-dir results/cifar10/guard_s0 --gpu 0 --full # autoattack_full.log
python cr_eval.py --run-dir results/cifar10/guard_s0 --gpu 0 # cr_attack.log
aa_eval.py --full은 전체 표준 스위트(apgd-ce, apgd-t, FAB-T, square)를 실행합니다 — 논문에 있는 모든 AA 수치의 프로토콜입니다. --full 없이 실행하면 벤치마크의 2-공격 개발 변형(apgd-ce + apgd-t)을 실행하며, 저희 모델에서는 최대 0.02만큼 차이가 납니다.
train.py # coupled FAT + EMA self-anchor guard (the method)
aa_eval.py # AutoAttack evaluation (full suite / 2-attack variant)
cr_eval.py # CR attack evaluation
models/ # ResNet18 / PreActResNet18 (from FastAT_Benchmark)
utils/ # datasets, seeding, logger (from FastAT_Benchmark)
attacks/ # CR attack (from FastAT_Benchmark)
autoattack/ # vendored AutoAttack (Francesco Croce, fra31)
scripts/ # per-dataset training launchers + eval
logs/ # raw logs of every run behind the paper's tables
FastAT_Benchmark와 동일: ResNet18 (CIFAR-10/100) 및 PreActResNet18 (Tiny-ImageNet); ε = 8/255; 100 에포크; OneCycleLR을 사용한 SGD (lr 0.1, momentum 0.9, weight decay 5e-4); 배치 크기 128; 49 000 / 1 000 학습 / 검증 분할; label smoothing 0.4; 검증 PGD-10에 의한 모델 선택; PGD-{10,20,50}, AutoAttack 및 CR 공격을 사용한 전체 테스트 세트 평가. 모든 실행은 cudnn deterministic 모드와 함께 set_seed를 사용합니다.
models/, utils/, attacks/ CR 공격)과 모든 베이스라인 결과는 FastAT_Benchmark에서 가져왔습니다 — 비교 수치를 사용하는 경우 이를 인용해 주십시오.autoattack/은 Francesco Croce의 AutoAttack입니다 (수정 없이 벤더링됨).논문은 심사 중입니다. 이 코드를 사용하는 경우, BibTeX 항목이 제공될 때까지 제목으로 인용해 주십시오:
MIT (LICENSE 참조). 벤더링된 타사 파일은 각자의 업스트림 라이선스와 저작권 헤더를 유지합니다.