3 способа понять, что CNN узнают об изображениях

Ссылки на серии

Часть 1: Введение

Часть 2. Что сверточные нейронные сети узнают об изображениях?

Часть 3: Введение в наш набор данных и проблему классификации

Часть 4: Генерация текста для CNN

Часть 5: Скрытие токенов ввода для раскрытия фокуса классификации

Часть 6: Оценка последовательностей токенов по их релевантности

Часть 7: Заключение сериала

Что такое задача классификации изображений?

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

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

Я частично основывал этот раздел на двух источниках:

  • Стэнфордская страница курса CS231n Андрея Карпати, на которой есть дополнительная информация об этих методах (и других)
  • Книга Франсуа Шолле Глубокое обучение. Глава 5.4 посвящена исследованию представлений изображений, изученных CNN (это отличная книга, купите ее, я многому научился!)

Техника CNN и изображений 1 из 3: используйте градиентное восхождение для создания искусственных изображений

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

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

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

Примеры изображений, сгенерированных из неглубоких фильтров (базовые элементы):

Примеры изображений, созданных с помощью более глубоких фильтров (более сложных шаблонов):

Однако этот метод градиентного восхождения работает только до сих пор.

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

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

Франсуа Шолле сгенерировал изображение сороки с помощью CNN, которое выиграло конкурс изображений ILSVR 2014.

Вот компьютер воображает чистейшую сороку:

Не многие люди согласятся, что это типичное изображение сороки!

Далее мы рассмотрим другой метод интерпретации CNN, которые были приспособлены к данным изображения.

Техника CNN и изображений 2 из 3: использование окна окклюзии

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

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

Итак, как мы интерпретируем, какие части изображения CNN считает наиболее важными при классификации изображения? Мы можем визуализировать это с помощью окна окклюзии (Zeiler and Fergus, 2013).

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

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

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

Техника CNN и изображений 3 из 3: Ранжирование входных изображений по показателю активации

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

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

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

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

Адаптация этих методов для работы в текстовых классификаторах CNN

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

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

Во-вторых, нам нужно адаптировать каждую технику с 1 по 3 выше для работы с текстом. Вот примерно как я адаптирую каждый из вышеперечисленных методов для работы с текстом:

  • Метод 1 из 3: используйте градиентное восхождение для создания входного текста
  • Способ 2 из 3: скройте каждый токен во входном предложении один за другим и посмотрите, как это повлияет на вероятность класса предложения.
  • Метод 3 из 3. Ранжируйте входные предложения по показателю активации фильтра.

CNN и изображения: Заключение

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

Следующее сообщение: Часть 3: Введение в наш набор данных и проблему классификации