Я изучаю сверточные нейронные сети (CNN) из-за их применения в компьютерном зрении. Я уже знаком со стандартными нейронными сетями feed-foward, поэтому я надеюсь, что некоторые люди здесь могут помочь мне сделать дополнительный шаг в понимании CNN. Вот что я думаю о CNN:
- В традиционных NN с прямой связью у нас есть обучающие данные, где каждый элемент состоит из вектора признаков, который мы вводим в NN на «входном слое», поэтому при распознавании изображений мы можем просто сделать каждый пиксель одним входом. Это наши векторы функций. В качестве альтернативы, мы могли бы вручную создать другие - вероятно, меньшие - векторные векторы.
- Преимущество CNN состоит в том, что он может генерировать более сильные векторы признаков, которые более инвариантны к искажению изображения и положению. Как показано на следующем рисунке (из этого руководства ), CNN генерируют карты функций, которые затем передаются в стандартную нейронную сеть (так что на самом деле это гигантский этап предварительной обработки).
- То, как мы получаем эти «лучшие» функции, - это чередование свертки и подвыборки. Я понимаю, как работает подвыборка. Для каждой карты объектов просто возьмите подмножество пикселей, или мы можем усреднить значения пикселей.
Но то, что я в основном смущен, - то, как работает шаг свертки. Я знаком с извилинами из теории вероятностей (плотность для суммы двух случайных величин), но как они работают в CNN и почему они эффективны?
Мой вопрос похож на этот, но, в частности, я не уверен, почему первый шаг свертки работает.
источник
Понятия не имею, что вы подразумеваете под «почему работает первый шаг свертки». Чтобы CNN был успешным, он должен иметь много слоев. Одна из фундаментальных идей, лежащих в основе CNN и многих других подходов глубокого обучения, заключается в том, что более крупные сигналы могут быть идентифицированы по пространственной корреляции их меньших частей, которые могут быть представлены редко. Другими словами, изображения могут выглядеть сложными, но они сделаны из комбинации нескольких основных частей. Для компьютерного зрения базовая структура изображений обычно состоит из краев и углов. CNN пытается использовать разреженность структуры в изображении путем поиска общих локализованных структур. Это то, что пытается определить первый слой CNN. Думайте о свертке как о фильтре соответствия, который ищет сигналы, которые соответствуют определенному шаблону. Насколько хорошо это работает, зависит от имеющихся данных. К счастью, мир полон повторений в небольших масштабах, поэтому CNN хорошо работает для задач компьютерного зрения.
источник
Это видео довольно хорошо объясняет основы свертки.
источник