Qual è una spiegazione dell'esempio del perché la normalizzazione in lotti deve essere fatta con una certa cura?


11

Stavo leggendo il documento di normalizzazione in lotti [1] e aveva una sezione in cui è riportato un esempio, cercando di mostrare perché la normalizzazione deve essere eseguita con attenzione. Sinceramente, non riesco a capire come funziona l'esempio e sono sinceramente molto curioso di capire il loro lavoro il più possibile. Prima lasciami citare qui:

Ad esempio, si consideri un livello con l'ingresso u che aggiunge il bias dotto b, e normalizza il risultato sottraendo la media dell'attivazione calcolato su dati di dove x = u + b , X = { x 1 . . . N } è l'insieme di valori di x sull'insieme di addestramento ed E [ x ] = N i = 1 x ix^=xE[x]x=u+b,X={x1...N}xE[x]=i=1Nxi. Se un gradiente di discesa del gradiente ignora la dipendenza di su b , aggiornerà b b + Δ > b , dove Δ b - lE[x]bbb+Δ>b . Quindiu+(b+Δb)-E[u+(b+Δb)]=u+b-E[u+b]. Pertanto, la combinazione dell'aggiornamentobe lasuccessiva modifica della normalizzazione non hanno portato a nessuna modifica nell'output del layer né, di conseguenza, alla perdita.Δblx^u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]b

Penso di aver capito il messaggio, che se non si esegue correttamente la normalizzazione, può essere negativo. Non capisco come nell'esempio che usano sia questo.

Sono consapevole che è difficile aiutare qualcuno se non sono più specifici su ciò che li confonde, quindi fornirò nella sezione successiva, le cose che mi confondono sulla loro spiegazione.


Penso che la maggior parte delle mie confusioni potrebbero essere notazionali, quindi chiarirò.

In primo luogo, penso che una delle cose che mi confonde molto sia cosa significhi per gli autori avere un'unità in rete e cosa sia un'attivazione. Di solito, penso a un'attivazione come:

x(l)=a(l)=θ(z(l))=θ(w(l),x(l1)+b(l))

x(0)=a(0)=x

Inoltre, penso che una delle prime cose che mi confonda (a causa del motivo precedente) sia lo scenario che stanno cercando di spiegare. Dice:

x^=xE[x]x=u+b

x(l)=a(l)

x¯l=a¯l=1Ni=1Na¯l=1Ni=1Nx¯l

e poi lo passa all'algoritmo di retro-propagazione. O almeno questo è ciò che avrebbe senso per me.

ux(l)x=u+b

Δbx^

Δb(l)lb(l)

x^lx^

δj(l)=Lzj(l)

Un'altra cosa che mi confonde è:

u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]

bb+Δb

x^=θ(u+(b+Δb))E[θ(u+(b+Δb))]

Δbb

Non sono sicuro che questa sia la giusta comprensione, ma ho riflettuto sul loro esempio. Sembra che il loro esempio non abbia un'unità di attivazione non lineare (usa l'identità) e stanno parlando solo del primo livello di input? Dal momento che hanno tralasciato molti dettagli e la notazione non è molto chiara, non posso dedurre esattamente di cosa stiano parlando. Qualcuno sa come esprimere questo esempio con una notazione che esprime cosa sta succedendo ad ogni livello? Qualcuno capisce cosa sta realmente succedendo con quell'esempio e vuole condividere la sua saggezza con me?


[1]: Ioffe S. e Szegedy C. (2015),
"Normalizzazione in lotti: accelerare la formazione in rete profonda riducendo lo spostamento della covariata interna",
Atti della 32a Conferenza internazionale sull'apprendimento automatico , Lille, Francia, 2015.
Journal of Machine Learning Ricerca: volume W&CP 37


Penso che la natura notazionale di quel paragrafo sia chiara ora, ma il messaggio che sta cercando di trasmettere e il suo scopo è meno chiaro.
Charlie Parker,

Risposte:


3

E[x]b

Tuttavia, se queste modifiche sono intervallate dalle fasi di ottimizzazione, la fase di discesa del gradiente potrebbe tentare di aggiornare i parametri in un modo che richiede l'aggiornamento della normalizzazione, il che riduce l'effetto del passaggio di gradiente.

Pertanto hanno reso la fase di discesa del gradiente consapevole della normalizzazione nel loro metodo.


Per quanto riguarda le tue domande

ux(l)

uub

Δblb

x^=xE[x]=u+bE[x]E[x]b

lb=lx^x^b=lx^,
Δblx^

u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]bb+Δb

x^bb+ΔbE[x]b


Potrebbe essere utile dare un'occhiata ad alcune implementazioni open source della normalizzazione batch, ad esempio in Lasagne e Keras .

C'è un'altra domanda che potrebbe sembrare correlata, perché prendere il gradiente dei momenti (media e varianza) quando si utilizza la normalizzazione batch in una rete neurale?


quindi suppongo che il loro punto sia che devono sensibilizzare l'aggiornamento GD alla normalizzazione in modo che la perdita cambi durante l'aggiornamento di una distorsione? O qual è l'obiettivo centrale di quel paragrafo?
Charlie Parker,

@CharlieParker sì, immagino di sì, per mostrare che c'è un motivo per rendere GD aggiornamento consapevole della normalizzazione (IMO).
Dontloo,

E [Δb] = Δb? Se è così, perché?
MichaelSB,
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.