Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
co-weight-drift — 高速な敵対的学習手法のPyTorchリファレンス実装。結合目的関数とEMAベースの重みドリフトガードにより破滅的過学習を防ぎ、AutoAttackによる評価を備える。 | Kitploit
ツール/GitHubGitHub/fzjcdt/co-weight-drift
機械学習論文と研究AIセキュリティ敵対的攻撃
GitHubfzjcdt/co-weight-drift

co-weight-drift

高速な敵対的学習手法のPyTorchリファレンス実装。結合目的関数とEMAベースの重みドリフトガードにより破滅的過学習を防ぎ、AutoAttackによる評価を備える。

リポジトリを見る
363日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

壊滅的過学習は訓練損失が見ることのできない重みのドリフトである

上記論文で述べられている手法のPyTorchリファレンス実装。 高速敵対的訓練(FAT)は**壊滅的過学習(CO)**に悩まされる。FGSMロバスト精度は高いままである一方で、PGDロバスト精度は数エポックのうちに崩壊する。本コードベースは論文の2つの貢献を実装している:

  1. メカニズム。 COとは、訓練損失が見ることのできない方向に沿った重みのドリフトである。一ステップ(FGSM形式)攻撃は、損失を摂動のある部分空間に対して盲目にし、重みはその部分空間を通ってドリフトし、BNの再キャリブレーションがそのドリフトを勾配マスキングへと変える。重みのEMAはその間ずっとロバストな盆地にとどまる。つまり、訓練の実行はそれ自身の崩壊前のアンカーを携えている。
  2. 手法。 結合されたベース目的関数(互いの失敗モードを補い合う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
ベース + ガード(提案手法)50.45±0.2050.44±0.1627.15±0.0427.20±0.0720.47±0.1120.54±0.15

3つのデータセットすべてにおいて、高速手法の中で最も強いAutoAttackおよびCR精度を、FATのコスト(1台のA100で1回の実行あたり約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(生の重みと EMA 重みのエポックごとの val PGD-10、ガード発火行)、probe.csv(オプションのバッチレベル CO ダイナミクス)、および best.pth / last.pth / ema_last.pth が書き出されます。best.pth は検証 PGD-10 が最も高いエポックです(生の重みと EMA 重みを比較し、同値の場合はクリーン精度でタイブレーク)。

メソッドスイッチ

  • --guard none はガードを無効化します(ガードなしのベース。CIFAR-10 では CO のコインフリップが発生すると想定されます)。
  • --init-style bu は摂動の初期化を、論文の 0.5ε におけるフレッシュなハーフサインから、70% ±ε Rademacher / 30% U[−ε, ε] に切り替えます。
  • --probe-every 0 は診断プローブを無効化します。プローブは RNG を消費するため、トレーニングの軌跡を摂動させる点に注意してください(論文で報告されている「計測器くじ引き」)。比較対象のリリース済み実行に合わせてこのフラグを設定してください(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エポック、SGD (lr 0.1、momentum 0.9、weight decay 5e-4) と OneCycleLR、バッチサイズ128、49 000 / 1 000 のtrain / val分割、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 (核ノルムによるロジット結合)、FGSM-PGI (サンプルごとのMSE結合)、DualC (MSEランプ) のアイデアに基づいており、初期化スキームはNuATに従っています。完全な引用については論文を参照してください。

引用

本論文は査読中です。本コードを利用する場合は、BibTeXエントリが利用可能になるまでタイトルで引用してください:

ライセンス

MIT(LICENSE を参照)。ベンダー化されたサードパーティファイルは、上流のライセンスと著作権ヘッダーを保持します。

ツールをダウンロード