Как вы можете создавать и защищаться от враждебных атак

В настоящее время движущей силой машинного обучения является создание все более точных моделей, при этом меньше внимания уделяется безопасности и надежности этих моделей. Как я уже говорил в своем предыдущем посте, модели машинного обучения, такие как классификаторы изображений, уязвимы для крошечных возмущений их входных данных, которые заставляют их принимать неправильные решения. Цель этого поста - рассказать вам, как создать и защитить от мощной состязательной атаки белого ящика на примере классификатора цифр MNIST. Содержание:

  1. Прогнозируемая атака градиентного спуска (PGD)
  2. Состязательное обучение для создания надежных моделей
  3. Неожиданные преимущества надежных моделей (например, ниже)

Ознакомьтесь с записной книжкой Jupyter, в которой содержится код для создания всех цифр в этом посте и обучения вашей собственной надежной модели.

Прогнозируемый градиентный спуск (PGD)

Атака PGD - это атака белого ящика, которая означает, что злоумышленник имеет доступ к градиентам модели, то есть у злоумышленника есть копия весов вашей модели. Эта модель угрозы дает злоумышленнику гораздо больше возможностей, чем атаки черного ящика, поскольку они могут специально разработать свою атаку, чтобы обмануть вашу модель, не полагаясь на атаки передачи, которые часто приводят к видимым для человека возмущениям. PGD ​​можно считать наиболее «законченным» противником «белого ящика», поскольку он снимает любые ограничения на количество времени и усилий, которые злоумышленник может приложить для поиска наилучшей атаки.

Ключ к пониманию PGD-атаки - это фрейм отыскания состязательного примера как ограниченной задачи оптимизации. PGD пытается найти возмущение, которое максимизирует потери модели на конкретном входе, сохраняя при этом размер возмущения меньше заданной величины, называемой эпсилон. Это ограничение обычно выражается как L² или L∞ норма возмущения, и оно добавляется так, чтобы содержание состязательного примера было таким же, как и невозмущенного образца - или даже таким, что состязательный пример незаметно отличался от человека.

В реальном мире с помощью PGD возможны следующие атаки:

Алгоритм PGD можно резюмировать с помощью 5 шагов ниже, хотя злоумышленник может применить любые улучшения оптимизации, такие как импульс, Адам, многократные перезапуски и т. Д.

  1. Начнем со случайного возмущения в шаре L ^ p вокруг образца
  2. Сделайте градиентный шаг в сторону наибольших потерь.
  3. При необходимости спроецируйте возмущение обратно в шар L ^ p.
  4. Повторяйте 2–3 до схождения

«Проекция в шар L ^ P» может быть незнакомым термином, но просто означает перемещение точки за пределы некоторого объема к ближайшей точке внутри этого объема. В случае нормы L² в 2D это перемещение точки в соответствующую ближайшую точку на окружности определенного радиуса с центром в начале координат.

Для тех из вас, у кого есть практический склад ума, следующая функция PyTorch представляет собой реализацию PGD для создания целевых или нецелевых противоборствующих примеров для пакета изображений.

Запуск этого фрагмента кода на образцах из MNIST дает следующее. Имейте в виду, что состязательные примеры для MNIST гораздо более заметны, чем для наборов данных, таких как ImageNet, из-за его более низкого размера / разрешения - однако эти изображения полностью обманывают ненадежный классификатор.

Однако мы специалисты по данным и умеем не только интересные картинки. Приведенные ниже диаграммы количественно определяют точность ненадежного классификатора против враждебных возмущений разного размера, эпсилон. Вы можете видеть, что производительность низкая, поскольку ограниченные атаки L² и L∞ указанного выше размера снижают точность нашей модели примерно до уровня случайного угадывания. Посмотрим, что мы можем с этим поделать!

Состязательная тренировка

Современная защита от этой атаки - это состязательное обучение, это не та же схема обучения, что и генеративные состязательные сети (GAN), хотя состязательные подготовленные классификаторы демонстрируют свойства, подобные GAN, как я продемонстрирую позже.

Состязательная тренировка просто помещает атаку PGD в ваш тренировочный цикл. Это можно рассматривать как «максимальное увеличение данных», поскольку вместо выполнения случайных преобразований (масштабирование, обрезка, зеркальное отображение и т. Д.) В качестве этапа предварительной обработки мы создаем определенные возмущения, которые лучше всего обмануть нашу модель, и действительно, модели, обученные противоборством, действительно демонстрируют меньше переобучения при обучении на небольших наборах данных.

Это кажется очевидным подходом, но не очевидно, что такой метод обучения действительно сойдется. Вот почему: при регулярном обучении мы минимизируем ожидаемую естественную убыль по нашему набору данных {x, y} по параметрам нашей модели, theta.

Однако в состязательном обучении мы минимизируем следующую функцию потерь, где Δ - это набор возмущений, которые мы хотим, чтобы наша модель была инвариантной к таким, как возмущения L² и L∞, обсуждаемые ранее.

Следовательно, теперь мы решаем минимаксную задачу перевала AKA, которая гарантированно будет невыпуклой. Можно провести сходство между этой функцией и функцией потерь GAN ниже, которая также является минимаксной игрой для двух игроков, в которой игроки являются дискриминатором и генератором, а не противником и сетью.

Однако на практике этот вид обучения сходится (и более последовательно, чем обучение GAN) за счет увеличения времени обучения, поскольку мы решаем задачу многоступенчатой ​​оптимизации (то есть PGD) для каждого шага обучения нашей сети. Следующий фрагмент кода тренирует модель MNIST против злоумышленника L∞.

На следующих графиках количественно оценивается состязательная точность моделей, обученных против злоумышленников L² и L∞ - определенно наблюдается улучшение устойчивости.

Здесь следует отметить несколько интересных моментов:

  • Обученная модель L∞ (фиолетовый) более устойчива к ограниченным атакам как L² (слева), так и L∞ (справа).
  • Обе устойчивые модели демонстрируют более низкую точность на естественных выборках (epsilon = 0), чем ненадежные модели: ~ 0,5% для модели L∞, ~ 3% для модели L²
  • Атака L², похоже, стала более эффективной (слева). Это иллюзия, потому что я зафиксировал количество шагов PGD, чтобы сэкономить время вычислений. Атака PGD, разрешенная до схождения, вероятно, все еще повысит эффективность с помощью epsilon.

Моя гипотеза, объясняющая низкую надежность и ненадежность обученной модели L², состоит в том, что ограниченные возмущения L² семантически релевантны для MNIST. Если вы посмотрите на потерю состязательности, определенную ранее, мы обучаем нашу модель инвариантной к возмущениям в множестве Δ, то есть возмущениям L². Если это семантически релевантные нарушения в MNIST, то состязательное обучение L² активно препятствует обучению наших моделей! (Альтернативная гипотеза состоит в том, что мне нужно искать больше гиперпараметров для обучения L²…)

Неожиданные преимущества надежной модели

Состязательное обучение классификатора MNIST имеет некоторые неожиданные преимущества, помимо устойчивости к атакам. Наиболее интересным из них является возможность плавной интерполяции между классами с использованием состязательных примеров большого эпсилона. Они производятся с использованием метода PGD, описанного ранее, за исключением того, что мы допускаем, чтобы размер состязательного возмущения был намного больше, чем тот, который используется при обучении.

Ниже показаны целевые примеры состязательных изображений большого эпсилона, созданные с помощью PGD-атаки на обученную модель L². Есть некоторые артефакты, но конечный результат - довольно четкие изображения желаемого класса. Это возможно, потому что градиенты устойчивой модели во входном пространстве хорошо согласуются с человеческим восприятием, поэтому следование этому градиенту с помощью PGD дает правдоподобные изображения.

Попытка сделать то же самое с ненадежной моделью приводит к появлению изображений мусора, которые лишь немного напоминают желаемые классы.

Интересно, что нецелевые состязательные атаки на робастную модель L² производят траекторию от наиболее к наименее похожему классу. Ниже показаны состязательные примеры и вероятности прогнозов, когда мы увеличиваем норму L² для состязательного возмущения с 0 до 10.

Это явление характерно не только для MNIST, поскольку Madry et al смогли произвести такие же интерполяции на обученной модели ImageNet.

L∞ не дает таких интересных интерполяций, как модель L² (посмотрите мой Блокнот Juypter, если вы хотите их сгенерировать), но у него есть свои неожиданные преимущества, а именно очень малый вес.

Редкие веса считаются полезными сами по себе, поскольку они более интерпретируемы и более поддаются сокращению и, следовательно, уменьшению размера модели. Ручная проверка 32 сверточных фильтров в первом слое модели L∞ показывает некоторые интересные особенности.

  • Большинство фильтров нулевые (т. Е. Разреженные веса)
  • Ненулевые фильтры содержат только 1 ненулевой вес.

Поскольку ненулевые фильтры имеют только один вес, они становятся просто изменением масштаба исходного изображения. Комбинация изменения масштаба с активацией ReLu означает, что это фильтры пороговой обработки, то есть ReLu (ax-b), активация которых останется неизменной для любых возмущений, меньших, чем b. Пороговая обработка / преобразование входных данных в двоичную форму - хорошо известная защита от соперничества, поскольку она устраняет небольшие возмущения - состязательное обучение заставило модель изучать это независимо!

По мере того как глубокое обучение получает все более широкое распространение, мы должны оставаться осторожными, чтобы не антропоморфизировать модели машинного обучения, поскольку мы видели, что они могут привести к катастрофическим сбоям, в отличие от людей. Однако в настоящее время проводятся некоторые блестящие исследования, чтобы предотвратить подобные атаки и в некоторых случаях сертифицировать устойчивость к определенным возмущениям, так что, возможно, действительно надежные глубокие сети могут быть уже не за горами.

Спасибо за чтение. Не стесняйтесь читать мой предыдущий пост, в котором освещаются некоторые удивительные результаты о примерах противоборства, или ознакомьтесь с этим блокнотом Jupyter, который содержит код для получения всех цифр в этом посте и обучения вашей собственной надежной модели.

использованная литература

Надежность может идти вразрез с точностью - Ципрас и др., 2018 г.

На пути к моделям глубокого обучения, устойчивым к состязательным атакам - Мадри и др., 2017