Usando la notación de la página de wikipedia, la convolución en un CNN será el núcleo del cual aprenderemos algunos pesos para extraer la información que necesitamos y luego quizás aplicar una función de activación.sol
Circunvoluciones discretas
Desde la página de Wikipedia, la convolución se describe como
( f∗ g) [ n ] =∑infm = - infF[ m ] g[ n - m ]
Por ejemplo, suponiendo que es la función y es la función de convolución ,unaFsisol
Para resolver esto, podemos usar la ecuación primero, volteamos la función verticalmente, debido a la que aparece en la ecuación. Luego calcularemos la suma de cada valor de . Al cambiar , la función original no se mueve, sin embargo, la función de convolución se desplaza en consecuencia. Comenzando en ,si- mnortenorten = 0
c [ 0 ] =∑metroa [ m ] b [ - m ] = 0 ∗ 0.25 + 0 ∗ 0.5 + 1 ∗ 1 + 0.5 ∗ 0 + 1 ∗ 0 + 1 ∗ 0 = 1
c [ 1 ] =∑metroa [ m ] b [ - m ] = 0 ∗ 0.25 + 1 ∗ 0.5 + 0.5 ∗ 1 + 1 ∗ 0 + 1 ∗ 0 = 1
c [ 2 ] =∑metroa [ m ] b [ - m ] = 1 ∗ 0.25 + 0.5 ∗ 0.5 + 1 ∗ 1 + 1 ∗ 0 + 1 ∗ 0 = 1.5
c [ 3 ] =∑metroa [ m ] b [ - m ] = 1 ∗ 0 + 0.5 ∗ 0.25 + 1 ∗ 0.5 + 1 ∗ 1 = 1.625
c [ 4 ] =∑metroa [ m ] b [ - m ] = 1 ∗ 0 + 0.5 ∗ 0 + 1 ∗ 0.25 + 1 ∗ 0.5 + 0 ∗ 1 = 0.75
c [ 5 ] =∑metroa [ m ] b [ - m ] = 1 ∗ 0 + 0.5 ∗ 0 + 1 ∗ 0 + 1 ∗ 0.25 + 0 ∗ 0.5 ∗ 0 ∗ 1 = 0.25
Como puede ver, eso es exactamente lo que obtenemos en la gráfica . Entonces cambiamos la función sobre la función .c [ n ]b [ n ]a [ n ]
Convolución discreta 2D
Por ejemplo, si tenemos la matriz en verde
con el filtro de convolución
Entonces, la operación resultante es una multiplicación por elementos y la suma de los términos que se muestran a continuación. Al igual que muestra la página de Wikipedia, este núcleo (matriz naranja) se desplaza a través de toda la función (matriz verde) .solF
tomado del enlace que hace referencia a @Hobbes. Notarás que no hay volteo del kernel como lo hicimos para el cálculo explícito de la convolución anterior. Esto es una cuestión de notación como señala @Media. Esto debería llamarse correlación cruzada. Sin embargo, computacionalmente, esta diferencia no afecta el rendimiento del algoritmo porque el núcleo está siendo entrenado de tal manera que sus pesos son los más adecuados para la operación, por lo que agregar la operación de volteo simplemente haría que el algoritmo aprenda los pesos en diferentes celdas del núcleo para acomodar el flip. Entonces podemos omitir el cambio.sol