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+e−kxk=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.