Quale funzione di attivazione per il livello di output?


44

Mentre la scelta delle funzioni di attivazione per il livello nascosto è abbastanza chiara (principalmente sigma o tanh), mi chiedo come decidere la funzione di attivazione per il livello di output. Le scelte comuni sono funzioni lineari, funzioni sigmoidi e funzioni softmax. Tuttavia, quando dovrei usare quale?


3
Più recentemente ReLU è diventata popolare come funzione di attivazione per unità nascoste.
ijuneja,

Risposte:


39
  • Regressione: lineare (perché i valori sono illimitati)
  • Classificazione: softmax (anche il semplice sigmoid funziona ma softmax funziona meglio)

Usa il semplice sigmoid solo se l'output ammette più risposte "vere", ad esempio una rete che controlla la presenza di vari oggetti in un'immagine. In altre parole, l'output non è una distribuzione di probabilità (non è necessario sommare a 1).


2
Softmax è importante anche se hai più gruppi per la classificazione
cdeterman,

15
Penso che sia errato dire che softmax funziona "meglio" di un sigmoide, ma puoi usare softmax nei casi in cui non puoi usare un sigmoide. Per la classificazione binaria, la funzione logistica (un sigmoide) e il softmax funzioneranno altrettanto bene, ma la funzione logistica è matematicamente più semplice e quindi la scelta naturale. Quando hai più di due classi, tuttavia, non puoi utilizzare una funzione scalare come la funzione logistica poiché hai bisogno di più di un output per conoscere le probabilità per tutte le classi, quindi usi softmax.
Ciao Arrivederci

1
Non penso che softmax sia un'attivazione. In generale, è necessario attivarlo prima di normalizzarlo (softmax).
Aaron,

23

Potrei essere in ritardo alla festa, ma sembra che ci siano alcune cose che devono essere chiarite qui.

g(x)CzCz

C(y,g(z))=12(yg(z))2g(x)=x

C(y,g(z))z=C(y,g(z))g(z)g(z)z=g(z)(12(yg(z))2)z(z)=(yg(z))1=g(z)y
Cz

Cz

In secondo luogo, vorrei aggiungere che ci sono molte funzioni di attivazione che possono essere utilizzate per i livelli nascosti. I sigmoidi (come la funzione logistica e la tangente iperbolica) hanno dimostrato di funzionare davvero bene, ma come indicato da Jatin , questi soffrono di sfumature evanescenti quando le tue reti diventano troppo profonde. In tal caso, le ReLU sono diventate popolari. Quello che vorrei sottolineare, tuttavia, è che ci sono molte più funzioni di attivazione disponibili e diversi ricercatori continuano a cercarne di nuove (ad es. Unità lineari esponenziali (ELU), Unità lineari di errore gaussiane (GELU), ...) con differenti / proprietà migliori

Per concludere: quando cerchi le migliori funzioni di attivazione, sii creativo. Prova cose diverse e vedi quali combinazioni portano alle migliori prestazioni.


Addendum: per più coppie di funzioni e attivazioni di perdita, probabilmente si desidera cercare funzioni di collegamento (canoniche)


perché non è questa la risposta migliore? maledettamente intuitivo e completamente scientifico
Vikram Murthy il

13

Sigmoide e tanh non dovrebbero essere usati come funzione di attivazione per il livello nascosto. Ciò è dovuto al problema del gradiente che sta scomparendo, cioè se il tuo input è su un lato più alto (dove sigmoid diventa piatto) allora il gradiente sarà vicino allo zero. Ciò causerà un apprendimento molto lento o inesistente durante la backpropagazione poiché i pesi verranno aggiornati con valori molto piccoli.

Spiegazione dettagliata qui: http://cs231n.github.io/neural-networks-1/#actfun

La migliore funzione per i livelli nascosti è quindi ReLu.


11
La domanda è chiedere il livello di output. -1
Euler_Salter il

1
Concordato. Aggiunta la risposta in base alla prima riga della domanda. Forse questo avrebbe dovuto essere un commento anziché una risposta.
Jatin,

Bene, ma allora non avresti anche il "problema dei neuroni ReLU morti?" Inoltre, il problema del gradiente vanishijg può essere "risolto" mediante la normalizzazione batch. Se vuoi ancora "disattivare" alcuni neuroni come fanno le attivazioni di ReLU, allora puoi semplicemente disattivare casualmente i neuroni abbandonando. Quindi alla fine penso che tutto dipenda dal problema e usi solo ciò che funziona meglio
Kevvy Kim,

5

2,3,4,5,...

2,3,4,...

p(y=1)1p(y=1)=p(y=0)

L'uso della funzione Identity come output può essere utile quando i tuoi output sono illimitati. L'utile o la perdita di alcune società per un trimestre potrebbe essere illimitato su entrambi i lati.

Le unità ReLU o varianti simili possono essere utili quando l'output è limitato sopra o sotto. Se l'output è limitato a non negativo, avrebbe senso utilizzare un'attivazione ReLU come funzione di output.

[1,1]

La cosa bella delle reti neurali è che sono strumenti incredibilmente flessibili.

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.