Perché tanh è quasi sempre migliore di sigmoid come funzione di attivazione?


33

Nel corso Neural Networks e Deep Learning di Andrew Ng su Coursera afferma che usare è quasi sempre preferibile usare .tanhsigmoid

La ragione per cui egli dà è che le uscite utilizzando centro attorno 0 piuttosto che 's 0,5, e questo 'rende l'apprendimento per lo strato successivo un po 'più facile'.tanhsigmoid

  1. Perché centrare l'apprendimento della velocità di attivazione dell'attivazione? Suppongo che si riferisca al livello precedente in quanto l'apprendimento avviene durante il backprop?

  2. Ci sono altre caratteristiche che rendono preferibile l' ? Il gradiente più ripido ritarderebbe i gradienti di scomparsa?tanh

  3. Ci sono situazioni in cui sarebbe preferibile?sigmoid

Preferite risposte matematiche e intuitive.


13
Una funzione sigmoide è a forma di S (da cui il nome). Presumibilmente stai parlando della funzione logistica . A parte la scala e la posizione, i due sono essenzialmente gli stessi: . Quindi la vera scelta è se vuoi output nell'intervallo o nell'intervalloex1+exlogistic(x)=12+12tanh(x2)(1,1)(0,1)
Henry,

Risposte:


21

Yan LeCun e altri sostengono in BackProp efficiente che

La convergenza di solito è più veloce se la media di ciascuna variabile di input sul set di addestramento è vicina allo zero. Per vedere questo, considera il caso estremo in cui tutti gli input sono positivi. I pesi su un nodo particolare nel primo strato di peso vengono aggiornati di una quantità proporzionale a dove è l'errore (scalare) su quel nodo e è il vettore di input (vedere equazioni (5) e (10)). Quando tutti i componenti di un vettore di input sono positivi, tutti gli aggiornamenti dei pesi che si inseriscono in un nodo avranno lo stesso segno (cioè segno ( )). Di conseguenza, questi pesi possono solo diminuire o aumentare tutti insiemeδxδxδper un determinato modello di input. Pertanto, se un vettore di peso deve cambiare direzione, può farlo solo mediante zigzag, che è inefficiente e quindi molto lento.

Questo è il motivo per cui dovresti normalizzare i tuoi input in modo che la media sia zero.

La stessa logica si applica ai livelli intermedi:

Questa euristica dovrebbe essere applicata a tutti i livelli, il che significa che vogliamo che la media degli output di un nodo sia vicina allo zero perché questi output sono gli input per il layer successivo.

Postscript @craq sottolinea che questa citazione non ha senso per ReLU (x) = max (0, x) che è diventata una funzione di attivazione molto popolare. Mentre ReLU evita il primo problema a zigzag menzionato da LeCun, non risolve questo secondo punto di LeCun che afferma che è importante portare la media a zero. Mi piacerebbe sapere cosa ha da dire LeCun al riguardo. In ogni caso, esiste un documento chiamato Batch Normalization , che si basa sul lavoro di LeCun e offre un modo per affrontare questo problema:

È noto da tempo (LeCun et al., 1998b; Wiesler e Ney, 2011) che l'addestramento della rete converge più velocemente se i suoi input vengono sbiancati, ovvero trasformati linearmente per avere zero medie e varianze di unità e decorrelati. Poiché ogni strato osserva gli input prodotti dagli strati sottostanti, sarebbe vantaggioso ottenere lo stesso sbiancamento degli input di ciascun layer.


A proposito, questo video di Siraj spiega molto sulle funzioni di attivazione in 10 minuti divertenti.


@elkout dice "Il vero motivo per cui il tanh è preferito rispetto al sigmoide (...) è che i derivati ​​del tanh sono più grandi dei derivati ​​del sigmoide."

Penso che questo non sia un problema. Non ho mai visto questo essere un problema in letteratura. Se ti dà fastidio che una derivata sia più piccola di un'altra, puoi semplicemente ridimensionarla.

La funzione logistica ha la forma . Di solito, usiamo , ma nulla ti impedisce di usare un altro valore per per allargare i tuoi derivati, se questo era il tuo problema.σ(x)=11+ekxk=1k


Nitpick: tanh è anche una funzione sigmoide . Qualsiasi funzione con una forma a S è un sigmoide. Quello che voi ragazzi chiamate sigmoid è la funzione logistica. Il motivo per cui la funzione logistica è più popolare è motivi storici. È stato usato per molto tempo dagli statistici. Inoltre, alcuni ritengono che sia biologicamente plausibile.


1
Non hai bisogno di una citazione per mostrare che , solo calcolo delle superiori. Sappiamo che questo è vero perché , quindi devi solo massimizzare un quadratico concavo. che può essere verificato mediante ispezione. maxxσ(x)<maxxtanh(x)
σ(x)=σ(x)(1σ(x))0.25
0<σ(x)<1
tanh(x)=sech2(x)=2exp(x)+exp(x))1.0
Sycorax dice di reintegrare Monica il

A parte questo, ho detto che nella maggior parte dei casi i derivati ​​dell'abbronzatura sono più grandi dei derivati ​​del sigmoide. Questo accade soprattutto quando siamo intorno a 0. Sei il benvenuto a dare un'occhiata a questo link e alle chiare risposte fornite qui domanda che affermano anche che i derivati ​​di sono generalmente più grandi dei derivati ​​di . tanhsigmoid
ekoulier,

aspetta ... sembra plausibile, ma se i livelli medi dovrebbero avere un output medio di zero, come mai ReLU funziona così bene? Non è una contraddizione?
craq,

@ekoulier, la derivata di maggiore di è un problema. Puoi semplicemente ridimensionarlo se ti dà fastidio. tanhsigmoid
Ricardo Cruz,

@craq, buon punto, penso che sia un difetto nell'argomento di LeCun. Ho aggiunto un link al documento di normalizzazione batch in cui discute di più su tale problema e su come può essere migliorato. Sfortunatamente, quel documento non confronta la relu con tanh, confronta solo la relu con la logistica (sigmoid).
Ricardo Cruz,

14

Non è necessariamente migliore di . In altre parole, non è il centro di un'attivazione a renderlo migliore. E l'idea alla base di entrambe le funzioni è la stessa, e condividono anche una "tendenza" simile. Inutile dire che la funzione è chiamata una versione spostata della funzione .sigmoidtanhsigmoid

Il vero motivo per cui è preferito rispetto a , specialmente quando si tratta di big data quando di solito si fatica a trovare rapidamente il minimo locale (o globale), è che le derivate del sono più grandi delle derivate di . In altre parole, minimizzi più velocemente la tua funzione di costo se usi come funzione di attivazione.tanhsigmoidtanhsigmoidtanh

Ma perché la tangente iperbolica ha derivati ​​più grandi? Solo per darti un'intuizione molto semplice puoi osservare il seguente grafico:

Sigmoide vs Tangente iperbolica

Il fatto che l'intervallo sia compreso tra -1 e 1 rispetto a 0 e 1, rende la funzione più conveniente per le reti neurali. A parte questo, se uso un po 'di matematica, posso dimostrare che:

tanhx=2σ(2x)1

E in generale, possiamo dimostrare che nella maggior parte dei casi .|tanh(x)x|>|σ(x)x|


Quindi perché il Prof. Ng direbbe che è un vantaggio avere l'output della funzione in media intorno a ? 0
Tom Hale,

2
Non è il fatto che la media sia intorno a 0 che rende più veloce . È il fatto che essere intorno allo zero significa che anche l'intervallo è più grande (rispetto a circa 0,5 nel caso di ), il che porta a derivati ​​più grandi, che quasi sempre porta a una convergenza più veloce al minimo. Spero che sia chiaro ora. Ng ha ragione nel preferire la funzione perché è centrata su 0, ma non ha fornito la giustificazione completa. tanhsigmoidtanh
ekoulier,

Zero-centratura è più importante rapporto, perché distorce la distribuzione di attivazioni e che danneggia le prestazioni. Se prendi e una frequenza di apprendimento inferiore, imparerà alla pari . 2xsigmoid(x) - 0.52xtanh
Massima

@Maxim Quale "esso" distorce la distribuzione di attivazioni, zero-centering o ? Se il centraggio zero è una buona cosa, non sento ancora che il "perché" di ciò abbia avuto una risposta. 2x
Tom Hale,

3

Rispondere alla parte della domanda finora non indirizzata:

Andrew Ng afferma che l'uso della funzione logistica (comunemente noto come sigmoide) ha davvero senso solo nel livello finale di una rete di classificazione binaria.

Poiché l'output della rete dovrebbe essere compreso tra e , la logistica è una scelta perfetta in quanto il suo intervallo è esattamente . Nessun ridimensionamento e spostamento richiesti.01(0,1)tanh


Per l'output, la funzione logistica ha senso se si desidera produrre probabilità, possiamo essere tutti d'accordo su questo. Ciò che viene discusso è il motivo per cui l'abbronzatura è preferita rispetto alla funzione logistica come attivazione per gli strati intermedi.
Ricardo Cruz,

Come fai a sapere che cosa intendeva l'OP? Sembra che stesse facendo una domanda generale.
Tom Hale,

2

Tutto dipende essenzialmente dalle derivate della funzione di attivazione, il problema principale con la funzione sigmoide è che il valore massimo della sua derivata è 0,25, questo significa che l'aggiornamento dei valori di W e b sarà piccolo.

La funzione tanh, d'altra parte, ha una derivata fino a 1,0, rendendo gli aggiornamenti di W e b molto più grandi.

Questo rende la funzione tanh quasi sempre migliore come funzione di attivazione (per livelli nascosti) piuttosto che come funzione sigmoide.

Per dimostrarlo da solo (almeno in un caso semplice), ho codificato una semplice rete neurale e ho usato sigmoid, tanh e relu come funzioni di attivazione, quindi ho tracciato come si è evoluto il valore dell'errore e questo è quello che ho ottenuto.

inserisci qui la descrizione dell'immagine

Il quaderno completo che ho scritto è qui https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning

Se aiuta, ecco i grafici delle derivate della funzione tanh e di quella sigmoidea (presta attenzione all'asse verticale!)

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


(-1) Sebbene questa sia un'idea interessante, non regge da sola. In particolare, la maggior parte dei metodi di ottimizzazione utilizzati per DL / NN sono metodi di gradiente del primo ordine, che hanno un tasso di apprendimento . Se la derivata massima rispetto a una funzione di attivazione è troppo piccola, si potrebbe facilmente aumentare il tasso di apprendimento. α
Cliff AB,

Non corri il rischio di non avere una curva di apprendimento stabile con un tasso di apprendimento più elevato?
Juan Antonio Gomez Moriano,

Bene, se i derivati ​​sono più stabili, aumentando il tasso di apprendimento è meno probabile destabilizzare la stima.
Cliff AB,

Questo è un punto giusto, hai un link dove posso saperne di più?
Juan Antonio Gomez Moriano,
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.