Три метода визуальной интерпретации сверточных нейронных сетей
Нейронные сети умеют делать так много всего: распознавать лица, переводить тексты, управлять машинами и даже предсказывать будущее (ну почти). Но вот загвоздка: они как черный ящик. Мы видим результат, но не понимаем, как этот результат достигается.
Меня зовут Роман, я специалист Data Science SimbirSoft. Анализ данных и работу с нейросетями мне доводилось использовать на проектах — например, для задачи fraud detection на кассах самообслуживания, и для обработки спутниковых изображений с применением методов компьютерного зрения.
В этой статье мы с вами попробуем взглянуть на нейронные сети с другой стороны. Представим одну из сетей механизмом с множеством разных деталей, которые работают вместе. И теперь возникнет вопрос — за что отвечает конкретная деталь? Удобнее всего объяснять работу таких деталей на примере сверточных нейронных сетей, так как зачастую они работают с изображениями, и у нас есть возможность узнать что «видит» конкретная деталь.
Статья будет полезной для исследователей и инженеров, занимающихся глубоким обучением и компьютерным зрением, а также для специалистов в области данных, маркетинга и технологий. Понимание работы нейросетей позволит специалистам развить компетенции в сфере искусственного интеллекта, а представителям бизнеса — повысить уровень прозрачности и объяснимости своих решений клиентам и вышестоящему руководству.
Область применения нейросетей и вообще искусственного интеллекта крайне широка — мы задействуем их в проектах для наших клиентов, автоматизируя процессы в промышленности, финтехе, страховании, ритейле, строительстве, сельском хозяйстве и других отраслях.
Я расскажу о нескольких способах посмотреть, что там происходит у нейронных сетей в «голове».
Например, метод «Feature map visualization» помогает понять, какие области изображения интересны разным частям сети (деталям, если использовать аналогию), и как они ее обрабатывают. А «Saliency Maps» показывает, какие области в целом считаются важными для сети. И еще есть «Class Visualization», который помогает узнать, какие признаки на изображении связаны с разными классами объектов.
Для наглядности мы возьмем цветное изображение котика и собачки (Рисунок 1). С их помощью мы продемонстрируем, как работают различные методы анализа и визуализации сверточных нейронных сетей. Воспользуемся предобученной моделью VGG-19. Она верно отнесла первое изображение к классу «Siamese cat», а второе к «Samoyed».
Feature map visualization
Feature map visualization — это трюк, который используется для сверточных нейронных сетей, и с помощью которого можно посмотреть на их богатый внутренний мир. Метод помогает нам проникнуть в их ум, узнать, что и как они «видят».
Для понимания этого процесса можно представить себе сеть как художника. Первый слой — это его начальный набросок, где он ловит линии и края. Эти линии могут быть горизонтальными, вертикальными, или даже наклонными, что мы можем видеть на Рисунке 2. Второй слой — это уже углы и формы. Тут сеть начинает узнавать разные геометрические штуки. На третьем слое начинают проявляться цвета и текстуры. Это как палитра для художника.
А вот последний слой (Рисунок 3) — это уже что-то более абстрактное. Он начинает видеть, что это за объекты: кошки, собаки, автомобили и так далее. Это как завершенное произведение искусства художника. Feature map visualization дает нам шанс заглянуть в каждый этап этого творческого процесса и понять, как сеть превращает пиксели в абстрактные представления. Обобщение всех слоев помогают нейронке собрать всю информацию воедино и создать преставление о том, что или кто на картинке.
Saliency Maps
Важный инструмент в области визуализации нейронных сетей. Эта техника помогает понять, на что именно обращает внимание нейронная сеть при принятии решений. Суть её заключается в том, чтобы выделить те части изображения, которые сильнее всего влияют на предсказанный класс.
Saliency Map по сути показывает «яркость» разных частей входных данных. Чем ярче эта область, тем сильнее она влияет на решение сети. Так на Рисунке 4 сеть посчитала глаза котика, его мордочку и лапки особенно важными.
Эта техника имеет широкое применение в различных областях. Например, для задачи классификации дорожных знаков. Знаки часто похожи друг на друга, а Saliency Maps помогает выявить уникальные признаки, основанные на их цвете и форме, что важно для правильной классификации. Аналогично такая техника может найти применение в задаче классификации одежды, помогая определить тип или стиль одежды.
Class Visualization
Техника визуализации нейронных сетей, известная как Class Visualization, играет важную роль в раскрытии тайн глубокого обучения. Она открывает перед нами возможность заглянуть внутрь и понять, как именно нейронные сети ассоциируют определенные характеристики с конкретными классами объектов. Это подобно раскрыванию секретов их внутреннего мира, где формируются представления о том, что такое «кошка», «машина» или любой другой объект, на который они обучены реагировать.
Этот подход основан на том что, вначале генерируется абсолютно случайное изображение. Затем мы показываем это изображение нейронной сети и пытаемся изменить это изображение так, чтобы активировать определенные нейроны, отвечающие за конкретный класс (например, кошки или собаки).
В процессе обучения изображение постепенно «очищается» от шума, становится всё ближе к тому, что нейронная сеть считает типичным для класса. Таким образом, мы получаем визуализацию того, какие признаки и структуры сеть ассоциирует с определенным классом.
Эта фишка может быть полезной не только для того, чтобы просто узнать, как работает наша модель, но и для того, чтобы улучшить её. Мы можем убедиться, что нейросеть действительно замечает те признаки, которые мы считаем важными. Так на рисунке 5 видно, что для котика можно увидеть, что-то похожее на его темную мордочку с ушками, а для самоедской собаки характерны глазки-бусинки и белая мордочка.
Заключение
Подытожим, какие инструменты мы изучили:
-
Feature map visualization помог выяснить, что сети начинают с простых штук, типа линий и цветов, а потом переходят к сложным абстрактным паттернам.
-
Saliency Maps выявил особенно важные «яркости» на картинке.
-
Class Visualization подсказал, какие образы ассоциируются с разными классами объектов.
Теперь мы немного лучше понимаем, как работают эти черные ящики — нейросети. Доступные инструменты предоставляют уникальную возможность визуализировать и анализировать, как нейронная сеть «думает», и какие признаки она выделяет в изображениях.
Получив понимание того, как нейросети обрабатывают визуальную информацию, вы сможете лучше применять эти знания в своей сфере деятельности. В теории рассмотренные подходы могут найти применение в различных отраслях, предоставляя возможность анализа визуальных данных с целью повышения эффективности и качества бизнес-процессов.
Узнайте больше о наших возможностях разработки продуктов на базе Data Science и Machine Learning.