Migliore risposta
ReLU è definito come f (x) = max (0, x). Il softplus è il suo surrogato differenziale ed è definito come f (x) = ln (1 + e ^ x).
Sia ReLU che Softplus sono in gran parte simili, eccetto vicino a 0 dove il softplus è allettantemente fluido e differenziabili. È molto più facile ed efficiente calcolare ReLU e la sua derivata rispetto alla funzione softplus che ha log (.) Ed exp (.) Nella sua formulazione. È interessante notare che la derivata della funzione softplus è la funzione logistica: f “(x) = \ frac {1} {1 + e ^ {- x}}.
Nel deep learning, calcolare la funzione di attivazione e la sua derivata è frequente quanto laddizione e la sottrazione in aritmetica. Passando a ReLU, i passaggi avanti e indietro sono molto più veloci pur mantenendo la natura non lineare della funzione di attivazione richiesta affinché le reti neurali profonde siano utili.
Risposta
Il punto centrale di una funzione di attivazione deve essere non lineare.
Fammi spiegare perché. Se disponi di una rete di più livelli (cosiddetta “profonda” contro una rete “superficiale”), il tuo modello potrebbe potenzialmente imparare a rilevare o gestire esempi molto più sofisticati. Durante il funzionamento, la tua rete utilizzerebbe più interconnessioni tra i pesi (e molto probabilmente più pesi). Quando si eseguono i calcoli, molto di questo significa effettivamente moltiplicare e sommare i numeri insieme, come:
y = f (W x + b).
dove f (\ cdot) è una funzione di attivazione.
Quando si “sovrappongono” i livelli, loutput di ogni livello diventa un input per quello successivo. Ad esempio per 2 livelli:
y = x\_2 = f (W\_2 x\_1 + b\_2) = f (W\_2 f (W\_1 x\_0 + b\_1) + b\_2).
Tuttavia, se f (\ cdot) era una funzione lineare f (x) = \ alpha x + \ beta, quindi lintera rete sarebbe “collassata” in una sola rete a un livello, semplicemente perché qualsiasi la combinazione lineare di funzioni lineari è una funzione lineare stessa.
Lequazione di cui sopra renderebbe:
x\_2 = \ alpha (W\_2 (\ alpha (W\_1 x\_0 + b\_1) + \ beta) + b\_2) + \ beta = \ alpha ^ 2 W\_1 W\_2 x\_0 + \ alpha ^ 2 W\_1 W\_2 b\_1 + \ alpha ^ 2 W\_2 \ beta + \ alpha W\_2 b\_1 + \ beta = \ alpha “x\_0 + \ beta “.
Questo è come se avessi una rete a livello singolo con pesi leggermente diversi.
Ora, ReLU introduce la non linearità, il che significa che laffermazione di cui sopra non è più valida, quindi lottimizzatore deve “sforzarsi di più” per allenare davvero la pesa e far funzionare tutto. Ovviamente ci sono anche altre funzioni non lineari (ad esempio sigmoid, tanh, ecc.), Ma il punto è che devono essere non lineari.
Infine, lesempio appena scritto si basa su una semplice rete densamente connessa, ma immagino che si estenda anche ad altri casi.