Состязательные атаки используют уязвимости глубоких нейронных сетей (DNN), внося минимальные изменения во входные данные, чтобы заставить модель ошибаться. Они часто незаметны для человека, но могут полностью изменить результат работы модели. В этой статье рассмотрим три популярных метода состязательных атак.
Атака одним пикселем
Цель атаки — найти пиксель на изображении, изменение цвета или яркости которого приведет к ошибочной классификации изображения моделью. Например, изображение, которое нейросеть правильно классифицировала как «кошка», после изменения одного пикселя может быть ошибочно распознано как «собака».
Атака работает в условиях «чёрного ящика», то есть атакующему не нужно знать внутреннюю структуру модели. Достаточно иметь доступ к выходным данным (вероятностям классов).
Для поиска оптимального пикселя используется алгоритм дифференциальной эволюции (DE) — метод оптимизации, имитирующий процесс естественной эволюции.
Основные шаги алгоритма
1. Инициализация популяции
Создается начальная популяция кандидатов. Каждый кандидат представляет собой возможное изменение одного пикселя на изображении. Кандидат состоит из:
координат пикселя — позиция
на изображении, где
— номер столбца, а
— номер строки;
новый цвет пикселя, который может быть представлен в формате RGB (три числа: красный, зеленый, синий) или в градациях серого (одно число).
Пример кандидата:
Координаты: (10, 20) — пиксель в 10-м столбце и 20-й строке.
Новый цвет: (255, 0, 0) — красный цвет в формате RGB.
2. Мутация
Для каждого кандидата в популяции (назовем его целевым кандидатом) выбираются три других случайных кандидата из популяции: ,
и
. Эти кандидаты должны быть различными и не совпадать с целевым кандидатом.
Мутировавший вектор v вычисляется по формуле:
где:
,
,
— выбранные случайные кандидаты.
— параметр мутации (коэффициент масштабирования), обычно выбирается в диапазоне [0, 1].
— разность векторов, которая задает направление и величину изменения.
Пусть и
. Тогда
.
Различие между двумя случайными кандидатами ( и
) используется для создания нового кандидата.
Параметр мутации контролирует, насколько сильно будет изменен кандидат a. Умножение разности
на
позволяет регулировать величину изменения:
Если
близко к 0, изменения будут небольшими.
Если
близко к 1, изменения будут значительными.
Например:
, тогда
.
3. Добавление к кандидату
Кандидат используется как база для создания нового мутировавшего вектора
. К
добавляется масштабированная разность
.
Если , то:
Рассмотрим пример на упрощенных данных. Предположим, что каждый кандидат состоит только из координат и одного значения цвета (градация серого).
Исходные данные:
— кандидат с координатами (10, 20) и цветом 100.
— случайный кандидат.
— случайный кандидат.
— параметр мутации.
Вычисление разности :
Умножение на :
Добавление к :
Результат: мутировавший вектор .
Если пробный вектор успешен (заставляет модель ошибиться), он заменяет исходного кандидата в популяции. Если пробный вектор не улучшает результат, он отбрасывается, и исходный кандидат остается в популяции.
Процесс повторяется много раз. На каждом шаге популяция кандидатов становится лучше, то есть пробные векторы все сильнее «обманывают» ИИ.
В результате получается изображение, которое выглядит почти так же, как исходное, но модель классифицирует его неправильно (например, вместо «кошки» говорит, что это «собака»).

Наборы данных для атаки одним пикселем
CIFAR-10 — набор данных для задач классификации изображений. Он состоит из: 60 000 изображений, каждое размером 32x32 пикселя. Эти изображения распределены по 10 категориям: самолеты, автомобили, птицы, кошки, олени, собаки, лягушки, лошади, корабли и грузовики. Каждый класс содержит 6 000 изображений.
Набор данных разделён на:
50 000 изображений для обучения;
10 000 изображений для тестирования.
CIFAR-10 используется для:
тестирования алгоритмов классификации моделей машинного обучения;
исследования состязательных атак;
обучения и сравнения различных архитектур нейронных сетей.
Результаты атаки одним пикселем на CIFAR-10: 67,97 % изображений можно обмануть, изменив всего один пиксель. Это означает, что модель классификации ошибается в 67,97 % случаев, когда на изображении изменен один пиксель.

ImageNet — это база данных изображений, организованная в соответствии с иерархией WordNet — проекта, создающего машиночитаемую структуру английского языка, где слова связаны по смыслу (например, «собака» → «псовые» → «млекопитающие»).
ImageNet состоит из более 14 миллионов изображений, разделенных на 1 000 классов. Изображения имеют высокое разрешение (224x224 пикселей и больше). Классы охватывают множество объектов, таких как: животные, транспортные средства, предметы быта, природа.
ImageNet используется для:
обучения глубоких нейронных сетей;
сравнения моделей: ImageNet Large Scale Visual Recognition Challenge (ILSVRC) — это ежегодное соревнование, где модели соревнуются в точности классификации.

Метод быстрого градиентного знака (FGSM)
Метод быстрого градиентного знака (Fast Gradient Sign Method, FGSM) — это один из самых известных и простых методов генерации состязательных примеров.
FGSM использует градиенты функции потерь, чтобы определить минимальные изменения входного изображения, которые максимизируют ошибку. Атака создает «оптические иллюзии» для нейронной сети, добавляя едва заметные человеческому глазу шумы, которые заставляют модель выдавать неверный прогноз с высокой уверенностью.
Шаги атаки FGSM
1. Исходные данные
Изображение (
) — входное изображение, которое модель классифицирует правильно.
Правильный класс (
) — метка класса, соответствующая изображению x.
Модель (
) — нейронная сеть, которую нужно обмануть.
Функция потерь (
) — функция, которая измеряет, насколько предсказание нейросети отличается от правильного ответа.
2. Вычисление градиента
Градиент функции потерь по входным данным показывает, как нужно изменить каждый пиксель изображения, чтобы увеличить ошибку модели. Формально градиент вычисляется как:
где:
— функция потерь, например, кросс-энтропия.
— оператор градиента по входным данным
.
Градиент — это вектор, где каждый элемент соответствует влиянию изменения конкретного пикселя на функцию потерь.
3. Вычисление знака градиента
FGSM использует знак градиента (), чтобы определить направление изменения каждого пикселя. Знак градиента указывает, в какую сторону нужно изменить пиксель, чтобы увеличить ошибку:
Функция возвращает:
+1, если градиент положительный;
−1, если градиент отрицательный;
0, если градиент равен нулю.
4. Добавление шума
К изображению добавляется шум, который вычисляется как знак градиента, умноженный на небольшой параметр .
Формула для создания состязательного примера выглядит так:
где:
— исходное изображение;
— параметр, контролирующий величину возмущения (обычно небольшое число, например, 0,01);
— знак градиента.
Полученное изображение xadv является состязательным примером. Оно выглядит почти так же, как исходное изображение, но модель классифицирует его неправильно.
Почему FGSM работает
В основе FGSM лежат градиенты, которые, как правило, используются для обучения ИИ. Они помогают обновлять веса модели, чтобы минимизировать ошибку. FGSM, наоборот, использует градиенты для максимизации ошибки, изменяя входные данные, а не веса.
FGSM работает только в условиях «белого ящика», то есть когда атакующий знает внутреннюю структуру модели и может вычислить градиенты.

Атака карты значимости на основе Якобиана (JSMA)
Это метод состязательной атаки, который нацелен на изменение небольшого числа пикселей, наиболее важных для классификации. Для определения значимости каждого пикселя используется матрица Якобиана.
Метод может быть как целевым (направленным на конкретный класс), так и нецелевым (просто заставляющим модель ошибиться).
Шаги атаки JSMA
1. Вычисление матрицы Якобиана
Матрица Якобиана — это матрица частных производных. Она показывает, как изменение каждого пикселя влияет на выход модели для каждого класса.
Для изображения и модели
, матрица Якобиана
имеет размерность
, где:
— количество классов;
— количество пикселей в изображении.
Каждый элемент матрицы вычисляется как:
где:
— выход модели для класса
.
— значение i-го пикселя.
2. Построение карты значимости
На основе матрицы Якобиана строится карта значимости, которая показывает, какие пиксели наиболее важны для классификации.
Для целевой атаки, когда нужно, чтобы модель классифицировала изображение как определённый класс , значимость пикселя
вычисляется по формуле:
где:
— влияние изменения
-го пикселя на вероятность целевого класса
;
— сумма влияний изменения
-го пикселя на вероятности всех остальных классов.
Эта формула показывает, насколько изменение -го пикселя увеличивает вероятность целевого класса
и снижает вероятность других классов.
3. Выбор пикселей для изменения
Выбираются пиксели с наибольшей значимостью , которые сильнее всего влияют на классификацию.
Для каждого отобранного пикселя определяется направление изменения его значения (увеличение или уменьшение), которое позволяет максимально повысить вероятность принадлежности к целевому классу — например, класс «собака»
Изменения вносятся итеративно, пока модель не начнёт классифицировать изображение как «собака» (в случае целевой атаки) или просто не ошибётся (в случае нецелевой атаки).

Заключение
Состязательные атаки одним пикселем, FGSM и JSMA показывают уязвимости глубоких нейронных сетей к минимальным изменениям входных данных. Эти методы позволяют обмануть модель, изменяя лишь небольшое количество пикселей или добавляя незаметные шумы.