Dans les réseaux de neurones convolutifs (CNN), la matrice de poids à chaque étape obtient ses lignes et colonnes inversées pour obtenir la matrice du noyau, avant de procéder à la convolution. Ceci est expliqué sur une série de vidéos de Hugo Larochelle ici :
Calculer les cartes cachées correspondrait à faire une convolution discrète avec un canal de la couche précédente, en utilisant une matrice de noyau [...], et ce noyau est calculé à partir de la matrice de poids cachée , où nous inversons les lignes et les Colonnes.
Si nous devions comparer les étapes réduites d'une convolution à une multiplication matricielle régulière comme dans d'autres types de NN, l' opportunité serait une explication claire . Cependant, ce n'est peut-être pas la comparaison la plus pertinente ...
Dans le traitement d'imagerie numérique, l'application de la convolution d'un filtre à une image ( c'est une excellente vidéo YouTube pour une intuition pratique ) semble liée à:
- Le fait que la convolution est associative alors que la corrélation ( croisée) ne l'est pas.
- La possibilité d'appliquer des filtres dans le domaine fréquentiel de l'image comme multiplications, car la convolution dans le domaine temporel équivaut à la multiplication dans le domaine fréquentiel ( théorème de convolution ).
Dans cet environnement technique particulier, la corrélation DSP est définie comme:
qui est essentiellement la somme de toutes les cellules d'un produit Hadamard:
où est une fonction de filtre (exprimée sous forme de matrice) et I ( x , y ) est la valeur en pixels d'une image à l'emplacement ( x , y ) :
L' objectif de la corrélation croisée est d'évaluer la similitude d'une image de sonde avec une image de test. Le calcul d'une carte de corrélation croisée repose sur le théorème de convolution.
D'autre part, la convolution est définie comme:
qui tant que le filtre est symétrique, c'est la même chose qu'une opération de corrélation avec les lignes et colonnes du filtre retourné:
La convolution dans DSP est destinée à appliquer des filtres à l'image (par exemple, lissage, netteté). Par exemple, après convolution du visage de Joseph Fourier avec un filtre de convolution gaussien : les bords de son visage sont plus flous:
Calculativement, les deux opérations sont un produit intérieur de Frobenius, ce qui revient à calculer la trace d'une multiplication matricielle .
Questions (reformulation après commentaires et première réponse):
- L'utilisation des convolutions dans CNN est-elle liée à la FFT?
D'après ce que je comprends jusqu'à présent, la réponse est non. Les FFT ont été utilisées pour accélérer la mise en œuvre GPU des convolutions . Cependant, les FFT ne font généralement pas partie de la structure ou des fonctions d'activation dans les CNN, malgré l'utilisation de convolutions dans les étapes de pré-activation.
- La convolution et la corrélation croisée dans CNN sont-elles équivalentes?
Oui, ils sont équivalents.
- Si c'est simple comme "il n'y a pas de différence", quel est l'intérêt de retourner les poids dans la matrice du noyau?
Ni l'associativité de la convolution (utile dans les preuves mathématiques), ni aucune considération concernant les FT et le théorème de convolution ne sont applicables. En fait, il semble que le retournement n'ait même pas lieu (la corrélation croisée étant simplement mal étiquetée comme convolution) (?).
la source
Réponses:
Il n'y a aucune différence dans ce que les réseaux de neurones peuvent faire lorsqu'ils utilisent la convolution ou la corrélation. En effet, les filtres sont appris et si un CNN peut apprendre à effectuer une tâche particulière à l'aide d'une opération de convolution, il peut également apprendre à effectuer la même tâche à l'aide d'une opération de corrélation (il apprendrait la version pivotée de chaque filtre).
Pour trouver plus de détails sur les raisons pour lesquelles les gens trouvent parfois plus intuitif de penser à la convolution qu'à la corrélation, ce message peut être utile.
Reste cette question: s'il n'y a pas de différence entre convolution et corrélation croisée, quel est l'intérêt de retourner les poids dans la matrice du noyau? Je voudrais inclure quelques phrases tirées du livre Deep learning de Ian Goodfellow et al. pour répondre à cette question:
"La seule raison de retourner le noyau est d'obtenir la propriété commutative. Bien que la propriété commutative soit utile pour écrire des preuves, ce n'est généralement pas une propriété importante d'une implémentation de réseau de neurones ... De nombreuses bibliothèques d'apprentissage automatique implémentent la corrélation croisée mais appellent il convolution. "
La conclusion est que, bien que la convolution soit une opération préférée dans les applications classiques de vision industrielle, elle est remplacée par une corrélation dans de nombreuses implémentations des réseaux de neurones convolutionnels.
la source
Il existe une raison pratique pour le lien entre les FFT et la convolution.
La convolution est lente dans le domaine temps / image. Appliquer unn × n filtrer sur un pixel nécessite O ( n2) multiplications et ajouts. En l'appliquant à chaque pixel d'unN× N l'image nécessite donc n2N2 opérations. Cela croît rapidement et le grand nombre d'opérations nécessite non seulement du temps supplémentaire, mais introduit également plus d'erreurs numériques.
Le théorème de convolution dit que la convolution dans le domaine temporel équivaut à une multiplication ponctuelle dans le domaine fréquentiel. Les FFT sont rapides: elles ont de bonnes performances asymptotiquesO ( N2JournalN2) et les implémentations réelles sont souvent hautement optimisées. Le passage au domaine de Fourier permet donc d'effectuer une convolution dansO ( N2) temps (qui est dominé par la multiplication ponctuelle), au lieu de O ( n2N2) . Cela peut fournir une accélération considérable, même s'il semble beaucoup plus compliqué de descendre la route FFT -> multiplication -> FFT inverse. Plus ici
la source