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

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

Рассмотрим следующие сценарии:

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

2. Модели медицинской диагностики ответственны за жизнь человека. Как мы можем быть уверены, что сможем лечить пациента в соответствии с инструкциями модели черного ящика?

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

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

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

Можно ли объяснить решения модели компьютерного зрения?

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

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

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

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

Визуализация того, чему научились модели зрения

Как вы, возможно, знаете, сверточные нейронные сети (CNN) являются доминирующим типом модели в компьютерном зрении с момента их выдающегося достижения в конкурсе ImageNet Large Scale Visual Recognition Competition (ILSVRC) в 2012 году¹. Несмотря на то, что модели глубокого обучения, такие как CNN, обычно считаются «черными ящиками», визуализация слоев CNN не является новой техникой. В 2013 году Зейлер и Фергус уже предложили метод, который позволяет нам получить представление о том, что CNN узнает после обучения. Ниже приведены некоторые примеры из статьи, касающиеся карт объектов различных слоев в предварительно обученной модели AlexNet. Они обнаружили, что разные слои изучают разные аспекты изображения. Более ранние слои, вероятно, изучают более простые функции, такие как края и углы, тогда как более поздние слои изучают более сложные функции, которые иногда могут сами по себе напоминать крошечные изображения.

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

Град-САМ

Помните, что эта модель предварительно обучена в ImageNet, наборе данных изображений с 1000 различными классами. Как мы получаем активации, отвечающие за предсказание одного конкретного класса?

Позвольте представить вам алгоритм Gradient-Weighted Class Activation Mapping (Grad-CAM)². Grad-CAM предлагает использовать градиенты, которые распространяются обратно от слоя предсказания до интересующих нас активаций. Обычно мы выбираем последние сверточные слои, чтобы иметь лучший компромисс между семантикой высокого уровня и подробной пространственной информацией. Возможно, рисунок ниже проиллюстрирует это лучше.

На рисунке выше показана упрощенная иллюстрация Grad-CAM. В этом примере изображение передается через CNN, состоящую из нескольких сверточных слоев. После последнего сверточного слоя к тензору применяется глобальное среднее объединение (обозначенное на рисунке GAP). Последний слой представляет собой вектор, обозначающий вероятность каждого возможного класса. Узел, выделенный полужирным шрифтом, — это интересующий нас класс.

Grad-CAM работает следующим образом: мы получаем градиент относительно интересующего нас класса (чаще всего нам нужен класс, предсказанный моделью). Это обозначается символом «dy/dw». Затем мы умножаем этот градиент на каждую карту объектов, прежде чем он будет глобально объединен (показан на рисунке в виде цветных прямоугольников).

Изоляция сложных выборок данных? Комета может это сделать. Узнайте больше о нашем сценарии PetCam и откройте для себя кометные артефакты.

Реализация TensorFlow

Полный код можно найти в этом официальном учебнике Keras. Эта статья посвящена только реализации Grad-CAM. Во-первых, мы создаем Keras Model, который сопоставляет входное изображение как с активациями последнего сверточного слоя, так и с выходными предсказаниями. Эта модель может быть любой предварительно обученной моделью Tensorflow, например сетью Xception. Соответствующий фрагмент кода выглядит следующим образом:

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

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

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

Полная реализация TensorFlow для Grad-CAM:

Когда мы накладываем тепловую карту на изображение, мы получаем это изображение:

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

Почему это имеет значение?

Попытка рационализировать решение модели важна, потому что модель может сделать правильный прогноз, но ошибаться в том, почему. Эта статья³ под названием Почему я должен вам доверять? — объяснение предсказаний любого классификатора» показывает нам отличный пример одного из их экспериментов.

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

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

Заключение

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

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

  1. Крижевский, Алекс, Илья Суцкевер и Джеффри Э. Хинтон. «Классификация Imagenet с помощью глубоких сверточных нейронных сетей». Достижения в области нейронных систем обработки информации 25 (2012 г.).
  2. Селвараджу, Рампрасаат Р., Майкл Когсвелл, Абхишек Дас, Рамакришна Ведантам, Деви Парикх и Дхрув Батра. «Град-камера: визуальные объяснения из глубоких сетей с помощью локализации на основе градиента». В Материалы международной конференции IEEE по компьютерному зрению, стр. 618–626. 2017.
  3. Рибейро, Марко Тулио, Самир Сингх и Карлос Гестрин. «Почему я должен вам доверять?» Объясняя предсказания любого классификатора. В Материалы 22-й международной конференции ACM SIGKDD по открытию знаний и интеллектуальному анализу данных, стр. 1135–1144. 2016.

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

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

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.