Атака на машинное обучение с помощью состязательных примеров

Attacking Machine Learning With Adversarial Examples

Состязательные примеры (adversarial examples) — это входные данные для моделей машинного обучения, которые злоумышленник намеренно разработал так, чтобы модель совершила ошибку; они похожи на оптические иллюзии для машин. В этой статье мы покажем, как работают состязательные примеры в различных средах, и обсудим, почему защита систем от них может быть сложной задачей.

В OpenAI мы считаем состязательные примеры хорошей темой для исследований в области безопасности, поскольку они представляют собой конкретную проблему безопасности ИИ, которую можно решить в краткосрочной перспективе, а их исправление достаточно сложно и требует серьезных исследовательских усилий. (Хотя нам потребуется изучить множество аспектов безопасности машинного обучения для достижения нашей цели — создания безопасного и широко распространенного ИИ.)

Чтобы получить представление о том, как выглядят состязательные примеры, рассмотрим демонстрацию из работы Объяснение и использование состязательных примеров (Explaining and Harnessing Adversarial Examples): начиная с изображения панды, злоумышленник добавляет небольшое возмущение (пертурбацию), рассчитанное таким образом, чтобы изображение с высокой уверенностью распознавалось как гиббон.

Adversarial image training

Этот подход весьма устойчив;  недавние исследования показали, что состязательные примеры можно распечатать на обычной бумаге, сфотографировать на обычный смартфон, и они по-прежнему будут обманывать системы.

Adversarial Img 2

Состязательные примеры можно распечатать на обычной бумаге и сфотографировать на смартфон со стандартным разрешением, и они все равно заставят классификатор — в данном случае — классифицировать «стиральную машину» как «сейф».

Состязательные примеры потенциально опасны. Например, злоумышленники могут атаковать автономные транспортные средства, используя наклейки или краску для создания состязательного знака «Стоп», который автомобиль интерпретирует как «Уступите дорогу» или другой знак, как обсуждается в работе Практические атаки типа «черный ящик» на системы глубокого обучения с использованием состязательных примеров (Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples).

Агенты обучения с подкреплением также могут подвергаться манипуляциям с помощью состязательных примеров, согласно новым исследованиям Калифорнийского университета в Беркли, OpenAI и Университета штата Пенсильвания,  Состязательные атаки на стратегии нейронных сетей (Adversarial Attacks on Neural Network Policies), а также исследованию Университета Невады в Рино,  Уязвимость глубокого обучения с подкреплением к атакам индуцирования стратегий (Vulnerability of Deep Reinforcement Learning to Policy Induction Attacks). Исследование показывает, что широко используемые алгоритмы обучения с подкреплением, такие как DQN,  TRPO и A3C, уязвимы к состязательным входным данным. Это может привести к ухудшению производительности даже при наличии возмущений, слишком незначительных для восприятия человеком, из-за чего агент может переместить ракетку в понг вниз, хотя должен был вверх, или это нарушит его способность обнаруживать врагов в Seaquest.

Если вы хотите поэкспериментировать со взломом собственных моделей, вы можете использовать cleverhans — библиотеку с открытым исходным кодом, разработанную совместно Яном Гудфеллоу (Ian Goodfellow) и Николя Паперно (Nicolas Papernot), чтобы проверить уязвимость вашего ИИ к состязательным примерам.

Состязательные примеры дают нам опору в вопросах безопасности ИИ

Когда мы думаем об исследовании безопасности ИИ, мы обычно думаем о некоторых из самых сложных проблем в этой области — как мы можем гарантировать, что сложные агенты обучения с подкреплением, которые значительно интеллектуальнее людей, ведут себя так, как задумали их создатели?

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

Попытки защиты от состязательных примеров

Традиционные методы повышения устойчивости моделей машинного обучения, такие как затухание весов (weight decay) и исключение (dropout), как правило, не обеспечивают практической защиты от состязательных примеров. На данный момент значительную защиту обеспечили только два метода.

Состязательное обучение (Adversarial training): Это решение в лоб, при котором мы просто генерируем множество состязательных примеров и явно обучаем модель не поддаваться на каждый из них. Реализация состязательного обучения с открытым исходным кодом доступна в библиотеке cleverhans, а ее использование проиллюстрировано в следующем учебном пособии.

Защитная дистилляция (Defensive distillation): Это стратегия, при которой мы обучаем модель выдавать вероятности различных классов, а не жесткие решения о том, какой класс выводить. Вероятности предоставляются более ранней моделью, обученной на той же задаче с использованием жестких меток классов. Это создает модель, поверхность которой сглажена в направлениях, которые злоумышленник обычно пытается использовать, что затрудняет для него обнаружение изменений во входных данных, ведущих к неправильной категоризации. (Дистилляция была изначально представлена в работе Дистилляция знаний в нейронной сети (Distilling the Knowledge in a Neural Network) как метод сжатия моделей, при котором небольшая модель обучается имитировать большую с целью достижения вычислительной экономии.)

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

Несостоявшаяся защита: «маскировка градиента» (gradient masking)

Чтобы проиллюстрировать, как может потерпеть неудачу простая защита, давайте рассмотрим, почему не работает метод, называемый «маскировкой градиента».

«Маскировка градиента» — это термин, введенный в работе Практические атаки типа «черный ящик» на системы глубокого обучения с использованием состязательных примеров (Practical Black-Box Attacks against Deep Learning Systems using Adversarial Examples), для описания целой категории неудачных методов защиты, которые работают за счет попыток лишить злоумышленника доступа к полезному градиенту.

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

Но что, если градиента не будет — что, если бесконечно малое изменение изображения не приведет к изменению выходных данных модели? Это кажется определенной защитой, поскольку злоумышленник не знает, в какую сторону «толкать» изображение.

Мы легко можем представить несколько тривиальных способов избавления от градиента. Например, большинство моделей классификации изображений могут работать в двух режимах: в одном режиме они выводят только идентификатор наиболее вероятного класса, а в другом — вероятности. Если на выходе модели »99,9% самолет, 0,1% кот», то небольшое изменение входных данных дает небольшое изменение выходных данных, а градиент подсказывает нам, какие изменения увеличат вероятность класса «кот». Если мы запустим модель в режиме, когда на выходе отображается только «самолет», то крошечное изменение входных данных вообще не изменит выходные данные, и градиент нам ничего не скажет.

Давайте проведем мысленный эксперимент, чтобы оценить, насколько хорошо мы сможем защитить нашу модель от состязательных примеров, запустив ее в режиме «наиболее вероятного класса» вместо «режима вероятностей». Злоумышленник больше не знает, куда идти в поисках входных данных, которые будут классифицированы как коты, так что у нас может быть некоторая защита. К сожалению, каждое изображение, которое раньше классифицировалось как кот, по-прежнему классифицируется как кот. Если злоумышленник сможет угадать, какие точки являются состязательными примерами, эти точки все равно будут классифицированы неверно. Мы не сделали модель более устойчивой; мы просто дали злоумышленнику меньше подсказок для определения того, где находятся бреши в защите модели.

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

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

Defended model versus a substitute model

Процедура проведения такой атаки с извлечением модели была представлена в статье об атаках черного ящика. Затем злоумышленник может использовать градиенты суррогатной модели для поиска состязательных примеров, которые также неверно классифицируются защищенной моделью. На рисунке выше, воспроизведенном из обсуждения маскировки градиента в работе На пути к науке безопасности и конфиденциальности в машинном обучении (Towards the Science of Security and Privacy in Machine Learning), мы иллюстрируем эту стратегию атаки на примере одномерной задачи машинного обучения. Явление маскировки градиента усугубляется для задач с более высокой размерностью, но его сложнее изобразить.

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

Почему от состязательных примеров трудно защититься?

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

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

Каждая протестированная нами стратегия до сих пор терпела неудачу, потому что она не является адаптивной: она может блокировать один вид атак, но оставляет другую уязвимость открытой для злоумышленника, который знает об используемой защите. Разработка защиты, способной уберечь от мощного, адаптивного противника, — важная область исследований.

Заключение

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

Для получения дополнительной информации

Чтобы узнать больше о безопасности машинного обучения, читайте блог Яна и Николя по безопасности машинного обучения cleverhans.io.

Авторы

Ян Гудфеллоу, Николас Паперно, Сэнди Хуан, Ян Дуань, Питер Аббел, Джек Кларк

Полный текст статьи читайте на OpenAI