Citeam lucrarea Normalizarea greutății: o reparameterizare simplă pentru a accelera instruirea rețelelor neuronale profunde despre îmbunătățirea învățării unei ANN folosind normalizarea greutății.

Ei consideră rețelele neuronale artificiale standard în care calculul fiecărui neuron constă în luarea unei sume ponderate a caracteristicilor de intrare, urmată de o neliniaritate elementară

$$ y = \ phi (\ mathbf \ cdot \ mathbf + b) $$

unde $ \ mathbf $ este un vector de greutate $ k $ -dimensional, $ b $ este un termen de polarizare scalară, $ \ mathbf $ este un vector $ k $ -dimensional de caracteristici de intrare, $ \ phi (\ cdot) $ denotă un neliniaritate elementară și $ y $ denotă ieșirea scalară a neuronului.

Apoi, ei propun să reparameterizeze fiecare vector de greutate $ \ mathbf $ în termeni de vector de parametru $ \ mathbf $ și un parametru scalar $ g $ și să efectueze în schimb descindere de gradient stocastic în raport cu acei parametri.

unde $ \ mathbf $ este un vector $ k $ -dimensional, $ g $ este un scalar, iar $ \ | \ mathbf \ | $ denotă norma euclidiană de $ \ mathbf $. Ei numesc acest lucru reparameterizaton normalizarea greutății.

Pentru ce este folosit acest scalar $ g $ și de unde provine? Este $ \ mathbf $ greutatea normalizată? În general, cum funcționează normalizarea greutății? Care este intuiția din spatele ei?

neuronale

1 Răspuns 1

Interpretarea ta este destul de corectă. Nu puteam înțelege cum ar accelera convergența. Ceea ce fac ei este, în esență, reatribuirea magnitudinii vectorului de greutate (numită și normă a vectorului de greutate).

Pentru a pune lucrurile în perspectivă, abordarea convențională a oricărei funcții de cost de învățare automată este de a verifica nu numai variațiile erorii în raport cu o variabilă de greutate (gradient), ci și de a adăuga un termen de normalizare care este $ \ lambda (w_0 ^ 2 + w_1 ^ 2 + \ dots) $. Acest lucru are câteva avantaje:

Ponderile nu vor deveni exponențial ridicate, chiar dacă faceți o greșeală (în general, scăpați de costurile exponențiale din cauza alegerii greșite a ratei de învățare).

De asemenea, convergența este cumva mai rapidă (poate pentru că aveți acum 2 moduri de a controla cât de multă greutate trebuie acordată unei caracteristici. Greutățile caracteristicilor neimportante nu sunt doar reduse cu gradient normal, ci și gradientul termenului de normalizare $ \ lambda (w_0 ^ 2 + w_1 ^ 2 + \ dots) $).

În această lucrare, ei au propus să se fixeze magnitudinea vectorului de greutate. Acesta este un mod bun, deși nu sunt sigur dacă este mai bun decât normalizarea caracteristicilor. Limitând magnitudinea greutății la $ g $, acestea repară resursa disponibilă. Intuiția este că, dacă aveți 24 de ore, trebuie să distribuiți acest timp între subiecți. Îl veți distribui astfel încât nota/cunoștințele dvs. să fie maximizate. Deci, acest lucru ar putea ajuta la convergența mai rapidă.

De asemenea, o altă intuiție ar fi, atunci când scădeați gradientul dintr-un vector de greutate, utilizați o rată de învățare $ \ alpha $. Aceasta decide în funcție de vârsta greșelii de eroare pe care doriți să o dați, care va fi ulterior scăzută din greutăți. În această abordare, nu numai că scădeți greutățile, ci și utilizați o altă rată de învățare $ g $ pentru a scala greutatea. Numesc asta $ g $ o rată de învățare, deoarece o puteți personaliza, care la rândul său personalizează valoarea greutăților, care la rândul său afectează viitoarele reduceri ale coborârii în gradient de greutate.

Sunt sigur că cineva va posta o explicație matematică mai bună a acestor lucruri, dar aceasta este tot intuiția la care m-aș putea gândi. Aș fi recunoscător dacă sunt subliniate alte intuiții și subtilități matematice. Sper că acest lucru vă ajută!