Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/fzjcdt/co-weight-drift
Machine LearningPapers & ResearchAI SecurityAdversarial Attack
GitHubfzjcdt/co-weight-drift

co-weight-drift

결합된 목적 함수와 EMA 기반 가중치 드리프트 가드를 통해 치명적 과적합을 방지하는 빠른 적대적 학습 방법의 PyTorch 참조 구현으로, AutoAttack 평가를 포함합니다.

저장소 보기
232일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

치명적 과적합은 훈련 손실이 볼 수 없는 가중치 드리프트다

위 논문에서 설명한 방법의 참조 PyTorch 구현. 빠른 적대적 훈련(FAT)은 치명적 과적합(CO) 을 겪는다: FGSM 강건 정확도는 높게 유지되는 반면 PGD 강건 정확도는 몇 에포크 안에 붕괴한다. 이 코드베이스는 논문의 두 가지 기여를 구현한다:

  1. 메커니즘. CO는 훈련 손실이 볼 수 없는 방향을 따른 가중치 드리프트다: 단일 단계(FGSM 방식) 공격은 손실을 교란의 부분공간에 대해 눈멀게 만들고, 가중치는 그 부분공간을 통해 드리프트하며, BN 재보정이 그 드리프트를 그래디언트 마스킹으로 바꾼다. 가중치의 EMA는 훈련 내내 강건한 분지(basin)에 머문다 — 훈련 실행은 자체적인 붕괴 이전 앵커를 지니고 있다.
  2. 방법. 결합된 기본 목적함수(서로의 실패 모드를 보완하는 두 개의 결합 스케일)에 더해 가드를 둔다: 각 에포크 후, 검증 PGD-10 정확도가 실행 중 최고치에서 θ = 0.08(정확도 8 포인트)을 초과하여 하락하면, 원시 가중치를 자체 EMA로 재중심화하며, 3-에포크 쿨다운과 5회 발동 예산을 둔다. 가드는 추가 순전파나 역전파 비용이 전혀 들지 않으며 건강한 궤적에서는 결코 발동하지 않는다.

결과

완전한 표준 AutoAttack(AA) 및 제약 완화 공격(CR) 하의 강건 정확도(%), ε = 8/255, ResNet18(Tiny-ImageNet에서는 PreActResNet18), 평균 ± 표본 표준편차. 기준선 행은 동일한 프로토콜 하에서 공개된 FastAT_Benchmark의 결과다.

방법C10 AAC10 CRC100 AAC100 CRTiny AATiny CR
PGD-AT-WA (다단계 참조)50.49±0.1550.51±0.1626.90±0.1726.87±0.1719.77±0.1619.75±0.13
NuAT50.10±0.1850.11±0.1914.41±3.2917.66±0.4210.20±0.4410.19±0.44
LIET49.99±0.1549.93±0.1526.64±0.1326.63±0.1419.88±0.0919.86±0.07
FGSM-PGI49.89±0.0849.89±0.1226.29±0.1626.31±0.1219.55±0.1119.52±0.12
FGSM-FUAP49.73±0.1249.71±0.1225.95±0.0825.94±0.0519.10±0.1819.09±0.19
FGSM-CUAP49.55±0.2249.54±0.2225.85±0.5025.83±0.4919.19±0.0919.20±0.11
Base + guard (ours)50.45±0.2050.44±0.1627.15±0.0427.20±0.0720.47±0.1120.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입니다 (수정 없이 벤더링됨).
  • 기본 목적 함수는 NuAT (nuclear-norm logit coupling), FGSM-PGI (per-example MSE coupling) 및 DualC (MSE ramp)의 아이디어를 기반으로 하며, 초기화 방식은 NuAT를 따릅니다; 전체 인용은 논문을 참조하십시오.

인용

논문은 심사 중입니다. 이 코드를 사용하는 경우, BibTeX 항목이 제공될 때까지 제목으로 인용해 주십시오:

라이선스

MIT (LICENSE 참조). 벤더링된 타사 파일은 각자의 업스트림 라이선스와 저작권 헤더를 유지합니다.

도구 다운로드