Дайте вам самое интуитивное объяснение того, как работают сверточные нейронные сети.

искусственный интеллект дизайн Нейронные сети Go

Примечание редактора: эта статья взята из аккаунта Zhihu.Owl of Minerva, 36氪 имеет право публиковать.

Сверточная нейронная сеть (CNN) — это своего рода искусственная нейронная сеть, которая является центром исследований в области анализа речи и распознавания изображений.

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

Давайте начнем с основ.

Операции над двумерными цифровыми сигналами (изображениями) можно записать в матричной форме.

Например, для сглаживания изображения, типичного сглаживания с 8 доменами, каждое значение в результате получается из произведения исходного соответствующего положения и окружающих его 8 элементов и матрицы 3X3:

Это эквивалентно умножению элементов каждой области на матрицу W в порядке исходной матрицы, а матрица W имеет вид:

Это также называется Ядро (Kernel, 3X3)

Его эффект обработки заключается в следующем:

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

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

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

Фильтры, которые мы разработали, и кривые, которые мы хотим идентифицировать, следующие:

Предположим, что верхнее ядро ​​(фильтр) движется по следующему графу в порядке свертки:

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

А при перемещении этого фильтра в другие регионы мы получаем относительно небольшое значение:

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

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

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

Фильтр для первого сверточного слоя фактической CNN (AlexNet) >

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

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

Обратитесь к предыдущим статьям«Почему ахроматики (черный, белый и серый) гармонично сочетаются с любым цветом в цветовом сочетании? 》

Фильтр последнего слоя может активироваться при обнаружении лица, рукописного шрифта и т.п. в соответствии с целью обучения CNN [1].

Так что в значительной степени задача построения сверточной нейронной сети состоит в том, чтобы построить эти фильтры. То есть, превратив эти фильтры в такие (изменив значение матрицы фильтра, то есть Веса) - можно выявить специфические особенности. Этот процесс называется обучением.

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

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

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

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

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

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

Но для обучения у нас есть Gound Thuth — категория объекта на этой картинке: [0, 0, 1, 0, 0, 0, 0, 0, 0, 0], относящаяся к третьей категории. В это время мы можем определить функцию потерь, такую ​​как обычная MSE (среднеквадратичная ошибка).

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

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

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

использованная литература:

[1] Zeiler, M. D., & Fergus, R. (2014, September). Visualizing and understanding convolutional networks. In European conference on computer vision (pp. 818-833). Springer, Cham.