Что делает шаг свертки в сверточной нейронной сети?

16

Я изучаю сверточные нейронные сети (CNN) из-за их применения в компьютерном зрении. Я уже знаком со стандартными нейронными сетями feed-foward, поэтому я надеюсь, что некоторые люди здесь могут помочь мне сделать дополнительный шаг в понимании CNN. Вот что я думаю о CNN:

  1. В традиционных NN с прямой связью у нас есть обучающие данные, где каждый элемент состоит из вектора признаков, который мы вводим в NN на «входном слое», поэтому при распознавании изображений мы можем просто сделать каждый пиксель одним входом. Это наши векторы функций. В качестве альтернативы, мы могли бы вручную создать другие - вероятно, меньшие - векторные векторы.
  2. Преимущество CNN состоит в том, что он может генерировать более сильные векторы признаков, которые более инвариантны к искажению изображения и положению. Как показано на следующем рисунке (из этого руководства ), CNN генерируют карты функций, которые затем передаются в стандартную нейронную сеть (так что на самом деле это гигантский этап предварительной обработки).

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

  1. То, как мы получаем эти «лучшие» функции, - это чередование свертки и подвыборки. Я понимаю, как работает подвыборка. Для каждой карты объектов просто возьмите подмножество пикселей, или мы можем усреднить значения пикселей.

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

Мой вопрос похож на этот, но, в частности, я не уверен, почему первый шаг свертки работает.

Специалист в области информатики
источник

Ответы:

16

Сначала я попытаюсь поделиться некоторой интуицией за CNN, а затем прокомментирую конкретные темы, которые вы перечислили.

Слои свертки и подвыборки в CNN не отличаются от скрытых слоев в общей MLP, т.е. их функция состоит в извлечении признаков из их ввода. Эти функции затем передаются следующему скрытому слою для извлечения еще более сложных объектов, или непосредственно передаются стандартному классификатору для вывода окончательного прогноза (обычно можно использовать Softmax, но также можно использовать SVM или любой другой). В контексте распознавания изображений эти функции представляют собой изображения, такие как узоры штрихов в нижних слоях и части объектов в верхних слоях.

На естественных изображениях эти особенности имеют тенденцию быть одинаковыми во всех местах. Распознавание определенного рисунка обводки в середине изображений будет столь же полезным, как и распознавание его вблизи границ. Так почему бы нам не повторить скрытые слои и соединить их несколько копий во всех областях входного изображения, чтобы одни и те же объекты можно было обнаружить где угодно? Это именно то, что делает CNN, но эффективным способом. После репликации (шаг «свертка») мы добавляем шаг подвыборки, который может быть реализован разными способами, но не более чем подвыборка. Теоретически этот шаг может быть даже удален, но на практике он необходим для того, чтобы проблема оставалась поддающейся решению.

Таким образом:

  1. Верный.
  2. Как объяснено выше, скрытые слои CNN являются экстракторами признаков, как в обычном MLP. Чередующиеся этапы свертки и подвыборки выполняются во время обучения и классификации, поэтому они не являются чем-то выполненным «до» фактической обработки. Я бы не назвал их «предварительной обработкой», так же как и скрытые слои MLP.
  3. Верный.

3×35×5

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

9

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

Сол Берардо
источник
Благодарю за разъяснение. Я проверю ту туториал, который вы упомянули.
ComputerScientist
Действительно приятная иллюстративная графика. См. Референц-работу: М. Эгмонт-Петерсен, Д. де Риддер, Х. Гендельс. Обработка изображений с помощью нейронных сетей - обзор, Pattern Recognition, Vol. 35, No. 10, pp. 2279-2301, 2002
Match Maker EE
Четыре года спустя, и теперь я работаю с CNN почти каждый день. Это сообщение от @Saul Berardo действительно помогло мне встать на правильный путь :)
ComputerScientist
1

Понятия не имею, что вы подразумеваете под «почему работает первый шаг свертки». Чтобы CNN был успешным, он должен иметь много слоев. Одна из фундаментальных идей, лежащих в основе CNN и многих других подходов глубокого обучения, заключается в том, что более крупные сигналы могут быть идентифицированы по пространственной корреляции их меньших частей, которые могут быть представлены редко. Другими словами, изображения могут выглядеть сложными, но они сделаны из комбинации нескольких основных частей. Для компьютерного зрения базовая структура изображений обычно состоит из краев и углов. CNN пытается использовать разреженность структуры в изображении путем поиска общих локализованных структур. Это то, что пытается определить первый слой CNN. Думайте о свертке как о фильтре соответствия, который ищет сигналы, которые соответствуют определенному шаблону. Насколько хорошо это работает, зависит от имеющихся данных. К счастью, мир полон повторений в небольших масштабах, поэтому CNN хорошо работает для задач компьютерного зрения.

SimpleLikeAnEgg
источник
Да, я думаю, что это общая идея. Мне было непонятно в моем первоначальном вопросе, но мне было интересно, почему математика сработала, т. Е. Почему свойство свертки само по себе позволяет первому слою находить эти маленькие части.
ComputerScientist
1
Узнайте больше о свертке и согласованной фильтрации. Когда ядро ​​свертки соответствует сигналу, оно дает наибольшую отдачу.
SimpleLikeAnEgg