Derivando il gradiente di una rete neurale a singolo strato dai suoi input, qual è l'operatore nella regola della catena?


9

Il problema è:

Deriva il gradiente rispetto allo strato di input per una singola rete neurale a strato nascosto usando sigmoid per input -> nascosto, softmax per nascosto -> output, con una perdita di entropia incrociata.

Posso superare gran parte della derivazione usando la regola della catena, ma non sono sicuro su come "legarli" insieme.

Definisci alcune notazioni

r=xW1+b1

h=σ(r) , è la funzione sigmoidσ

θ=hW2+b2 ,

y^=S(θ) , è la funzione softmaxS

J(y^)=iylogy^i , è un vettore hot-label con etichetta realey

Quindi secondo la regola della catena,

Jx=Jθθhhrrx

I singoli gradienti sono:

Jθ=(y^y)
θh=h[hW2+b2]=W2T
hr=h(1h)
rx=x[xW1+b1]=W1T

Ora dobbiamo concatenare le definizioni. In una variabile è semplice, moltiplichiamo tutto insieme. Nei vettori, non sono sicuro se usare la moltiplicazione degli elementi o la moltiplicazione della matrice.

Jx=(y^y)W2T[h(1h)]W1T

Dove è la moltiplicazione dei vettori in termini di elementi e è una matrice moltiplicata. Questa combinazione di operazioni è l'unico modo in cui mi sembra di metterli insieme per ottenere un vettore di dimensione , che so che deve essere .1DxJx

La mia domanda è: qual è il modo di principio per me di capire quale operatore utilizzare? Sono specificamente confuso dalla necessità dell'elemento tra e .W2Th

Grazie!


Mi rendo conto che trovare il gradiente che si presenta agli input non viene fatto spesso. Credo che questo sia un vantaggio nel calcolo delle incorporazioni di parole, in cui hai la possibilità di ottimizzare i vettori di parole "input".
amatsukawa,

come sei dervie dJ / dTheta
raaj

Risposte:


4

Credo che la chiave per rispondere a questa domanda sia quella di sottolineare che la moltiplicazione in termini di elementi è in realtà una scorciatoia e quindi quando derivate le equazioni non la usate mai realmente.

L'operazione effettiva non è una moltiplicazione in termini di elementi ma invece una moltiplicazione di matrice standard di un gradiente con un giacobino , sempre .

Nel caso della non linearità, il giacobino dell'uscita vettoriale della non linearità rispetto all'input vettoriale della non linearità sembra essere una matrice diagonale. È quindi vero che il gradiente moltiplicato per questa matrice equivale al gradiente dell'output della non linearità rispetto all'elemento di perdita saggio moltiplicato per un vettore contenente tutte le derivate parziali della non linearità rispetto all'input della non linearità, ma ciò deriva dal fatto che il giacobino è diagonale. Devi passare attraverso il passo giacobino per arrivare alla moltiplicazione saggia degli elementi, che potrebbe spiegare la tua confusione.

In matematica, abbiamo alcune non linearità , una perdita e un input per la non linearità (questo potrebbe essere qualsiasi tensore). L'output della non linearità ha la stessa dimensione --- come dice @Logan, le funzioni di attivazione sono definite come elementi.sLxRn×1s(x)Rn×1

Vogliamo

xL=(s(x)x)Ts(x)L

Dove è il giacobino di . Espandendo questo Jacobiano, otteniamo s(x)xs

[s(x1)x1s(x1)xns(xn)x1s(xn)xn]

Vediamo che è ovunque zero tranne che per la diagonale. Possiamo creare un vettore di tutti i suoi elementi diagonali

Diag(s(x)x)

E quindi utilizzare l'operatore elemento-saggio.

xL=(s(x)x)Ts(x)L=Diag(s(x)x)s(x)L

0

Ogni volta che viene retroproporzionato a una funzione di attivazione, le operazioni diventano elementari. In particolare, usando il tuo esempio, è un derivato di backpropagation e è un derivato di attivazione e i loro prodotti sono elementally product, . Questo perché le funzioni di attivazione sono definite come operazioni basate sull'elemento nella rete neurale.δ2=(y^y)W2Ta=h(1h)δ2a

Vedi le diapositive delle lezioni di cs224d a pagina 30, potrebbe anche aiutare.

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.