En utilisant la notation de la page wikipedia, la convolution dans un CNN va être le noyau dont nous apprendrons quelques poids afin d'extraire les informations dont nous avons besoin et ensuite peut-être d'appliquer une fonction d'activation.g
Convolutions discrètes
À partir de la page wikipedia, la convolution est décrite comme
( f∗ g) [ n ] =∑infm = - infF[ m ] g[ n - m ]
Par exemple, en supposant est la fonction et est la fonction de convolution ,uneFbg
Pour résoudre ce problème, nous pouvons d'abord utiliser l'équation, nous inversons la fonction verticalement, en raison du qui apparaît dans l'équation. Ensuite, nous calculerons la somme pour chaque valeur de . Lors de la modification de , la fonction d'origine ne bouge pas, mais la fonction de convolution est décalée en conséquence. À partir de ,b- mnnn = 0
c [ 0 ] =∑ma [ m ] b [ - m ] = 0 ∗ 0,25 + 0 ∗ 0,5 + 1 ∗ 1 + 0,5 ∗ 0 + 1 ∗ 0 + 1 ∗ 0 = 1
c [ 1 ] =∑ma [ m ] b [ - m ] = 0 ∗ 0,25 + 1 ∗ 0,5 + 0,5 ∗ 1 + 1 ∗ 0 + 1 ∗ 0 = 1
c [ 2 ] =∑ma [ m ] b [ - m ] = 1 ∗ 0,25 + 0,5 ∗ 0,5 + 1 ∗ 1 + 1 ∗ 0 + 1 ∗ 0 = 1,5
c [ 3 ] =∑ma [ m ] b [ - m ] = 1 ∗ 0 + 0,5 ∗ 0,25 + 1 ∗ 0,5 + 1 ∗ 1 = 1,625
c [ 4 ] =∑ma [ m ] b [ - m ] = 1 ∗ 0 + 0,5 ∗ 0 + 1 ∗ 0,25 + 1 ∗ 0,5 + 0 ∗ 1 = 0,75
c [ 5 ] =∑ma [ m ] b [ - m ] = 1 ∗ 0 + 0,5 ∗ 0 + 1 ∗ 0 + 1 ∗ 0,25 + 0 ∗ 0,5 ∗ 0 ∗ 1 = 0,25
Comme vous pouvez le voir, c'est exactement ce que nous obtenons sur le graphique . Nous avons donc déplacé la fonction sur la fonction .c [ n ]b [ n ]un [ n ]
Convolution discrète 2D
Par exemple, si nous avons la matrice en vert
avec le filtre à convolution
Ensuite, l'opération résultante est une multiplication par élément et l'addition des termes comme indiqué ci-dessous. Tout comme le montre la page wikipedia, ce noyau (matrice orange) est déplacé sur toute la fonction (matrice verte) .gF
extrait du lien référencé @Hobbes. Vous remarquerez qu'il n'y a pas de retournement du noyau comme nous l'avons fait pour le calcul explicite de la convolution ci-dessus. C'est une question de notation comme le souligne @Media. Cela devrait être appelé corrélation croisée. Cependant, sur le plan du calcul, cette différence n'affecte pas les performances de l'algorithme car le noyau est entraîné de telle sorte que ses pondérations sont les mieux adaptées à l'opération, l'ajout de l'opération de basculement obligerait simplement l'algorithme à apprendre les pondérations dans différentes cellules du noyau pour accueillir le flip. Nous pouvons donc omettre le flip.g