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?
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?
Risposte:
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()
.
In sintesi, la principale differenza per i professionisti dell'apprendimento automatico è la seguente:
tanh()
funzione di attivazione, quale funzione di inizializzazione dovrei usare.
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.