Автор: Хлоя Брейтуэйт

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

И, конечно же, если вы что-то знаете о глубоком машинном обучении, вы слышали о докторе Яне Гудфеллоу, изобретателе генеративных состязательных сетей, или GAN.

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

Один из способов решения этой проблемы исследователями - использование примеров противоборства.

«Противоречивый пример - это пример, который был намеренно изменен, чтобы заставить систему машинного обучения сделать ошибку».

Но почему внезапный интерес к изучению нейронных сетей с этой точки зрения?

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

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

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

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

Используемая здесь уязвимость происходит из-за того, что наши нейронные сети слишком линейны.

«Многие из вас, наверное, думают, подождите! Нейронные сети должны быть чрезвычайно нелинейными! Во-первых, нейронные сети очень нелинейны, если вы посмотрите на них как на функцию их параметров.

«Все разные веса в нейронной сети умножаются вместе на разных уровнях, а это означает, что если вы посмотрите на функцию, которую представляет нейронная сеть, с точки зрения того, как один параметр влияет на эту функцию, вы действительно получите очень непростой результат. линейное отображение. Но если вы посмотрите на то, как входные данные распространяются на выходы, мы фактически увидим нечто, похожее на кусочно-линейную функцию, вы знаете, выпрямленные линейные единицы и максимальные выходные единицы буквально кусочно-линейны ».

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

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

Отсюда и множество примеров противоборства.

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

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

«Оказывается, что чрезвычайно квадратичные модели далеко не так уязвимы, как состязательные примеры, как линейные модели. Хорошая новость в том, что есть модели, которые менее уязвимы, а плохая новость в том, что квадратичные модели очень неглубокие, поэтому они не очень хорошо распознают нормальные данные ».

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

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

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

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

Коллега Гудфеллоу, Николас Паперно, также разработал способ отправки входных данных в удаленно размещенную модель, чтобы наблюдать за выходными данными, и «используя пары вход-выход для обратного проектирования модели, выясняя, как обмануть ее».

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

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

Примечание. Эта статья основана на презентации, которую Ян Гудфеллоу сделал на AI With The Best 2017. Это его третий раз, когда он выступает на онлайн-конференции разработчиков.