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

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

Зачем нам нужна карта значимости?

Нейронные сети — это мощная архитектура, которая находит применение в ряде секторов. За последнее десятилетие мы стали свидетелями его беспрецедентных возможностей в решении широкого круга сложных задач компьютерного зрения с высокой точностью. Однако по своей природе нейронные сети также являются моделями черного ящика, не поддающимися интерпретации. Это не идеально и противоречит этическим принципам ИИ, не позволяя нам использовать весь его потенциал в практических приложениях. Таким образом, мы должны приложить усилия, чтобы понять, что изучают наши модели. Карты важности — отличный инструмент для понимания того, что сверточные слои видят в компьютерном зрении, что позволяет нам использовать эти модели в производстве осознанным образом. Его также можно использовать для устранения неполадок моделей в случаях, когда модели работают не так, как ожидалось. Что еще более важно, добавление интерпретируемости к сложным архитектурам, таким как нейронные сети, потенциально может создать петлю обратной связи, информируя пользователя о новых знаниях об интересующей области и, таким образом, становясь катализатором быстрых инноваций в этом секторе.

Реализация карты значимости

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

Наша модель имеет точность 87%, что является разумным достижением, учитывая, что мы использовали только чуть менее 10% от общего объема данных с минимальной оптимизацией. Мы могли бы создать лучшую модель с некоторой настройкой гиперпараметров и/или за счет использования предварительно обученных моделей и большего количества данных, но здесь мы сосредоточились не на этом.

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

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