Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
co-weight-drift — Референсная реализация на PyTorch быстрого метода состязательного обучения, предотвращающего катастрофическое переобучение за счёт связанных целевых функций и защиты от дрейфа весов на основе EMA, с оценкой AutoAttack. | Kitploit
Инструменты/GitHubGitHub/fzjcdt/co-weight-drift
Машинное ОбучениеСтатьи и ИсследованияБезопасность ИИСостязательная Атака
GitHubfzjcdt/co-weight-drift

co-weight-drift

Референсная реализация на PyTorch быстрого метода состязательного обучения, предотвращающего катастрофическое переобучение за счёт связанных целевых функций и защиты от дрейфа весов на основе EMA, с оценкой AutoAttack.

Репозиторий
312 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Катастрофический переобучение — это дрейф весов, которого не видит функция потерь обучения

Эталонная реализация на PyTorch метода, описанного в вышеуказанной статье. Быстрое состязательное обучение (FAT) страдает от катастрофического переобучения (CO): робастная точность FGSM остаётся высокой, тогда как робастная точность PGD обрушивается в течение пары эпох. Данная кодовая база реализует два вклада статьи:

  1. Механизм. CO — это дрейф весов вдоль направлений, которых не видит функция потерь обучения: одношаговая (в стиле FGSM) атака делает функцию потерь слепой к подпространству возмущений, веса дрейфуют сквозь него, а перекалибровка BN превращает дрейф в маскирование градиента. EMA весов на протяжении всего времени остаётся в робастном бассейне — процесс обучения несёт собственный якорь до коллапса.
  2. Метод. Связанная базовая целевая функция (два масштаба связи, которые покрывают режимы отказа друг друга) плюс защита: после каждой эпохи, если точность валидации PGD-10 падает более чем на θ = 0.08 (8 процентных пунктов точности) от текущего лучшего значения, сырые веса перецентрируются на их собственное EMA, с 3-эпохным периодом ожидания и бюджетом в 5 срабатываний. Защита не требует дополнительных прямых или обратных проходов и никогда не срабатывает на здоровых траекториях.

Результаты

Робастная точность (%) при полном стандартном AutoAttack (AA) и атаке с ослаблением ограничений (CR), ε = 8/255, ResNet18 (PreActResNet18 на Tiny-ImageNet), среднее ± выборочное стандартное отклонение. Строки базовых методов — это опубликованные результаты 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

Наивысшая точность AutoAttack и CR среди быстрых методов на всех трёх наборах данных при стоимости FAT (~0.7–1.1 ч на запуск на одном A100 против ~2 ч для многошагового эталона). На CIFAR-10 база без защиты — это подбрасывание монеты: 2 из 4 сидов коллапсируют в артефакты CO (AutoAttack 7.5), тогда как выжившие совпадают со строкой с защитой (50.67±0.08) — эффект защиты состоит ровно в устранении этого режима отказа. Примечательно, что компоненты FAB-T и square из AutoAttack находят ноль дополнительных точек на всех наших опубликованных контрольных точках (отсутствие признаков маскирования градиента). Значения по каждому сиду и сырые логи: 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's 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 (значение val PGD-10 на каждой эпохе для исходных и EMA-весов, строки срабатывания guard), probe.csv (опциональная динамика CO на уровне батча) и best.pth / last.pth / ema_last.pth. best.pth — это эпоха с наибольшим значением валидационного PGD-10 (исходные веса против EMA-весов, при равенстве решает чистая точность).

Переключатели метода

  • --guard none отключает guard (незащищённая база; ожидайте подбрасывание монеты CO на CIFAR-10).
  • --init-style bu переключает инициализацию возмущения с используемого в статье свежего half-sign при 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-атаковая dev-версия бенчмарка (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-атакой. Все запуски используют set_seed с детерминированным режимом cudnn.

Благодарности

  • Каркас бенчмарка (models/, utils/, CR-атака в attacks/) и все результаты базовых методов взяты из FastAT_Benchmark — пожалуйста, цитируйте его, если вы используете сравнительные числа.
  • autoattack/ — это AutoAttack от Francesco Croce (включён без изменений).
  • Базовая целевая функция опирается на идеи из NuAT (связывание логитов через ядерную норму), FGSM-PGI (связывание через MSE для каждого примера) и DualC (MSE-разгон), а схема инициализации следует NuAT; полные ссылки см. в статье.

Цитирование

Статья находится на рецензировании. Если вы используете этот код, пожалуйста, цитируйте её по названию, пока не станет доступна запись BibTeX:

Лицензия

Скачать инструмент