Ci sono ragioni matematiche per la convoluzione nelle reti neurali oltre l'opportunità?


14

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 Wij , dove capovolgiamo le righe e il colonne.

inserisci qui la descrizione dell'immagine

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:

  1. Il fatto che la convoluzione sia associativa mentre la correlazione (incrociata) non lo è.
  2. 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:

FI(x,y)=j=NNi=NNF(i,j)I(x+i,y+j)

che è essenzialmente la somma di tutte le celle di un prodotto Hadamard:

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

dove è una funzione di filtro (espressa come una matrice) e I ( x , y ) è il valore in pixel di un'immagine nella posizione ( x , y ) :F(i,j)I(x,y)(x,y)

inserisci qui la descrizione dell'immagine

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:

FI(x,y)=j=NNi=NNF(i,j)I(xi,yj)

che fintanto che il filtro è simmetrico, equivale a un'operazione di correlazione con le righe e le colonne del filtro capovolto:

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

inserisci qui la descrizione dell'immagine


[1474141626164726412674162616414741]

inserisci qui la descrizione dell'immagine


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):

  1. 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.

  1. La convoluzione e la correlazione incrociata nella CNN sono equivalenti?

Sì, sono equivalenti.

  1. 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) (?).


Antoni puoi indicare una fonte in cui capovolgono i pesi? Come ha sottolineato @hossein, puoi fare qualsiasi cosa con la crosscorrelation che puoi fare con le convoluzioni, semplicemente lanciando l'ordinamento. Quindi tutta questa roba nel dominio della frequenza è irrilevante.
seanv507,

@ seanv507 Ho modificato il mio PO per includere la fonte di ciò che credo tu mi stia chiedendo. Capisco che la convoluzione sia la stessa operazione della correlazione incrociata con una matrice di filtri capovolta, ma non capisco perché superiamo il "dolore" della convoluzione discreta se non c'è nulla che non possa essere realizzato con correlazione. La risposta fornita è chiaramente ben informata, ma potrebbe essere inserita in un commento e non spiega il motivo di due operazioni distinte (è una "tradizione" dal DSP trasferita alla ML?), Le implicazioni sul processo di apprendimento, e la relazione con FT.
Antoni Parellada,

1
Antoni, non è necessario capovolgere. È più una convenzione; in dsp le persone parlano di convoluzione piuttosto che di correlazione incrociata, e le reti neuronali correlazionali non rotolano fuori dalla lingua. Ma l'operazione più naturale (da interpretare per gli esseri umani) è la correlazione incrociata (sei la corrispondenza dei modelli) per la CNN (si consideri ad esempio un filtro per bordi verticali anziché un simmetrico di rotazione). Quindi penso che Hugo Larochelle stia forse parlando di biblioteche numeriche in cui la convoluzione piuttosto che la correlazione incrociata è una funzione standard (sta effettivamente dicendo che la correlazione incrociata può essere fatta da una convoluzione)
seanv507

1
Antoni, concordo sulle 2 prime domande / risposte e il mio commento stava rispondendo alla 3a domanda.
seanv507,

1
Sebbene non vi sia necessariamente un collegamento diretto tra CNN e FFT, esistono prove che dimostrano che è possibile ottenere un aumento della velocità della CNN utilizzando FFT quando si conserva la consueta somma di convoluzione. Vedi qui per esempio: arxiv.org/pdf/1312.5851.pdf
Alex R.

Risposte:


8

Non ci sono differenze in ciò che le reti neurali possono fare quando usano la convoluzione o la correlazione. Questo perché i filtri vengono appresi e se una CNN può imparare a svolgere una determinata attività utilizzando l'operazione di convoluzione, può anche imparare a fare la stessa attività utilizzando l'operazione di correlazione (Imparerebbe la versione ruotata di ciascun filtro).

Per trovare maggiori dettagli sui motivi per cui le persone a volte trovano più intuitivo pensare alla convoluzione piuttosto che alla correlazione, questo post può essere utile.

Resta questa domanda che se non vi è alcuna differenza tra convoluzione e correlazione incrociata, qual è il punto di invertire i pesi nella matrice del kernel? Vorrei includere alcune frasi del libro di Deep learning di Ian Goodfellow et al. per rispondere a questa domanda:

"L'unico motivo per capovolgere il kernel è ottenere la proprietà commutativa. Mentre la proprietà commutativa è utile per scrivere prove, di solito non è una proprietà importante di un'implementazione di una rete neurale ... Molte librerie di machine learning implementano la correlazione incrociata ma chiamano convoluzione " .

L'aspetto da asporto è che sebbene la convoluzione sia un'operazione preferita nelle classiche applicazioni di visione artificiale, è sostituita dalla correlazione in molte delle implementazioni delle reti neurali convoluzionali.


Grazie. Ho letto con attenzione il blog a cui ti colleghi, e sembra che l'uso della convoluzione non sia semplicemente equivalente alla correlazione e risponda alla selezione delle funzioni del dominio di frequenza. Sto cercando una risposta elaborando su questo.
Antoni Parellada,

Come so, sono equivalenti in ciò che possono fare , dal momento che entrambi fanno un prodotto punto di due matrici, ma la convoluzione lancia la matrice del filtro prima del prodotto punto, e poiché le CNN apprendono i filtri, possono imparare i filtri capovolti.
Hossein,

+1 alla spiegazione di Hosseins, ma -1 per il link al blog. Il blog si concentra principalmente sull'hardware ed è un ragazzo CS senza esperienza in convoluzione e altri concetti di elaborazione del segnale.
seanv507,

Vorrei insistere ancora per avere qualche paragrafo aggiuntivo sulla relazione (o mancanza di ciò) tra la convoluzione nelle CNN e le trasformazioni di Fourier.
Antoni Parellada,

2

C'è un motivo pratico per il legame tra FFT e convoluzione.

La convoluzione è lenta nel dominio tempo / immagine. Applicando unn×n richiede un filtro per un pixel O(n2)moltiplicazioni e aggiunte. Applicandolo a ogni pixel in unN×N l'immagine richiede quindi n2N2operazioni. Ciò cresce rapidamente e il gran numero di operazioni non richiede solo tempi supplementari, ma introduce anche più errori numerici.

Il teorema della convoluzione afferma che la convoluzione nel dominio del tempo equivale alla moltiplicazione puntuale nel dominio della frequenza. Gli FFT sono veloci: hanno buone prestazioni asintoticheO(N2logN2)e le implementazioni effettive sono spesso altamente ottimizzate. Passare al dominio Fourier consente quindi di eseguire una convoluzione inO(N2) tempo (che è dominato dalla moltiplicazione puntuale), invece di O(n2N2). Questo può fornire un notevole aumento di velocità, anche se sembra molto più complicato percorrere la rotta FFT inversa -> moltiplicazione ->. Più qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.