tanh vs. sigmoid nella rete neurale


16

Mi scuso in anticipo per il fatto che sto ancora arrivando al passo con questo. Sto cercando di capire i pro e i contro dell'utilizzo di tanh (mappa da -1 a 1) vs. sigmoid (mappa da 0 a 1) per la mia funzione di attivazione del neurone. Dalla mia lettura sembrava una cosa minore con differenze marginali. In pratica per i miei problemi trovo che il sigmoid sia più facile da addestrare e stranamente, il sigmoid sembra trovare una soluzione generale migliore. Con questo intendo che quando la versione sigmoid viene eseguita, l'addestramento fa bene sul set di dati di riferimento (non addestrato), dove la versione tanh sembra essere in grado di ottenere le risposte corrette sui dati di allenamento mentre fa male sul riferimento. Questo è per la stessa architettura di rete.

Un'intuizione che ho è che con il sigmoide, è più facile che un neurone si spenga quasi completamente, senza fornire alcun input agli strati successivi. Il tanh ha un momento più difficile qui poiché ha bisogno di cancellare perfettamente i suoi input, altrimenti dà sempre un valore al livello successivo. Forse questa intuizione è sbagliata però.

Posta lunga In conclusione, qual è il commercio e dovrebbe fare una grande differenza?

Risposte:


23

Nel libro "Neural Networks: A Comprehensive Foundation" di Symon Haykin c'è la seguente spiegazione da cui cito:

Per ridurre al minimo il tempo di apprendimento, è necessario evitare l'uso di input medi diversi da zero. Ora, per quanto riguarda il vettore di segnale applicato a un neurone nel primo strato nascosto di un percettrone multistrato, è facile rimuovere la media da ciascun elemento di x prima della sua applicazione alla rete. Ma che dire dei segnali applicati ai neuroni nei restanti strati nascosti e di output della rete? La risposta a questa domanda risiede nel tipo di funzione di attivazione utilizzata nella rete. Se la funzione di attivazione non è simmetrica, come nel caso della funzione sigmoidea, l'uscita di ciascun neurone è limitata all'intervallo [ 0 , 1 ]XX[0,1] . Tale scelta introduce una fonte di distorsione sistematicaper quei neuroni situati oltre il primo strato della rete. Per ovviare a questo problema dobbiamo usare una funzione di attivazione antisimmetrica come la funzione tangente iperbolica. Con quest'ultima scelta, l'output di ciascun neurone può assumere valori sia positivi che negativi nell'intervallo , nel qual caso è probabile che la sua media sia zero. Se la connettività di rete è ampia, l'apprendimento con retro-propagazione con funzioni di attivazione antisimmetrica può produrre una convergenza più rapida rispetto a un processo simile con funzioni di attivazione non simmetriche, per le quali esistono anche prove empiriche (LeCun et al. 1991).[-1,1]

Il riferimento citato è:

  • Y. LeCun, I. Kanter e SASolla: "Proprietà del secondo ordine delle superfici di errore: tempo di apprendimento e generalizzazione", Progressi nei sistemi di elaborazione delle informazioni neurali, vol. 3, pagg. 918-924, 1991.

Un altro riferimento interessante è il seguente:

  • Y. LeCun, L. Bottou, G. Orr e K. Muller: " Efficient BackProp ", in Orr, G. e Muller K. (Eds), Neural Networks: Tricks of the trade, Springer, 1998

I neuroni ReLU sembrano funzionare abbastanza bene nonostante il loro pregiudizio. Hai qualche idea su questo?
Ark-kun,

@ Ark-kun, non so molto sui neuroni ReLU, ma posso fare riferimento a questo documento in cui gli autori spiegano i vantaggi di tale funzione di attivazione. X. Glorot, A. Bordes e Y. Bengio "Reti neurali radicali radicali
tiagotvv

1

Queste due funzioni di attivazione sono molto simili, ma sono sfalsate. La mia rete originale non aveva termini di bias. Da quando ha aggiunto pregiudizi, tutto è molto più stabile. In base alla mia esperienza, direi che l'uno o l'altro di questi potrebbe funzionare meglio per un'applicazione specifica per ragioni complesse, forse inconoscibili, ma l'approccio corretto è quello di includere termini di errore in modo che la dipendenza dall'offset di attivazione possa essere ridotta o eliminata.


0

tanh le attivazioni sui nodi di output non funzionano con la perdita (binaria) di entropia incrociata:

L=-1nΣio(yiolog(pio)+(1-yio)log(1-pio))

dove yio è il valore target per il campione io e pio è l'output della rete per esempio io.

Se pio è l'output di a tanhfunzione che si finisce col prendere logaritmi di valori negativi. Quindi le funzioni di attivazione sigmoide in uscita sono una scelta migliore per questi casi.


Puoi ridimensionarli, però. tanh (X) -1 condivide il derivato e non presenta il problema dei registri negativi
Pablo Arnau González,
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.