Qual è la differenza tra l'inizializzatore di ridimensionamento della varianza e l'inizializzatore di xavier?


20

Nell'implementazione di ResNet di Tensorflow , trovo che utilizzino l'inizializzatore di ridimensionamento della varianza, trovo anche che l'inizializzatore di xavier sia popolare. Non ho troppa esperienza su questo, che è meglio in pratica?


Per una spiegazione più dettagliata dell'inizializzazione di Xavier, è possibile visitare questo link: prateekvjoshi.com/2016/03/29/… Include una corretta derivazione dell'inizializzazione e dell'intuizione di Xavier.
Himanshu Singh

Risposte:


31

Prospettiva storica

L'inizializzazione di Xavier , originariamente proposta da Xavier Glorot e Yoshua Bengio in "Comprensione della difficoltà di addestrare reti neurali profonde feedforward" , è la tecnica di inizializzazione dei pesi che cerca di rendere la varianza degli output di uno strato uguale alla varianza dei suoi input . Questa idea si è rivelata molto utile in pratica. Naturalmente, questa inizializzazione dipende dalla funzione di attivazione del layer. E nel loro articolo, Glorot e Bengio hanno considerato la funzione di attivazione sigmoidea logistica , che era la scelta predefinita in quel momento.

In seguito, l'attivazione sigmoid è stata superata da ReLu, poiché ha permesso di risolvere il problema dei gradienti di fuga / esplosione. Di conseguenza, è apparsa una nuova tecnica di inizializzazione, che ha applicato la stessa idea (bilanciamento della varianza dell'attivazione) a questa nuova funzione di attivazione. È stato proposto da Kaiming He ad "In approfondire i raddrizzatori: superare le prestazioni a livello umano sulla classificazione di ImageNet" , e ora spesso si riferiva a come inizializzazione .

In tensorflow, l'inizializzazione He è implementata in variance_scaling_initializer()funzione (che è, in effetti, un inizializzatore più generale, ma per impostazione predefinita esegue l'inizializzazione He), mentre l'inizializzatore Xavier è logicamente xavier_initializer().

Sommario

In sintesi, la principale differenza per i professionisti dell'apprendimento automatico è la seguente:

  • L'inizializzazione funziona meglio per i livelli con l' attivazione di ReLu .
  • L'inizializzazione di Xavier funziona meglio per i layer con attivazione sigmoid .

in pytorch quale inizializzazione viene utilizzata? dipende dall'attivazione?
Charlie Parker,

2
Ciao, per la tanh()funzione di attivazione, quale funzione di inizializzazione dovrei usare.
GoingMyWay,

@GoingMyWay, secondo questo pytorch.org/docs/stable/… , puoi usare l'inizializzazione di He con guadagno 5/3. Non sono sicuro da dove provenga.
Podgorskiy il

3

Il ridimensionamento della varianza è solo una generalizzazione di Xavier: http://tflearn.org/initializations/ . Entrambi operano in base al principio secondo cui la scala dei gradienti dovrebbe essere simile in tutti gli strati. Xavier è probabilmente più sicuro da usare poiché ha resistito alla prova sperimentale del tempo; provare a scegliere i propri parametri per il ridimensionamento della varianza potrebbe inibire l'allenamento o impedire alla rete di guadagnare.


Grazie. Cosa vuoi dire scegli i tuoi parametri per la varianza?
Hanamichi,

Nell'implementazione TF, questo sarebbe il parametro factor (che determina il rapporto tra la varianza di input e la varianza di output)
liangjy
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.