Устойчивость к атакам не переносится между типами шума
Модель, обученную держать удар против L-бесконечности, легко ломает L2 или пятно-патч. Разбираем, почему робастность не переносится между типами возмущений и что с этим делать инженеру.

Проблема в одной фразе
Вы потратили несколько суток GPU на adversarial training, прогнали модель через PGD, получили на CIFAR-10 честные 50 с лишним процентов точности под атакой — и радуетесь. А потом кто-то меняет тип возмущения с L-бесконечности на L2 или подставляет наклейку-патч в углу кадра, и точность падает почти до нуля. Это не баг вашего кода. Это фундаментальное свойство состязательной устойчивости: она обучается под конкретную угрозовую модель1 и почти не переносится на другие.
Для инженера вывод неприятный: «робастная модель» без указания, к чему именно она робастна, — это маркетинг, а не характеристика. Ниже — что известно о переносе устойчивости между типами атак, почему перенос слабый и какие подходы реально расширяют покрытие, а не создают его иллюзию.
Что такое тип возмущения
Состязательная атака ищет минимальное изменение входа, которое ломает предсказание. Но «минимальное» измеряется в какой-то метрике, и метрик несколько. Самые распространённые семейства:
- L∞ — ограничивается максимальное изменение каждого пикселя (например, не более 8/255). Классика, под неё заточен PGD и большинство бенчмарков.
- L2 — ограничивается евклидова норма всего вектора изменений. Возмущение может быть заметным в одной области и нулевым в другой.
- L1 — поощряет разреженные изменения: сильно меняется мало пикселей.
- Патчи и наклейки — локальное, но ничем не ограниченное по амплитуде изменение в небольшой зоне кадра.
- Пространственные и физические — сдвиги, повороты, изменение яркости, распечатанные объекты в реальном мире.
Ключевое: L∞ и L2 задают геометрически разные «шары» вокруг исходного примера. Модель, у которой выровнена граница решения под кубический шар L∞, ничего не гарантирует про сферу L2, и наоборот.
Почему перенос слабый
Adversarial training по сути минимизирует худший случай внутри выбранного шара. Оптимизация честно делает то, о чём её просили: сглаживает поверхность потерь ровно в тех направлениях, которые допускает угрозовая модель. Направления, лежащие вне этого шара, никто не штрафовал — там граница решения остаётся такой же хрупкой, как у обычной модели.
Модель не учится «быть устойчивой». Она учится быть устойчивой к тому конкретному множеству возмущений, которое вы ей показали во время обучения. Всё остальное — вне её опыта.
Есть и второй эффект, который делает ситуацию хуже наивных ожиданий: обучение под одну норму может снижать устойчивость к другой по сравнению даже с необученной моделью. Специализация под L∞ иногда делает модель более уязвимой к разреженным L1-атакам, потому что защита «размазывает» чувствительность равномерно, а L1 бьёт точечно.
Наблюдаемая картина
Обобщая опубликованные эксперименты по multi-norm robustness, качественная картина такая:
| Обучали под | Держит L∞ | Держит L2 | Держит L1 / патч |
|---|---|---|---|
| L∞ (PGD) | хорошо | частично | слабо |
| L2 | частично | хорошо | слабо |
| L1 / разреженные | слабо | частично | хорошо |
| Патч | почти нет | почти нет | хорошо (для патча) |
Конкретные проценты сильно зависят от датасета, архитектуры и бюджета атаки, поэтому здесь намеренно даны качественные градации, а не выдуманные числа. Если вам нужны цифры для отчёта — снимайте их на своей связке модель-данные-атака, чужие бенчмарки не переносятся так же плохо, как сама робастность.
Что делать инженеру
1. Определите угрозовую модель до обучения
Прежде чем считать метрики, ответьте: от чего защищаемся? Физические патчи в камере распознавания и цифровые L∞-возмущения в API — это разные враги. Если вы не можете назвать норму, эпсилон и способ доставки атаки, вы не можете и обещать устойчивость.
2. Тестируйте несколькими независимыми атаками
Одна атака одного типа — это не оценка робастности, а её имитация. Минимальный честный набор:
- Сильная итеративная атака под ту норму, под которую обучали (проверка, что обучение вообще сработало).
- Хотя бы одна атака под другую норму — чтобы увидеть провал переноса своими глазами.
- Ансамблевая или адаптивная атака (например, семейство AutoAttack), которая не даёт модели «обмануть» одну конкретную процедуру.
3. Обучайте под несколько угроз сразу, если нужно широкое покрытие
Если реально требуется держать и L∞, и L2, и разреженные атаки, есть несколько стратегий, и у каждой своя цена:
- Worst-case по нескольким нормам — на каждом шаге берётся самая сильная из нескольких атак. Дороже обычного adversarial training кратно числу норм и просаживает чистую точность сильнее.
- Average-case — усреднение по типам атак. Дешевле, но защита от каждого отдельного типа получается слабее пиковой.
- Расширение угрозового множества — обучение на объединении шаров (например, аппроксимация union нескольких Lp). Технически сложнее, но ближе к тому, что реально хочется.
4. Не путайте робастность и общую устойчивость к шуму
Устойчивость к случайному гауссову шуму, размытию, JPEG-компрессии (это уже corruption robustness) — отдельная задача. Модель, натренированная против состязательных возмущений, не обязана хорошо держать обычные искажения, и наоборот. Смешивать эти метрики в одном отчёте — способ ввести в заблуждение и себя, и заказчика.
Итог
Adversarial robustness — не глобальное свойство модели, а локальный контракт: «в пределах вот этого множества возмущений предсказание не сломается». За границами контракта гарантий нет, и часто их нет драматически. Поэтому первый артефакт любого проекта по устойчивости — не обученная модель, а точно сформулированная угрозовая модель. Без неё цифры робастности говорят ровно столько же, сколько «наш сервис быстрый» без указания нагрузки и перцентиля.
1 Угрозовая модель (threat model) — формальное описание того, что именно может делать атакующий: какие возмущения допустимы, в какой метрике и с каким ограничением, есть ли у него доступ к весам модели и градиентам. Без неё утверждение «модель устойчива» не имеет проверяемого смысла.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: Madry et al., Towards Deep Learning Models Resistant to Adversarial Attacks, Croce & Hein, Reliable Evaluation of Adversarial Robustness (AutoAttack)
Частые вопросы
Если модель держит L∞-атаку, она хоть немного защищена от L2?
Может ли защита от одной атаки сделать модель хуже против другой?
Достаточно ли обучаться под усреднение всех норм, чтобы закрыть всё?
Чем adversarial robustness отличается от устойчивости к обычному шуму?
Какой минимальный честный набор атак для оценки робастности?
Стоит ли доверять чужим бенчмаркам робастности для своей задачи?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.