J'étudie les réseaux de neurones convolutifs (CNN) en raison de leurs applications en vision par ordinateur. Je connais déjà les réseaux de neurones standard à alimentation, donc j'espère que certaines personnes ici peuvent m'aider à faire un pas de plus dans la compréhension des CNN. Voici ce que je pense des CNN:
- Dans les NN traditionnels, nous avons des données d'apprentissage où chaque élément se compose d'un vecteur caractéristique que nous entrons dans le NN dans la "couche d'entrée", donc avec la reconnaissance d'image, nous pourrions simplement avoir chaque pixel comme une entrée. Ce sont nos vecteurs de fonctionnalités. Alternativement, nous pourrions créer manuellement d'autres vecteurs de caractéristiques - probablement plus petits -.
- L'avantage du CNN est qu'il peut générer des vecteurs de caractéristiques plus forts qui sont plus invariants à la distorsion et à la position de l'image. Comme le montre l'image suivante (à partir de ce tutoriel ), les CNN génèrent des cartes d'entités qui sont ensuite alimentées vers un réseau de neurones standard (donc c'est vraiment une étape de prétraitement géante).
- Nous obtenons ces «meilleures» fonctionnalités en alternant convolution et sous-échantillonnage. Je comprends le fonctionnement du sous-échantillonnage. Pour chaque carte d'entités, prenez simplement un sous-ensemble des pixels, ou nous pouvons faire la moyenne des valeurs des pixels.
Mais ce que je suis principalement confus, c'est comment fonctionne l'étape de convolution. Je connais les convolutions de la théorie des probabilités (densité pour la somme de deux variables aléatoires), mais comment fonctionnent-elles dans les CNN et pourquoi sont-elles efficaces?
Ma question est similaire à celle-ci mais en particulier, je ne sais pas pourquoi la première étape de convolution fonctionne.