Даже у самого продвинутого ИИ есть свои недостатки

Могли бы вы сказать, что модели глубокого обучения стали настолько хороши, что надежные системы ИИ больше не мечта, а реальность?

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

Убеждены, что машины уже лучше людей обрабатывают и понимают изображения?

Я тоже. Пока я не понял, что можно обмануть современную модель, такую ​​как DeepMind Perceiver, с помощью нескольких строк кода.

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

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

Давайте погрузимся в это!

Проблема

Модели глубокого обучения — это очень гибкие и мощные машины для захвата очень сложных закономерностей в данных.

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

Однако они также очень хрупки для редких входных данных.

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

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

Возможно, вы думаете…

В этом есть смысл, но это не применимо к этим массивным моделям Transformer с многомиллиардными параметрами, разработанными DeepMind, OpenAI, Tesla и другими технологическими гигантами?

Как можно генерировать редкие входные данные, когда эти модели обучались на десятках (даже сотнях) миллионов примеров?

Ну, эти модели НА САМОМ ДЕЛЕ тоже можно обмануть. И это то, что я хочу показать вам дальше.

Давайте посмотрим, как вы можете сгенерировать редкие входные данные, которые обманут DeepMind Perceiver, одну из последних и самых горячих моделей DeepLearning на сегодняшний день.

Воспринимающий DeepMind

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

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

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

Точная версия, которую я буду использовать в этом примере, общедоступна в репозитории моделей HuggingFace, который вы можете найти здесь. Это модель с более чем 62 миллионами параметров, предварительно обученная на наборе данных ImageNet, который содержит более 14 миллионов изображений, принадлежащих к 20 тысячам категорий.

3 шага, чтобы обмануть DeepMind Perceiver

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

Для простоты мы начнем с того же примера, который вы можете найти в карточке модели HuggingFace, здесь.

где изображение вот это:

Как и ожидалось, модель правильно идентифицирует это изображение как кота.

>>> Predicted class: tabby, tabby cat

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

Чтобы сгенерировать состязательный пример из исходного изображения кошки, мы будем использовать библиотеку Cleverhans и один из самых простых алгоритмов: метод быстрого знака градиента (также известный как FGSM), представленный Гудфеллоу, Шленсом и Сегеди в эта основополагающая статья

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



Шаг 1. Загрузите модель

Сначала мы загружаем модель Perceiver и препроцессор из концентратора моделей HuggingFace.

>>> Number of parameters: 62,255,848

Функция feature_extractor обрезает входное изображение до разрешения 224×224 и нормализует значения пикселей, используя среднее значение и стандартное отклонение. Этот вид предварительной обработки является обычной практикой для моделей видения глубокого обучения.

Шаг 2. Вспомогательная функция

Я написал вспомогательную функцию, которая отменяет эту предварительную обработку и возвращает изображение из нормализованного тензора. Я называю эту функцию inverse_feature_extractor

Шаг 3. Атака методом быстрого градиентного знака

Следующее, что мы делаем, мы импортируем метод Cleverhans fast_gradient_sign. Эта функция по существу принимает 2 входа, а именно:

  1. исходное изображение, которое мы хотим изменить → наши любимые коты.
  2. эпсилон, то есть размер максимального искажения на пиксель, который мы допускаем → eps. Это значение всегда положительно и мало.

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

В этом случае я буквально потратил 10 минут, чтобы обнаружить, что eps = 0.1 выдает состязательный пример.

>>> Predicted class:  English setter

Английский сеттер — это порода собак, между прочим…

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

Это спорный пример.

Последствия для безопасного и надежного ИИ в реальном мире

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

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

Безопасно ли использовать модели глубокого обучения, которые легко обмануть, в критически важных задачах, таких как самоуправляемые автомобили, где на карту поставлены человеческие жизни?»

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

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

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

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

Вы можете найти весь код в этом репозитории.

Хочешь поддержать меня?

Вы любите читать и узнавать о машинном обучении в реальном мире, науке о данных и фрилансе?

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

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



👉🏽 Подпишитесь на рассылку datamachines.

👉🏽 Следуйте за мной в Twitter, Medium и LinkedIn.

Хорошего дня 🤗

Пау