Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
co-weight-drift — Implémentation de référence PyTorch d'une méthode d'entraînement adversarial rapide qui prévient le surapprentissage catastrophique via des objectifs couplés et une protection contre la dérive des poids basée sur l'EMA, avec évaluation AutoAttack. | Kitploit
Outils/GitHubGitHub/fzjcdt/co-weight-drift
Apprentissage AutomatiqueArticles et RechercheSécurité de l'IAAttaque Adversariale
GitHubfzjcdt/co-weight-drift

co-weight-drift

Implémentation de référence PyTorch d'une méthode d'entraînement adversarial rapide qui prévient le surapprentissage catastrophique via des objectifs couplés et une protection contre la dérive des poids basée sur l'EMA, avec évaluation AutoAttack.

Voir le dépôt
31il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Le surapprentissage catastrophique est une dérive des poids que la perte d'entraînement ne peut pas voir

Implémentation de référence en PyTorch de la méthode décrite dans l'article ci-dessus. L'entraînement adversarial rapide (FAT) souffre de surapprentissage catastrophique (CO) : la précision robuste FGSM reste élevée tandis que la précision robuste PGD s'effondre en quelques époques. Cette base de code implémente les deux contributions de l'article :

  1. Mécanisme. Le CO est une dérive des poids le long de directions que la perte d'entraînement ne peut pas voir : l'attaque à un pas (de type FGSM) rend la perte aveugle à un sous-espace de perturbations, les poids dérivent à travers celui-ci, et la recalibration BN transforme la dérive en masquage de gradient. L'EMA des poids reste dans le bassin robuste tout au long — le cycle d'entraînement porte son propre ancrage pré-effondrement.
  2. Méthode. Un objectif de base couplé (deux échelles de couplage qui couvrent mutuellement leurs modes de défaillance) plus un garde-fou : après chaque époque, si la précision PGD-10 de validation chute de plus de θ = 0,08 (8 points de précision) par rapport au meilleur courant, les poids bruts sont recentrés sur leur propre EMA, avec un temps de refroidissement de 3 époques et un budget de 5 déclenchements. Le garde-fou ne coûte aucune passe avant ou arrière supplémentaire et ne se déclenche jamais sur des trajectoires saines.

Résultats

Précision robuste (%) sous l'AutoAttack (AA) standard complet et l'attaque par relaxation de contrainte (CR), ε = 8/255, ResNet18 (PreActResNet18 sur Tiny-ImageNet), moyenne ± écart-type d'échantillon. Les lignes de référence sont les résultats publiés de FastAT_Benchmark sous un protocole identique.

MéthodeC10 AAC10 CRC100 AAC100 CRTiny AATiny CR
PGD-AT-WA (réf. multi-pas)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 + garde-fou (nôtre)50.45±0.2050.44±0.1627.15±0.0427.20±0.0720.47±0.1120.54±0.15

Meilleure précision AutoAttack et CR parmi les méthodes rapides sur les trois jeux de données, à un coût FAT (~0,7–1,1 h/exécution sur un A100, contre ~2 h pour la référence multi-pas). Sur CIFAR-10, la base sans garde-fou est un pile ou face : 2 des 4 graines s'effondrent en artefacts de CO (AutoAttack 7,5) tandis que les survivantes correspondent à la ligne avec garde-fou (50,67±0,08) — l'effet du garde-fou est exactement la suppression de ce mode de défaillance. Notably, les composantes FAB-T et square d'AutoAttack ne trouvent aucun point supplémentaire sur tous nos checkpoints publiés (aucune signature de masquage de gradient). Chiffres par graine et journaux bruts : logs/.

Installation

pip install -r requirements.txt

Testé avec Python 3.12, torch 2.5.1, torchvision 0.20.1, torchattacks 3.5.1, CUDA 12.4, sur A100-PCIE-40GB. Le répertoire autoattack/ de ce dépôt est la copie vendorisée avec laquelle les chiffres publiés ont été produits (l'AutoAttack de Francesco Croce) ; l'exécution depuis la racine du dépôt lui donne la priorité sur toute copie installée via pip.

Entraînement

train.py implémente la méthode de l'article ; les valeurs par défaut correspondent à la recette 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

Chaque exécution écrit train.log (PGD-10 de validation par époque pour les poids bruts et EMA, lignes de déclenchement du garde), probe.csv (dynamique CO optionnelle au niveau du lot), et best.pth / last.pth / ema_last.pth. best.pth correspond à l'époque ayant le PGD-10 de validation le plus élevé (poids bruts vs EMA, départagés par la précision propre).

Commutateurs de méthode

  • --guard none désactive le garde (la base non gardée ; attendez-vous au pile ou face CO sur CIFAR-10).
  • --init-style bu fait passer l'initialisation de la perturbation du demi-signe frais à 0,5ε de l'article à 70 % ±ε Rademacher / 30 % U[−ε, ε].
  • --probe-every 0 désactive les sondes de diagnostic. Notez que les sondes consomment le RNG et perturbent donc la trajectoire d'entraînement (la « loterie d'instrumentation » rapportée dans l'article) — faites correspondre ce drapeau à l'exécution publiée à laquelle vous vous comparez (voir logs/README.md).

Évaluation

# 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 exécute la suite standard complète (apgd-ce, apgd-t, FAB-T, square) — le protocole de chaque chiffre AA dans l'article. Sans --full, il exécute la variante de développement à 2 attaques du benchmark (apgd-ce + apgd-t), qui sur nos modèles diffère d'au plus 0,02.

Organisation du dépôt

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

Protocole

Identique à FastAT_Benchmark : ResNet18 (CIFAR-10/100) et PreActResNet18 (Tiny-ImageNet) ; ε = 8/255 ; 100 époques ; SGD (lr 0,1, momentum 0,9, weight decay 5e-4) avec OneCycleLR ; taille de lot 128 ; découpage 49 000 / 1 000 train / val ; label smoothing 0,4 ; sélection du modèle par PGD-10 sur validation ; évaluation sur l'ensemble de test complet avec PGD-{10,20,50}, AutoAttack et l'attaque CR. Toutes les exécutions utilisent set_seed avec le mode déterministe de cudnn.

Crédits

  • L'échafaudage du benchmark (models/, utils/, attaque CR de attacks/) et tous les résultats de référence proviennent de FastAT_Benchmark — veuillez le citer si vous utilisez les chiffres de comparaison.
  • autoattack/ est AutoAttack de Francesco Croce (intégré sans modification).
  • L'objectif de base s'appuie sur les idées de NuAT (couplage des logits par norme nucléaire), FGSM-PGI (couplage MSE par exemple) et DualC (rampe MSE), et le schéma d'initialisation suit NuAT ; voir l'article pour les citations complètes.

Citation

Télécharger l’outil