Состязательное машинное обучение: как атаковать и защищать модели машинного обучения
Опубликовано: 2022-03-11В настоящее время модели машинного обучения в компьютерном зрении используются во многих реальных приложениях, таких как беспилотные автомобили, распознавание лиц, диагностика рака или даже в магазинах нового поколения, чтобы отслеживать, какие продукты покупатели берут с полки, чтобы их кредит карту можно списать при выезде.
Повышение точности этих систем машинного обучения впечатляет, поэтому это, естественно, привело к настоящему потоку приложений, использующих их. Хотя математические основы, лежащие в их основе, уже были изучены несколько десятилетий назад, относительно недавнее появление мощных графических процессоров дало исследователям вычислительную мощность, необходимую для экспериментов и создания сложных систем машинного обучения. Сегодня самые современные модели компьютерного зрения основаны на глубоких нейронных сетях с несколькими миллионами параметров и опираются на аппаратное обеспечение, которое было недоступно всего десять лет назад.
В 2012 году Алекс Крижевский и др. первыми продемонстрировали, как реализовать глубокую сверточную сеть, которая в то время стала передовой моделью в классификации объектов. С тех пор было опубликовано множество улучшений их исходной модели, каждое из которых повышало точность (VGG, ResNet, Inception и т. д.). В последнее время моделям машинного обучения удалось достичь человеческой и даже сверхчеловеческой точности во многих задачах компьютерного зрения.
Несколько лет назад получение неверных прогнозов от модели машинного обучения было нормой. В настоящее время это стало исключением, и мы привыкли ожидать от них безупречной работы, особенно когда они развернуты в реальных приложениях.
До недавнего времени модели машинного обучения обычно обучались и тестировались в лабораторных условиях, таких как соревнования по машинному обучению и научные статьи. В настоящее время, когда они развернуты в реальных сценариях, уязвимости безопасности, возникающие из-за ошибок модели, стали серьезной проблемой.
Идея этой статьи состоит в том, чтобы объяснить и продемонстрировать, как современные глубокие нейронные сети, используемые для распознавания изображений, могут быть легко обмануты злоумышленником и, таким образом, выданы неверные прогнозы. Как только мы познакомимся с обычными стратегиями атак, мы обсудим, как защитить от них наши модели.
Примеры состязательного машинного обучения
Давайте начнем с основного вопроса: каковы примеры состязательного машинного обучения?
Враждебные примеры — это вредоносные входные данные, специально предназначенные для обмана модели машинного обучения.
В этой статье мы собираемся ограничить наше внимание моделями машинного обучения, которые выполняют классификацию изображений. Следовательно, враждебными примерами будут входные изображения, созданные злоумышленником, которые модель не может правильно классифицировать.
В качестве примера возьмем GoogLeNet, обученный на ImageNet для выполнения классификации изображений в качестве нашей модели машинного обучения. Ниже у вас есть два изображения панды, которые неразличимы для человеческого глаза. Изображение слева — одно из чистых изображений в наборе данных ImageNet, используемом для обучения модели GoogLeNet. Тот, что справа, представляет собой небольшую модификацию первого, созданную путем добавления вектора шума к центральному изображению. Модель предсказывает, что первое изображение будет пандой, как и ожидалось. Вместо этого предсказывается (с очень высокой степенью достоверности), что вторым будет гиббон.
Шум, добавленный к первому изображению, не случайный, а результат тщательной оптимизации злоумышленником.
В качестве второго примера мы можем посмотреть, как синтезировать 3D-состязательные примеры с помощью 3D-принтера. На изображении ниже показаны различные виды 3D-черепахи, напечатанные авторами, и неправильная классификация модели Google Inception v3.
Как могут современные модели, точность классификации которых превышает человеческую, совершать такие, казалось бы, глупые ошибки?
Прежде чем мы углубимся в слабые стороны моделей нейронных сетей, давайте вспомним, что у нас, людей, есть собственный набор враждебных примеров. Взгляните на изображение ниже. Что ты видишь? Спираль или ряд концентрических окружностей?
Эти разные примеры также показывают, что модели машинного обучения и человеческое зрение должны использовать совершенно разные внутренние представления при понимании того, что находится на изображении.
В следующем разделе мы собираемся изучить стратегии создания состязательных примеров.
Как генерировать состязательные примеры
Начнем с простого вопроса: что такое состязательный пример?
Состязательные примеры генерируются путем получения чистого изображения, которое модель правильно классифицирует, и обнаружения небольшого возмущения, которое приводит к неправильной классификации нового изображения моделью ML.
Предположим, что у злоумышленника есть полная информация о модели, которую он хочет атаковать. По сути, это означает, что злоумышленник может вычислить функцию потерь модели $J(\theta, X, y)$, где $X$ — входное изображение, $y$ — выходной класс, а $\theta$ — внутренний. параметры модели. Эта функция потерь обычно является отрицательной вероятностью потерь для методов классификации.
В этом сценарии «белого ящика» существует несколько стратегий атаки, каждая из которых представляет различные компромиссы между вычислительными затратами на их создание и вероятностью их успеха. Все эти методы по существу пытаются максимизировать изменение функции потерь модели, сохраняя при этом небольшое возмущение входного изображения. Чем выше размерность пространства входных изображений, тем проще генерировать состязательные примеры, неотличимые человеческим глазом от чистых изображений.
Метод L-BFGS
Мы нашли ${x}'$ состязательного примера, решив следующую задачу оптимизации с ограничениями на блоки:
где $c > 0$ — параметр, который также необходимо решить. Интуитивно мы ищем состязательные образы ${x}'$ такие, что взвешенная сумма искажения по отношению к чистому изображению ( $\left | x - {x}' \right |$ ) и потерь по отношению к неправильный класс является минимально возможным.
Для сложных моделей, таких как глубокие нейронные сети, задача оптимизации не имеет решения в закрытой форме, поэтому приходится использовать итерационные численные методы. Из-за этого этот метод L-BFGS работает медленно. Тем не менее, его успех высок.
Знак быстрого градиента (FGS)
С помощью метода быстрого знака градиента (FGS) мы делаем линейную аппроксимацию функции потерь вокруг начальной точки, заданной вектором чистого изображения $X$ и истинным классом $y$ .
При этом предположении градиент функции потерь указывает направление, в котором нам нужно изменить входной вектор, чтобы получить максимальное изменение потерь. Чтобы размер возмущения оставался небольшим, мы извлекаем только знак градиента, а не его фактическую норму, и масштабируем его с помощью небольшого коэффициента эпсилон.
Таким образом мы гарантируем, что разница в пикселях между исходным изображением и измененным изображением всегда будет меньше эпсилон (эта разница является нормой L_infinity).
Градиент можно эффективно вычислить, используя обратное распространение. Этот метод является одним из самых быстрых и дешевых в вычислительном отношении для реализации. Однако его эффективность ниже, чем у более дорогих методов, таких как L-BFGS.
Авторы Adversarial Machine Learning at Scale заявили, что он имеет от 63% до 69% успешных прогнозов для первого прогноза для набора данных ImageNet с эпсилон от 2 до 32. Для линейных моделей, таких как логистическая регрессия, метод быстрого знака градиента точно. В этом случае авторы другой исследовательской работы о состязательных примерах сообщают об успехе в 99%.

Итеративный знак быстрого градиента
Очевидным расширением предыдущего метода является применение его несколько раз с меньшим размером шага альфа и обрезка общей длины шага, чтобы убедиться, что искажение между чистым и враждебным изображениями меньше эпсилон.
Другие методы, подобные предложенным в статье Николаса Карлини, являются улучшениями по сравнению с L-BFGS. Они также дороги для вычислений, но имеют высокий уровень успеха.
Однако в большинстве реальных ситуаций злоумышленник не знает функцию потерь целевой модели. В этом случае злоумышленнику приходится использовать стратегию черного ящика.
Атака черного ящика
Исследователи неоднократно отмечали, что состязательные примеры довольно хорошо переносятся между моделями, а это означает, что они могут быть разработаны для целевой модели А, но в конечном итоге эффективны против любой другой модели, обученной на аналогичном наборе данных.
Это так называемое свойство переносимости состязательных примеров, которое злоумышленники могут использовать в своих интересах, когда у них нет доступа к полной информации о модели. Злоумышленник может генерировать враждебные примеры, выполнив следующие действия:
- Запросите целевую модель с входными данными $X_i$ для $i=1…n$ и сохраните выходные данные $y_i$ .
- С обучающими данными $(X_i, y_i)$ постройте другую модель, называемую замещающей моделью.
- Используйте любой из алгоритмов белого ящика, показанных выше, для создания состязательных примеров для замещающей модели. Многие из них будут успешно переноситься и также станут состязательными примерами для целевой модели.
Успешное применение этой стратегии против коммерческой модели машинного обучения представлено в этой статье Computer Vision Foundation.
Защита от враждебных примеров
Злоумышленник разрабатывает атаку, используя всю имеющуюся у него информацию о модели. Очевидно, что чем меньше информации выдает модель во время прогнозирования, тем сложнее злоумышленнику провести успешную атаку.
Первая простая мера для защиты вашей модели классификации в производственной среде — избегать отображения оценок достоверности для каждого прогнозируемого класса. Вместо этого модель должна предоставлять только верхние $N$ (например, 5) наиболее вероятных классов. Когда оценки достоверности предоставляются конечному пользователю, злоумышленник может использовать их для численной оценки градиента функции потерь. Таким образом, злоумышленники могут создавать атаки белого ящика, используя, например, метод быстрого знака градиента. В статье Computer Vision Foundation, которую мы цитировали ранее, авторы показывают, как это сделать на основе коммерческой модели машинного обучения.
Давайте посмотрим на две защиты, которые были предложены в литературе.
Оборонительная дистилляция
Этот метод пытается создать новую модель, градиенты которой намного меньше, чем исходная незащищенная модель. Если градиенты очень малы, такие методы, как FGS или итеративная FGS, больше бесполезны, поскольку злоумышленнику потребуются большие искажения входного изображения, чтобы добиться достаточного изменения функции потерь.
Защитная дистилляция вводит новый параметр $T$ , называемый температурой, в последний слой softmax сети:
Обратите внимание, что для T = 1 у нас есть обычная функция softmax. Чем выше значение $T$ , тем меньше градиент потерь по отношению к входным изображениям.
Защитная перегонка протекает следующим образом:
- Обучите сеть, называемую сетью учителей, с температурой $T » 1$ .
- Используйте обученную сеть учителей для создания программных меток для каждого изображения в обучающем наборе. Мягкая метка для изображения — это набор вероятностей, которые модель присваивает каждому классу. Например, если выходным изображением является попугай, модель учителя может выводить программные метки, такие как (90% попугай, 10% папагайо).
- Обучите вторую сеть, дистиллированную сеть , на программных метках, снова используя температуру $T$ . Обучение с программными метками — это метод, который уменьшает переоснащение и повышает точность дистиллированной сети вне выборки.
- Наконец, во время прогнозирования запустите дистиллированную сеть с температурой $T=1$ .
Защитная дистилляция успешно защищает сеть от набора атак, предпринятых в Дистилляции как защита от враждебных возмущений против глубоких нейронных сетей .
К сожалению, в более поздней статье исследователей Калифорнийского университета в Беркли был представлен новый набор методов атаки, которые побеждают защитную дистилляцию. Эти атаки являются улучшениями по сравнению с методом L-BFGS, которые доказывают, что защитная дистилляция не является общим решением против враждебных примеров.
Состязательная тренировка
В настоящее время противоборствующая подготовка является наиболее эффективной стратегией защиты. Состязательные примеры генерируются и используются при обучении модели. Интуитивно понятно, что если модель видит состязательные примеры во время обучения, ее производительность во время прогнозирования будет лучше для состязательных примеров, сгенерированных таким же образом.
В идеале мы хотели бы использовать любой известный метод атаки для создания состязательных примеров во время обучения. Однако для больших наборов данных с высокой размерностью (например, ImageNet) надежные методы атаки, такие как L-BFGS, и улучшения, описанные в статье Беркли, слишком затратны в вычислительном отношении. На практике мы можем позволить себе использовать только быстрый метод, такой как FGS или итеративный FGS.
Состязательное обучение использует модифицированную функцию потерь, которая представляет собой взвешенную сумму обычной функции потерь на чистых примерах и функции потерь на состязательных примерах.
Во время обучения для каждой партии из $m$ чистых изображений мы генерируем $k$ состязательных изображений, используя текущее состояние сети. Мы распространяем сеть вперед как для чистых, так и для состязательных примеров и вычисляем потери по приведенной выше формуле.
Усовершенствование этого алгоритма, представленное в этом документе конференции, называется ансамблевым состязательным обучением. Вместо того, чтобы использовать текущую сеть для создания состязательных примеров, для создания состязательных примеров используются несколько предварительно обученных моделей. В ImageNet этот метод повышает устойчивость сети к атакам черного ящика. Эта защита стала победителем 1-го тура конкурса NIPS 2017 по защите от состязательных атак .
Выводы и дальнейшие шаги
На сегодняшний день атаковать модель машинного обучения проще, чем защищать ее. Современные модели, развернутые в реальных приложениях, легко обмануть враждебными примерами, если не используется стратегия защиты, что открывает дверь для потенциально критических проблем безопасности. Наиболее надежной стратегией защиты является состязательное обучение, при котором состязательные примеры генерируются и добавляются к чистым примерам во время обучения.
Если вы хотите оценить устойчивость ваших моделей классификации изображений к различным атакам, я рекомендую вам использовать библиотеку Python с открытым исходным кодом. На вашей модели можно протестировать многие методы атак, в том числе упомянутые в этой статье. Вы также можете использовать эту библиотеку для проведения состязательного обучения вашей модели и повышения ее устойчивости к состязательным примерам.
Поиск новых атак и лучших стратегий защиты является активной областью исследований. Требуется больше теоретической и эмпирической работы, чтобы сделать модели машинного обучения более надежными и безопасными в реальных приложениях.
Я призываю читателя поэкспериментировать с этими методами и опубликовать новые интересные результаты. Кроме того, автор очень приветствует любые отзывы о настоящей статье.
- Звуковая логика и монотонные модели ИИ
- Множество приложений градиентного спуска в TensorFlow