Come funziona la retro-propagazione in una rete neurale siamese?


13

Ho studiato l'architettura della rete neurale siamese introdotta da Yann LeCun e dai suoi colleghi nel 1994 per il riconoscimento delle firme ( "Verifica della firma usando una rete neurale siamese di ritardo" .pdf , NIPS 1994)

Ho capito l'idea generale di questa architettura, ma non riesco davvero a capire come funziona la backpropagation in questo caso. Non riesco a capire quali sono i valori target della rete neurale, che consentiranno alla backpropagation di impostare correttamente i pesi di ciascun neurone.

Immagine tratta da "Probabilistic Siamese Network for Learning Representations" di Chen Liu (University of Toronto 2013).

In questa architettura, l'algoritmo calcola la somiglianza del coseno tra le rappresentazioni finali delle due reti neurali Il documento afferma: "L'output desiderato è per un piccolo angolo tra gli output delle due sottoreti (f1 e f2) quando vengono presentate le firme autentiche e un grande angolo se una delle firme è un falso ".

Non riesco davvero a capire come potrebbero usare una funzione binaria (somiglianza del coseno tra due vettori) come obiettivo per eseguire la backpropagation.

Come viene calcolata la backpropagation nelle reti neurali siamesi?


non riesco a scaricare il documento .... hai un'altra fonte o dropbox?
Brethlosze,

Risposte:


11

Entrambe le reti condividono architetture simili e tuttavia sono costrette ad avere gli stessi pesi descritti nella pubblicazione nella sezione 4 [1].

Il loro obiettivo è apprendere funzionalità che minimizzino la somiglianza del coseno tra i loro vettori di output quando le firme sono autentiche e massimizzarle quando vengono forgiate (questo è anche l'obiettivo del backprop, ma la funzione di perdita effettiva non viene presentata).

cos(A,B)=ABABA,B

O1O2cos(O1,O2)10XForged,XGenuine

L=(xA,xB)XForgedcos(xA,xB)(xC,xD)XGenuinecos(xC,xD)

cos(O1,O2)

Infine, per mantenere identici i pesi della rete ci sono diversi modi per farlo (e sono usati anche nelle reti neurali ricorrenti); un approccio comune è la media dei gradienti delle due reti prima di eseguire la fase di aggiornamento della discesa del gradiente.

[1] http://papers.nips.cc/paper/769-signature-verification-using-a-siamese-time-delay-neural-network.pdf


So che l'obiettivo è minimizzare la somiglianza del coseno, ma non riesco a capire cosa dovrei inserire nel livello di output della mia rete neurale. Quando creo la rete neurale, inserisco i target nell'ultimo livello di output. Se sono valori, va bene. Ma se il target è una funzione, dove trovo i valori da riempire? Grazie
DavideChicco.it

Ho aggiornato la mia risposta. Il tuo livello di output sarà solo un altro livello normale che genera alla funzione di somiglianza del coseno. Le due reti collegate alla funzione di somiglianza del coseno dovrebbero essere addestrate insieme contro un criterio di perdita. Infine, ti ho suggerito la perdita più semplice che potresti avere in questo caso.
Yannis Assael,

1
Grazie. Penso di aver capito il mio problema: è l'implementazione di questa architettura di rete neurale in Torch7. Qui, prima della formazione e dei test, durante la costruzione della rete neurale, devo specificare molte cose, inclusi i valori del set di dati di input e i valori del layer target di output . In passato, ho affrontato problemi supervisionati che avevano sempre valori di layer target-output fissi (ad es. Etichette true / false o valori nell'intervallo [0, 1]). Ma questa volta è diverso: il livello di output è una funzione che dipende da due valori che verranno calcolati durante l'allenamento. È corretto?
DavideChicco.it

noutputnoutput

Grazie @iassael. Hai idea di come implementarlo in Torch7?
DavideChicco.it
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.