Есть ли математические причины для свертки в нейронных сетях сверх целесообразности?


14

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

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

введите описание изображения здесь

Если бы мы сравнили приведенные шаги свертки с умножением регулярных матриц, как в других типах NN, целесообразность была бы ясным объяснением . Тем не менее, это может быть не самое подходящее сравнение ...

В цифровой обработке изображений применение свертки фильтра к изображению ( это отличное видео на YouTube для практической интуиции ), похоже, связано с:

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

В этой конкретной технической среде корреляция DSP определяется как:

Fя(Икс,Y)знак равноΣJзнак равно-NNΣязнак равно-NNF(я,J)я(Икс+я,Y+J)

которая по сути является суммой всех ячеек в произведении Адамара:

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

где - функция фильтра (выраженная в виде матрицы), а I ( x , y ) - значение пикселя изображения в местоположении ( x , y ) :F(i,j)I(x,y)(x,y)

введите описание изображения здесь

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


С другой стороны, свертка определяется как:

FI(x,y)=j=NNi=NNF(i,j)I(xi,yj)

что, пока фильтр симметричен, это то же самое, что и операция корреляции с перевернутыми строками и столбцами фильтра:

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

введите описание изображения здесь


[1474141626164726412674162616414741]

введите описание изображения здесь


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


Вопросы (формулировка после комментариев и первого ответа):

  1. Связано ли использование сверток в CNN с БПФ?

Из того, что я до сих пор собираю, ответ - нет. БПФ были использованы для ускорения реализации сверток в графических процессорах . Однако FFT обычно не являются частью структуры или функций активации в CNN, несмотря на использование сверток на этапах предварительной активации.

  1. Является ли свертка и взаимная корреляция в CNN эквивалентными?

Да, они эквивалентны.

  1. Если это просто как «нет никакой разницы», то какой смысл подбрасывать веса в матрицу ядра?

Ни ассоциативность свертки (полезная в математических доказательствах), ни какие-либо соображения относительно FT и теоремы о свертке не применимы. Фактически, кажется, что переворот даже не происходит (взаимная корреляция просто ошибочно обозначается как свертка) (?).


Антони, ты можешь указать на какой-нибудь источник, где они переворачивают весы? Как заметил @hossein, вы можете сделать что-нибудь с кросс-корреляцией, что вы можете сделать с извилинами, просто переключив порядок. Так что все эти вещи в частотной области не имеют значения.
seanv507

@ seanv507 Я отредактировал свой ОП, включив в него источник того, что, как мне кажется, вы спрашиваете у меня. Я понимаю, что свертка - это та же операция, что и взаимная корреляция с перевернутой матрицей фильтра, но я не понимаю, почему мы переходим к «боли» дискретной свертки, если в ней нет ничего, что не могло бы быть выполнено с корреляцией. Приведенный ответ явно хорошо осведомлен, но его можно включить в комментарий, и он не объясняет причину двух отдельных операций (это «традиция» от DSP, перенесенную на ML?), Последствия для процесса обучения, и отношение к FT.
Антони Пареллада

1
Антони, переворачивать не нужно. Это скорее соглашение; в dsp люди говорят о свертке, а не о кросскорреляции, и кросскорреляционные нейронные сети не скатываются с языка. Но более естественной (для людей, чтобы интерпретировать) операцией является кросс-корреляция (вы сопоставляете шаблон) для CNN (рассмотрите, например, фильтр вертикальной кромки, а не симметрию вращения). Поэтому я думаю, что Хьюго Ларошелль, возможно, говорит о числовых библиотеках, где свертка, а не взаимная корреляция, является стандартной функцией (он фактически говорит, что взаимная корреляция может быть сделана путем свертки)
seanv507

1
Антони, согласись на 2 первых вопроса / ответа, и мой комментарий отвечал на 3-й вопрос.
seanv507

1
Хотя не обязательно существует прямая связь между CNN и FFT, есть свидетельства, которые показывают, что вы можете получить ускорение CNN, используя FFT, когда сохраняете обычную сумму свертки. Смотрите здесь, например: arxiv.org/pdf/1312.5851.pdf
Алекс Р.

Ответы:


8

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

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

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

«Единственная причина перевернуть ядро ​​- получить коммутативное свойство. Хотя коммутативное свойство полезно для написания доказательств, оно обычно не является важным свойством реализации нейронной сети ... Многие библиотеки машинного обучения реализуют взаимную корреляцию, но вызывают это свертка. ".

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


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

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

+1 к объяснению Хоссейнов, но -1 для ссылки в блоге. Блог в основном посвящен аппаратному обеспечению, и он - специалист по КС, не имеющий опыта в свертке и других концепциях обработки сигналов.
seanv507

Я хотел бы по-прежнему настаивать на наличии дополнительного параграфа о связи (или ее отсутствии) между сверткой в ​​CNN и преобразованиями Фурье.
Антони Пареллада

2

Существует практическая причина связи между БПФ и сверткой.

Свертка медленная в области времени / изображения. ПрименяяN×N фильтр на один пиксель требует О(N2)умножения и сложения. Применяя его к каждому пикселю вN×N Таким образом, изображение требует N2N2операции. Это быстро растет, и большое количество операций не только требует дополнительного времени, но также вносит больше числовой ошибки.

Теорема о свертке говорит, что свертка во временной области эквивалентна точечному умножению в частотной области. БПФ быстрые: у них хорошая асимптотикаО(N2журналN2)и фактические реализации часто высоко оптимизированы. Таким образом, переключение на область Фурье позволяет выполнить свертку вО(N2) время (в котором преобладает точечное умножение), а не О(N2N2), Это может обеспечить значительное ускорение, даже если кажется, что идти по пути FFT -> умножение -> обратный FFT намного сложнее. Больше здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.