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