Демистификация сверточных нейронных сетей с помощью GradCam

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

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

Вообще говоря, эта прозрачность полезна на трех этапах эволюции искусственного интеллекта (ИИ).

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

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

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

В предыдущей статье мы обсудили проблему интерпретируемости в сверточных нейронных сетях и обсудили очень популярную технику, известную как карта активации классов или CAM, которая в некоторой степени используется для решения проблемы. Хотя CAM - хороший метод демистификации работы CNN и укрепления доверия клиентов к разработанным приложениям, они страдают некоторыми ограничениями. Одним из недостатков CAM является то, что для него требуется, чтобы карты функций непосредственно предшествовали слоям softmax, поэтому он применим к определенному типу архитектур CNN, которые выполняют объединение глобального среднего значения по сверточным картам непосредственно перед предсказанием. (например, карты функций conv → глобальный средний пул → слой softmax). Такие архитектуры могут достигать более низкой точности по сравнению с общими сетями при выполнении некоторых задач или просто быть неприменимыми для новых задач.

В этом посте мы обсуждаем обобщение CAM, известное как Grad-Cam. Grad-Cam, опубликованная в 2017 году, направлена ​​на устранение недостатков CAM и утверждает, что совместима с любой архитектурой. Этот метод не требует каких-либо модификаций существующей архитектуры модели, и это позволяет применять его к любой архитектуре на основе CNN, в том числе для подписей к изображениям и визуальных ответов на вопросы. Для полностью сверточной архитектуры Grad-Cam сокращается до CAM.

ПОДХОД:

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

Grad-Cam, в отличие от CAM, использует информацию о градиенте, поступающую в последний сверточный слой CNN, чтобы понять каждый нейрон для принятия интересующего решения. Чтобы получить классификационную карту локализации шириной u и высотой v для любого класса c, мы сначала вычисляем градиент оценки для класса c, yc (до softmax) относительно карт характеристик Ak сверточного слоя. Эти текущие градиенты объединяются в глобальный средний пул для получения весов важности нейронов ak для целевого класса.

После вычисления ak для целевого класса c мы выполняем взвешенную комбинацию карт активации и следуем за ней с помощью ReLU.

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

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

Реализация Grad Cam с использованием Keras:

Реализация разделена на следующие этапы: -

  1. Для начала нам понадобится модель для выполнения прямого прохода. Мы используем VGG16, предварительно обученный на Imagenet. Вы можете использовать любую модель, потому что GradCam, в отличие от CAM, не требует определенной архитектуры и совместим с любой сверточной нейронной сетью.

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

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

5. На следующем этапе мы находим градиенты оценки yc целевого класса относительно карт характеристик Ak последнего сверточного слоя. Интуитивно это говорит нам, насколько важен каждый канал по отношению к целевому классу. Переменные grads возвращают тензор, который будет использоваться в следующих шагах.

6. Полученные таким образом градиенты затем объединяются в глобальный средний пул для получения важных весов нейронов ak, соответствующих целевому классу, как показано на рисунке 1. Это возвращает тензор, который передается в функцию Кераса, которая принимает image в качестве входных данных и возвращает pooled_grads вместе с картами активации из последнего сверточного слоя.

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

8. Затем мы применяем ReLU к итоговой тепловой карте, чтобы сохранить только те функции, которые имеют положительное влияние на выходную карту. Но мы видим, что у нас не так много отрицательных интенсивностей на тепловой карте, и, следовательно, после применения ReLU на тепловой карте не так много изменений.

9. Затем мы делим каждое значение интенсивности тепловой карты на максимальное значение интенсивности, чтобы нормализовать тепловую карту так, чтобы все значения находились между 0 и 1.

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

Вывод:

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

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