Estou estudando redes neurais convolucionais (CNNs) devido a suas aplicações em visão computacional. Já conheço as redes neurais padrão de feed-forward, por isso espero que algumas pessoas aqui possam me ajudar a dar um passo extra na compreensão das CNNs. Aqui está o que penso sobre as CNNs:
- Nas NNs tradicionais de feed-forward, temos dados de treinamento em que cada elemento consiste em um vetor de característica que inserimos no NN na "camada de entrada", portanto, com o reconhecimento de imagem, poderíamos ter cada pixel como uma entrada. Esses são nossos vetores de recursos. Como alternativa, poderíamos criar manualmente outros vetores de recursos, provavelmente menores.
- A vantagem da CNN é que ela pode gerar vetores de características mais fortes e mais invariantes à distorção e posição da imagem. Como mostra a imagem a seguir ( deste tutorial ), as CNNs geram mapas de recursos que são alimentados em uma rede neural padrão (na verdade, é uma etapa gigante de pré-processamento).
- A maneira como obtemos esses recursos "melhores" é alternando convolução e subamostragem. Entendo como funciona a subamostragem. Para cada mapa de recursos, basta pegar um subconjunto de pixels, ou podemos calcular a média dos valores dos pixels.
Mas o que mais me deixa confuso é como a etapa de convolução funciona. Conheço as convoluções da teoria das probabilidades (densidade para a soma de duas variáveis aleatórias), mas como elas funcionam nas CNNs e por que são eficazes?
Minha pergunta é semelhante a esta, mas em particular, não sei por que o primeiro passo da convolução funciona.