В сверточных нейронных сетях (CNN) матрица весов на каждом шаге переворачивает свои строки и столбцы для получения матрицы ядра, прежде чем приступить к свертке. Это объясняется в серии видео Хьюго Ларошелле здесь :
Вычисление скрытых карт будет соответствовать выполнению дискретной свертки с каналом из предыдущего уровня с использованием матрицы ядра [...], и это ядро вычисляется из матрицы скрытых весов , где мы переворачиваем строки и колонны.
Если бы мы сравнили приведенные шаги свертки с умножением регулярных матриц, как в других типах NN, целесообразность была бы ясным объяснением . Тем не менее, это может быть не самое подходящее сравнение ...
В цифровой обработке изображений применение свертки фильтра к изображению ( это отличное видео на YouTube для практической интуиции ), похоже, связано с:
- Тот факт, что свертка ассоциативна, а (перекрестная) корреляция - нет.
- Возможность применения фильтров в частотной области изображения в качестве умножения, поскольку свертка во временной области эквивалентна умножению в частотной области ( теорема о свертке ).
В этой конкретной технической среде корреляция DSP определяется как:
которая по сути является суммой всех ячеек в произведении Адамара:
где - функция фильтра (выраженная в виде матрицы), а I ( x , y ) - значение пикселя изображения в местоположении ( x , y ) :
Цель кросс-корреляции , чтобы оценить , насколько это похоже зонд изображение тестового изображения. Расчет взаимно-корреляционного отображения основан на теореме о свертке.
С другой стороны, свертка определяется как:
что, пока фильтр симметричен, это то же самое, что и операция корреляции с перевернутыми строками и столбцами фильтра:
В вычислительном отношении обе операции являются внутренним произведением Фробениуса, что составляет вычисление следа умножения матрицы .
Вопросы (формулировка после комментариев и первого ответа):
- Связано ли использование сверток в CNN с БПФ?
Из того, что я до сих пор собираю, ответ - нет. БПФ были использованы для ускорения реализации сверток в графических процессорах . Однако FFT обычно не являются частью структуры или функций активации в CNN, несмотря на использование сверток на этапах предварительной активации.
- Является ли свертка и взаимная корреляция в CNN эквивалентными?
Да, они эквивалентны.
- Если это просто как «нет никакой разницы», то какой смысл подбрасывать веса в матрицу ядра?
Ни ассоциативность свертки (полезная в математических доказательствах), ни какие-либо соображения относительно FT и теоремы о свертке не применимы. Фактически, кажется, что переворот даже не происходит (взаимная корреляция просто ошибочно обозначается как свертка) (?).
источник
Ответы:
Нет никаких различий в том, что нейронные сети могут делать, когда они используют свертку или корреляцию. Это потому, что фильтры изучены, и если CNN может научиться выполнять определенную задачу, используя операцию свертки, она также может научиться выполнять ту же задачу, используя операцию корреляции (она будет изучать повернутую версию каждого фильтра).
Чтобы найти более подробную информацию о причинах, по которым людям иногда кажется более интуитивным думать о свертке, чем о взаимосвязи, этот пост может быть полезен.
Остается вопрос: если нет разницы между сверткой и взаимной корреляцией, то какой смысл подбрасывать веса в матрицу ядра? Я хотел бы включить несколько предложений из книги глубокого обучения Яна Гудфеллоу и соавторов. чтобы ответить на этот вопрос:
«Единственная причина перевернуть ядро - получить коммутативное свойство. Хотя коммутативное свойство полезно для написания доказательств, оно обычно не является важным свойством реализации нейронной сети ... Многие библиотеки машинного обучения реализуют взаимную корреляцию, но вызывают это свертка. ".
Вывод заключается в том, что, хотя свёртка является любимой операцией в классических приложениях машинного зрения, она заменяется корреляцией во многих реализациях сверточных нейронных сетей.
источник
Существует практическая причина связи между БПФ и сверткой.
Свертка медленная в области времени / изображения. Применяяn × n фильтр на один пиксель требует O ( n2) умножения и сложения. Применяя его к каждому пикселю вN× N Таким образом, изображение требует N2N2 операции. Это быстро растет, и большое количество операций не только требует дополнительного времени, но также вносит больше числовой ошибки.
Теорема о свертке говорит, что свертка во временной области эквивалентна точечному умножению в частотной области. БПФ быстрые: у них хорошая асимптотикаO ( N2журналN2) и фактические реализации часто высоко оптимизированы. Таким образом, переключение на область Фурье позволяет выполнить свертку вO ( N2) время (в котором преобладает точечное умножение), а не O ( n2N2) , Это может обеспечить значительное ускорение, даже если кажется, что идти по пути FFT -> умножение -> обратный FFT намного сложнее. Больше здесь
источник