Nelle reti neurali convoluzionali (CNN) la matrice di pesi ad ogni passo viene capovolta per ottenere righe e colonne per ottenere la matrice del kernel, prima di procedere con la convoluzione. Questo è spiegato in una serie di video di Hugo Larochelle qui :
Il calcolo delle mappe nascoste corrisponderebbe al fare una convoluzione discreta con un canale dal livello precedente, usando una matrice del kernel [...] e quel kernel viene calcolato dalla matrice dei pesi nascosti , dove capovolgiamo le righe e il colonne.
Se dovessimo confrontare i passi ridotti di una convoluzione con la moltiplicazione di matrice regolare come in altri tipi di NN, la convenienza sarebbe una chiara spiegazione . Tuttavia, questo potrebbe non essere il confronto più pertinente ...
Nell'elaborazione di immagini digitali l'applicazione della convoluzione di un filtro a un'immagine ( questo è un ottimo video di YouTube per un'intuizione pratica ) sembra correlata a:
- Il fatto che la convoluzione sia associativa mentre la correlazione (incrociata) non lo è.
- La possibilità di applicare filtri nel dominio della frequenza dell'immagine come moltiplicazioni, poiché la convoluzione nel dominio del tempo è equivalente alla moltiplicazione nel dominio della frequenza ( teorema di convoluzione ).
In questo particolare ambiente tecnico la correlazione DSP è definita come:
che è essenzialmente la somma di tutte le celle di un prodotto Hadamard:
dove è una funzione di filtro (espressa come una matrice) e I ( x , y ) è il valore in pixel di un'immagine nella posizione ( x , y ) :
L' obiettivo della correlazione incrociata è valutare la somiglianza tra un'immagine della sonda e un'immagine di prova. Il calcolo di una mappa di correlazione incrociata si basa sul teorema di convoluzione.
D'altra parte, la convoluzione è definita come:
che fintanto che il filtro è simmetrico, equivale a un'operazione di correlazione con le righe e le colonne del filtro capovolto:
Computazionalmente, entrambe le operazioni sono un prodotto interno di Frobenius, che equivale a calcolare la traccia di una moltiplicazione di matrice .
Domande (riformulazione dopo commenti e prima risposta):
- L'uso delle convoluzioni nella CNN è collegato alla FFT?
Da quello che raccolgo finora la risposta è no. Gli FFT sono stati utilizzati per accelerare le implementazioni GPU delle convoluzioni . Tuttavia, le FFT di solito non fanno parte della struttura o delle funzioni di attivazione nelle CNN, nonostante l'uso di convoluzioni nelle fasi di pre-attivazione.
- La convoluzione e la correlazione incrociata nella CNN sono equivalenti?
Sì, sono equivalenti.
- Se è semplice come "non c'è alcuna differenza", che senso ha capovolgere i pesi nella matrice del kernel?
Né l'associatività della convoluzione (utile nelle prove matematiche), né alcuna considerazione relativa agli FT e al teorema della convoluzione sono applicabili. In effetti, sembra che il lancio non abbia nemmeno luogo (la correlazione incrociata viene semplicemente etichettata come convoluzione) (?).