Надежное машинное обучение: устойчивость к состязаниям

В последнее время машинное обучение начало оказывать значительное влияние на наше окружение. Включение машинного обучения в реальные задачи делает автоматизацию задач намного проще и лучше, и поэтому мы включаем его в такие задачи, как распознавание изображений, обнаружение признаков, классификация и т. д. Но, как мы все знаем, модели машинного обучения также имеют свои недостатки, они никогда не обеспечивают нам 100% точность, и, поскольку мы используем модели машинного обучения в областях, представляющих большой интерес, таких как безопасность, наличие надежных моделей машинного обучения имеет большое значение. Большие современные модели машинного обучения, созданные в настоящее время, обеспечивают высокую точность, и многие из них также утверждают, что превзошли производительность человеческого уровня. Хотя эти модели могут хорошо работать со стандартными ожидаемыми входными данными, многие из них не срабатывают при атаках злоумышленников. Таким образом, возникает вопрос, как сделать наши модели более надежными и устойчивыми к таким атакам злоумышленников.

Введение

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

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

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

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

Итак, для начала создания состязательных моделей давайте сначала определимся с некоторыми терминами. мы сначала определим функцию модели:

которое представляет собой отображение из входного пространства в выходное пространство, которое представляет собой k-мерный вектор k, являющийся номером. прогнозируемых классов. Затем также определим функцию потерь:

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

где δ — отклонение от x, а Δ — набор допустимых отклонений. Обычно используемым набором возмущений является шар ℓ∞, определяемый набором: Δ={δ:∥δ∥∞≤ϵ}

где ℓ∞ Норма вектора z задается как:

т. е. мы позволяем каждому компоненту возмущения иметь величину между [−ϵ,ϵ].

Теперь давайте напишем код для рассмотренной выше теории. Мы попробуем сгенерировать пример, рассмотренный во введении. Мы будем использовать библиотеку PyTorch и модель ResNet50.

во-первых, давайте импортируем изображение и просмотрим его.

Теперь давайте посмотрим на прогноз для изображения без шума.

Прогнозируемый класс — 341, что соответствует свиньям. Таким образом, сеть правильно классифицирует изображение.

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

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

Это похоже на наше изображение свиньи. давайте также посмотрим на дельту, увеличенную в 50 раз.

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

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

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

Обучение состязательных устойчивых моделей

Чтобы сделать модель Adversarial надежной, нам нужно обучить ее на примерах Adversarial, и, таким образом, при этом мы столкнемся с оптимизацией целевой функции min-max, которая будет:

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

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

где:

Теперь давайте напишем модель Adversarial Robust:

Мы видим, что состязательные потери для нашей модели постоянно уменьшаются. Таким образом, мы успешно создали устойчивую к сопротивлению модель и сумели снизить потери от состязательных действий с почти 72 % до примерно 3 %.

Заключение

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

Рекомендации