Состязательные атаки
Материал из MachineLearning.
(→Постановка задачи) |
|||
| (3 промежуточные версии не показаны) | |||
| Строка 19: | Строка 19: | ||
<tex>a(x) = \arg\max_k f_\theta^{(k)}(x)</tex> — предсказанная метка. Для объекта <tex>x</tex> | <tex>a(x) = \arg\max_k f_\theta^{(k)}(x)</tex> — предсказанная метка. Для объекта <tex>x</tex> | ||
с истинной меткой <tex>y</tex> ищется возмущение <tex>\delta</tex>, меняющее ответ модели при | с истинной меткой <tex>y</tex> ищется возмущение <tex>\delta</tex>, меняющее ответ модели при | ||
| - | ограничении на незаметность: | + | ограничении на незаметность — найти <tex>\delta</tex> такое, что: |
{{eqno|1}} | {{eqno|1}} | ||
| - | ::<tex> | + | ::<tex>a(x+\delta) \ne y, \qquad \|\delta\| \le \varepsilon,</tex> |
где норма <tex>\|\cdot\|</tex> формализует «незаметность» возмущения, а <tex>\varepsilon</tex> | где норма <tex>\|\cdot\|</tex> формализует «незаметность» возмущения, а <tex>\varepsilon</tex> | ||
| Строка 104: | Строка 104: | ||
(''gradient masking''), когда защита лишь затрудняет вычисление градиента, но не устраняет | (''gradient masking''), когда защита лишь затрудняет вычисление градиента, но не устраняет | ||
уязвимость. | уязвимость. | ||
| + | |||
| + | == Проверка устойчивости в конвейере разработки == | ||
| + | |||
| + | На практике устойчивость к состязательным атакам проверяют не однократно, а как | ||
| + | шаг непрерывной интеграции, по аналогии с автоматическим тестированием безопасности | ||
| + | приложений. Если статический (SAST) и динамический (DAST) анализ ищут уязвимости в | ||
| + | коде и работающем сервисе, то состязательное тестирование оценивает уязвимость самой | ||
| + | модели: в конвейер добавляют шаг, прогоняющий против обученной модели набор атак | ||
| + | (например, PGD) и измеряющий '''устойчивую точность''' (''robust accuracy'') — долю | ||
| + | верных ответов на возмущённых примерах. Порог по этой метрике становится условием | ||
| + | прохождения сборки: падение устойчивости ниже заданного уровня блокирует выкладку | ||
| + | новой версии модели так же, как проваленный тест блокирует деплой кода. | ||
| + | |||
| + | Принципиальное отличие от сканирования кода в том, что уязвимость состязательной атаки | ||
| + | не локализуется в строке исходника — статический анализ её не находит. Она заключена в | ||
| + | самих весах модели и геометрии выученного признакового пространства и требует отдельного | ||
| + | класса динамических проверок. | ||
== См. также == | == См. также == | ||
Текущая версия
| | Статья написана с использованием LLM Claude Opus 4.8 и проверена участником Zarina Sibgatullina 18:02, 18 июля 2026 (MSD) |
Состязательные атаки (adversarial attacks), или состязательные примеры (adversarial examples) — специально построенные входные объекты, которые почти не отличаются от обычных с точки зрения человека, но приводят модель машинного обучения к уверенно неверному ответу. Явление обнаружено для глубоких нейронных сетей в 2013–2014 годах и стало отправной точкой для целого направления — безопасности машинного обучения.
Каноничный пример: к изображению, которое классификатор верно относит к некоторому классу, добавляется незаметное человеку возмущение, после чего модель с высокой уверенностью выдаёт другой класс. Существование таких примеров показывает, что высокая точность на независимой тестовой выборке не гарантирует устойчивости к целенаправленному воздействию.
Содержание |
Постановка задачи
Пусть — классификатор с параметрами
, возвращающий вектор оценок принадлежности к
классам, и
— предсказанная метка. Для объекта
с истинной меткой
ищется возмущение
, меняющее ответ модели при
ограничении на незаметность — найти
такое, что:
где норма формализует «незаметность» возмущения, а
задаёт его допустимую величину. Различают ненаправленную атаку (добиться любого неверного
ответа) и направленную (targeted) — добиться заранее выбранной целевой метки
.
Обычно (1) переформулируют как задачу оптимизации: максимизировать потери модели по возмущению в пределах допустимого шара
Выбор нормы задаёт геометрию угрозы: ограничивает максимальное изменение
каждого признака,
— евклидову величину возмущения,
— число
изменённых признаков.
Основные методы построения
FGSM
Метод быстрого знака градиента (Fast Gradient Sign Method, Goodfellow и др., 2015) —
одношаговая атака в норме . Возмущение направлено вдоль знака градиента
потерь по входу:
FGSM дёшев (один проход обратного распространения) и потому широко используется как базовый приём и как компонент состязательного обучения.
PGD
Проецируемый градиентный подъём (Projected Gradient Descent, Madry и др., 2018) —
итеративное усиление FGSM. На каждом шаге делается небольшой шаг по знаку градиента, после чего
результат проецируется обратно в -шар:
где — оператор проекции,
— размер шага. PGD считается сильной
атакой «первого порядка» и служит стандартным инструментом для оценки устойчивости моделей.
C&W
Атака Карлини–Вагнера (Carlini & Wagner, 2017) формулирует поиск возмущения как задачу минимизации его нормы при условии смены класса, переводя ограничение в дифференцируемое слагаемое. Метод даёт возмущения меньшей величины, чем FGSM и PGD, и исторически взломал ряд защит, считавшихся надёжными.
Перенос атак
Важное свойство состязательных примеров — переносимость (transferability): возмущение, построенное против одной модели, часто обманывает и другую, обученную независимо на схожих данных. Это позволяет атаковать закрытую модель в режиме black-box, построив атаку против доступной суррогатной модели, и объясняет, почему секретность весов сама по себе не является защитой.
Гипотезы о причинах
Единого объяснения нет. Ранняя гипотеза связывала уязвимость с чрезмерной нелинейностью сетей, однако Goodfellow и др. предложили противоположное объяснение: в пространствах высокой размерности достаточно даже линейного поведения модели, чтобы малые покоординатные возмущения, суммируясь, сильно сдвинули выход. Позднее было выдвинуто предположение, что состязательные примеры эксплуатируют неробастные признаки — статистически полезные для классификации, но не воспринимаемые человеком закономерности в данных.
Защита
- состязательное обучение (adversarial training) — обучение на примерах, порождённых
PGD согласно (2); наиболее устойчивый на практике подход, повышающий стоимость обучения и обычно снижающий точность на чистых данных;
- сертифицированная устойчивость и рандомизированное сглаживание — методы с доказуемой
гарантией неизменности ответа в окрестности объекта;
- обнаружение состязательных примеров — детекторы аномальных входов; ненадёжны против
адаптивного противника, знающего о защите.
Ключевой методический принцип: защиту следует проверять против адаптивной атаки, построенной с учётом механизма обороны. Многие ранние защиты, эффективные против фиксированных атак, оказались несостоятельны при такой проверке — нередко из-за маскировки градиента (gradient masking), когда защита лишь затрудняет вычисление градиента, но не устраняет уязвимость.
Проверка устойчивости в конвейере разработки
На практике устойчивость к состязательным атакам проверяют не однократно, а как шаг непрерывной интеграции, по аналогии с автоматическим тестированием безопасности приложений. Если статический (SAST) и динамический (DAST) анализ ищут уязвимости в коде и работающем сервисе, то состязательное тестирование оценивает уязвимость самой модели: в конвейер добавляют шаг, прогоняющий против обученной модели набор атак (например, PGD) и измеряющий устойчивую точность (robust accuracy) — долю верных ответов на возмущённых примерах. Порог по этой метрике становится условием прохождения сборки: падение устойчивости ниже заданного уровня блокирует выкладку новой версии модели так же, как проваленный тест блокирует деплой кода.
Принципиальное отличие от сканирования кода в том, что уязвимость состязательной атаки не локализуется в строке исходника — статический анализ её не находит. Она заключена в самих весах модели и геометрии выученного признакового пространства и требует отдельного класса динамических проверок.
См. также
- Безопасность машинного обучения
- Отравление обучающих данных
- Состязательное обучение
- Джейлбрейк языковых моделей
Литература
- Szegedy C. et al. Intriguing Properties of Neural Networks // ICLR. — 2014. — arXiv:1312.6199.
- Goodfellow I., Shlens J., Szegedy C. Explaining and Harnessing Adversarial Examples // ICLR. — 2015. — arXiv:1412.6572.
- Madry A. et al. Towards Deep Learning Models Resistant to Adversarial Attacks // ICLR. — 2018. — arXiv:1706.06083.
- Carlini N., Wagner D. Towards Evaluating the Robustness of Neural Networks // IEEE S&P. — 2017. — arXiv:1608.04644.
- Athalye A., Carlini N., Wagner D. Obfuscated Gradients Give a False Sense of Security // ICML. — 2018. — arXiv:1802.00420.
- Ilyas A. et al. Adversarial Examples Are Not Bugs, They Are Features // NeurIPS. — 2019. — arXiv:1905.02175.

