Новости высоких технологий

Как видит нейросеть — как нейросеть видит слова, фото

Как видит нейросеть - раскрытие того, что видят и чему учатся нейронные сети!

Как видит нейросеть — как нейросеть видит слова, фото и как все это обрабатывает

Как видит нейросеть — раскрытие того, что видят и чему учатся нейронные сети и как все это обрабатывается.
как видит нейросеть
как видит нейросеть
  • Линейные и классические модели обучения, такие как логистическая регрессия, легко понять и проанализировать.
С другой стороныглубокие нейронные сети трудно понять, поэтому люди называют их черными ящиками.
К счастью, было изобретено множество методов, которые позволяют нам в какой-то степени понять эти сети.
В этом посте мы представляем некоторые из этих методов, а также рекомендуем PytorchRevelio, инструментарий, содержащий эти методы.
Нужен хороший ноутбук? Посмотрите на Яндекс.Маркете!

Почему важно понимать, как видит нейросеть и глубокие нейронные сети?

Глубокие нейронные сети, особенно сверточные, с помощью больших наборов данных и новых подходов к обучению и избежанию таких проблем, как исчезновение градиента, достигли высокой производительности!
  • Поэтому они заменили старые методы во многих задачах компьютерного зрения, таких как классификация, обнаружение, семантическая сегментация, отслеживание, реконструкция сцены и т.д.
В статье приводятся эти причины важности понимания того, что видят нейронные сети. Интерпретируемость имеет значение.
Для того, чтобы укрепить доверие к интеллектуальным системам и понять как видит нейросеть и двигаться к их значимой интеграции в нашу повседневную жизнь.
Очевидно, что мы должны создавать «прозрачные» модели, которые способны объяснить, почему они предсказывают то, что они предсказывают.
Мы можем придумать способы решения проблем модели, поняв, почему прогноз модели для входных данных неверен.
  • Когда модель выполняет ту или иную задачу лучше, чем человек, мы можем узнать что-то новое, поняв, почему она приняла такое решение.

Как видит нейросеть - как нейросеть видит слова, фото

Первая строка приведенного выше изображения содержит четыре изображения, переданные VGG-16, обученному в ImageNet.

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

Например, 4-е изображение — это катушка. Однако он классифицируется как виноградная змея. Причина — зеленая кривая, которая показана в третьем ряду.

PytorchRevelio toolkit получает эти вышеупомянутые изображения с помощью двух разных методов. Эти изображения являются полученными представлениями метки класса 691-Кислородная маска для VGG11, обученной в ImageNet.

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

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

  • Красные пиксели показывают части изображений, которые ResNet-50, обученный на ImageNet, концентрирует для классификации изображений животных, таких как туканы, лисы, орлы, павлины.

Эти красные пиксели получены с помощью PytorchRevelio. Например, при классификации тукана ResNet-50 рассматривает в основном его клюв, а другие части имеют меньшее значение.

Для отнесения изображения к классу павлинов сеть в основном использует узоры глаз на его перьях. Если клюв тукана закрыт, сможет ли сеть правильно его классифицировать?

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

Как видит нейросеть: максимизация активации

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

  • Максимизацию активации можно найти в этой статье: “Визуализация функций более высокого уровня глубокой сети”.

Изображение создается путем случайного рисования пикселей из распределения, такого как распределение Гаусса в этом методе.

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

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

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

Как видит нейросеть - как нейросеть видит слова, фото

Как видит нейросеть - как нейросеть видит слова, фото

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

  • Фильтры на первом изображении принадлежат первому слою AlexNet; они изучили простые функции, такие как края с разной ориентацией.

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

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

Максимизация активации с размытием по Гауссу

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

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

Один из самых простых способов — использовать фильтры нижних частот, такие как размытие по Гауссу. На каждом шаге к вычисленным градиентам или полученному изображению следует применять фильтр Гаусса.

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

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

  • Они представляют некоторые из изученных функций нейронами / фильтрами VGG11, обученными в ImageNet.

Как видно на изображениях, объекты проще на первых слоях и постепенно становятся более сложными и абстрактными на более поздних слоях.

Нижеприведенный порядок можно наблюдать в абстракции полученных объектов, перейдя к более глубоким слоям:
1- Края/Углы
2- Текстура
3- Шаблон
4- Части объектов
5- Весь Объект

Как видит нейросеть - как нейросеть видит слова, фото

Максимизация активации с двусторонним размытием

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

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

Карта Значимости

Карта значимости — это карта, которая показывает важность каждого пикселя входного изображения при вычислении оценки выходного класса.

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

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

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

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

Как видит нейросеть — карта рельефа с направленными градиентами

Карта рельефа с направленным градиентом такая же, как и в предыдущем методе. Однако вместо градиентов он использует управляемые градиенты.

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

Как видит нейросеть - как нейросеть видит слова, фото

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

Использование управляемых градиентов значительно повышает качество получаемых карт рельефа. Ниже вы можете увидеть несколько выходных данных, которые вычисляет PytorchRevelio. Разница заметна.

Этот метод приводит к получению изображений с высоким качеством по сравнению с предыдущим методом.

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

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

Управляемая Град-КАМЕРА

Метод Guided Grad-CAM сначала получает карту значимости для входного изображения и целевого класса с помощью предыдущего метода: «карта значимости с управляемыми градиентами».

  • Однако он вычисляет результирующее произведение карты значимости по элементам и матрицу L, чтобы устранить нежелательные пиксели на карте значимости.

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

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

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

Он ставит градиенты целевого класса равными двум единицам, а затем вычисляет градиенты оценки целевого класса относительно выходных карт объектов последнего сверточного слоя.

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

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

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

НА ГЛАВНУЮ

Кнопка «Наверх»