Adversarial Attacks
При состязательных атаках создаются небольшие, часто незаметные изменения входных данных, из-за которых модели ИИ уверенно ошибаются. Принцип работы FGSM, типы атак и методы защиты.
Атаки с использованием состязательных примеров — это преднамеренные манипуляции входными данными модели машинного обучения (ML), из-за которых модель выдаёт неверный результат, обычно с высокой уверенностью. В компьютерном зрении изменённые входные данные, называемые состязательными примерами, могут отличаться от исходных настолько незначительно, что человек этого не заметит, однако классификатор, распознавший панду, теперь определяет гиббона. Исследователи описали это явление в глубоких нейронных сетях в статье 2013 года «Интригующие свойства нейронных сетей». Такая же уязвимость встречается в распознавании речи, обнаружении вредоносных программ и больших языковых моделях (LLMs). Атаки с использованием состязательных примеров особенно важны там, где решение модели запускает действие, например торможение автомобиля, открытие двери или одобрение транзакции.
Как работают состязательные примеры#
Функция потерь обученной модели измеряет, насколько неверен её ответ на входные данные. Обычно обратное распространение ошибки вычисляет градиенты этой функции потерь по отношению к весам; атакующий же вычисляет их по отношению к пикселям входного изображения и изменяет пиксели в направлении увеличения потерь. В статье «Объяснение и использование состязательных примеров» (2014) Ян Гудфеллоу и его коллеги предположили, что причина кроется в преимущественно линейном поведении нейронных сетей в пространствах высокой размерности: изменение яркости каждого пикселя лишь на долю уровня серого, суммируясь по сотням тысяч пикселей, приводит к значительному изменению результата. Их метод Fast Gradient Sign Method (FGSM) выполняет один шаг фиксированного размера по знаку градиента входных данных; шаг 0.007 превратил предсказание «панда» с вероятностью 57.7% в предсказание «гиббон» с вероятностью 99.3%. Проектируемый градиентный спуск (PGD) многократно выполняет более мелкие шаги, удерживая общее изменение в заданных пределах, что делает атаку сильнее.
Для атаки FGSM на классификатор ResNet-18 из TorchVision достаточно одного прохода обратного распространения ошибки:
import torch
import torch.nn.functional as F
from torchvision.io import decode_image
from torchvision.models import ResNet18_Weights, resnet18
from torchvision.transforms import v2
weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights).eval()
torch.hub.download_url_to_file("https://ultralytics.com/images/bus.jpg", "bus.jpg")
# Keep pixels in [0, 1] and normalize inside each forward pass, so the attack edits real pixel values
image = v2.Compose([v2.Resize(256), v2.CenterCrop(224), v2.ToDtype(torch.float32, scale=True)])(decode_image("bus.jpg"))
normalize = v2.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
x = image.unsqueeze(0).requires_grad_(True)
logits = model(normalize(x))
# FGSM: move every pixel by one intensity level (1/255) in the direction that increases the loss
F.cross_entropy(logits, logits.argmax(1)).backward()
x_adv = (x + x.grad.sign() / 255).clamp(0, 1)
for name, batch in [("clean", x), ("adversarial", x_adv)]:
probs = model(normalize(batch)).softmax(1)
print(f"{name}: {weights.meta['categories'][probs.argmax()]} ({probs.max():.2f})")Чистое изображение классифицируется как minibus (0.83), а атакованное — как police van (0.94): изменение каждого пикселя не более чем на один из 255 уровней интенсивности заставляет модель увереннее выбрать новую неверную метку, чем исходную.
Типы атак#
Атаки классифицируют по моменту их проведения, знаниям атакующего о модели и его целям. Нетаргетированная атака добивается любого неверного результата, а таргетированная заставляет модель выдать конкретный результат, например принять знак «Стоп» за знак ограничения скорости. Цифровые атаки напрямую изменяют входные данные, а физические изменяют реальные объекты с помощью наклеек, патчей или напечатанных узоров, сохраняющих эффект при изменении угла обзора, расстояния и освещения. Таксономия NIST для состязательного машинного обучения группирует атаки по этапам жизненного цикла ML, на которые они направлены:
Атаки переноса работают, потому что состязательные примеры, созданные для одной модели, часто обманывают и другие модели, обученные для той же задачи. Поэтому злоумышленник может обучить подменную модель, атаковать её в режиме белого ящика и применить результат против системы, которую не может исследовать.
Риски в реальном мире#
- Автономные транспортные средства: В работе «Надёжные атаки на модели глубокого обучения в физическом мире» чёрные и белые наклейки на настоящем знаке «Стоп» вызвали целевую ошибочную классификацию в 100% лабораторных изображений и в 84,8% видеокадров, снятых из движущегося автомобиля.
- Обнаружение людей: Распечатанная накладка размером примерно 40 × 40 см, которую держали перед телом, значительно снизила точность детектора людей YOLOv2, для которого её оптимизировали. Такие накладки угрожают системам сигнализации, срабатывающим при обнаружении людей, например системе охранной сигнализации Ultralytics, которая отправляет оповещение по электронной почте, когда YOLO26 обнаруживает в кадре заданное количество объектов. Накладка, подавляющая обнаружение человека, также подавляет оповещение.
- Распознавание лиц: Исследователи напечатали оправы очков с состязательными узорами, которые позволяли владельцам обходить систему распознавания лиц или выдаваться за конкретного другого человека.
- Языковые модели: Автоматически оптимизированные состязательные суффиксы — строки токенов, добавляемые к запросу, — заставляли чат-ботов с настройкой на полезное поведение выполнять вредоносные запросы; суффиксы, оптимизированные на открытых моделях, переносились и на коммерческие. Атаки на большие языковые модели, написанные вручную, чаще называют джейлбрейком и инъекцией промпта.
Состязательные атаки и смежные понятия#
- Отравление данных: Искажает обучающие данные, из-за чего обученная модель работает некорректно, часто только на входных данных со скрытым триггером. Состязательные примеры в узком смысле не изменяют модель, а манипулируют входными данными на этапе инференса.
- Атаки вывода о принадлежности: Нацелены на извлечение информации — например, выяснение, входила ли запись в обучающую выборку, — а не на получение неправильного результата.
- Генеративно-состязательные сети (GANs): Термин «состязательные» здесь означает, что две сети обучаются друг против друга; это метод обучения, в котором нет злоумышленника.
- Проверка безопасности ИИ методом red teaming: Практика атак на собственную систему до её выпуска; среди прочих методов она использует состязательные атаки.
Методы защиты#
Состязательное обучение, формализованное с помощью PGD в работе «На пути к моделям глубокого обучения, устойчивым к состязательным атакам», генерирует атаки во время обучения и подгоняет модель так, чтобы она правильно их классифицировала. Это по-прежнему самая надёжная эмпирическая защита, но она требует в несколько раз больше вычислений, чем обычное обучение, и снижает точность на чистых входных данных. Сертифицированные методы защиты, например сглаживание рандомизацией, доказывают, что возмущение в пределах заданного радиуса не может изменить предсказание, хотя это работает только для малых радиусов. Защита с предварительной обработкой входных данных или сокрытием градиентов показывает плохие результаты: в работе «Обфусцированные градиенты создают ложное чувство безопасности» рассмотрели девять методов защиты, опубликованных на ICLR 2018, обнаружили, что семь из них полагались на обфусцированные градиенты, и полностью обошли шесть из этих методов, а седьмой — частично.










