Rete neurale: Matlab utilizza diverse funzioni di attivazione per diversi livelli: perché?

Aug 20 2020

Mi sono allenato su matlab una rete neurale artificiale con uno strato di input, uno nascosto e uno di output (il mio output è valori compresi tra zero e uno, che trasformo in 0 o 1 secondo una soglia di 0,5).

Ho notato che, per impostazione predefinita , matlab utilizzava la funzione di trasferimento "tansig" per il livello nascosto e quindi la funzione di trasferimento "loghi" per il livello di output . Qualcuno può darmi una spiegazione per questo?

Grazie in anticipo!

Risposte

2 Sycorax Aug 19 2020 at 22:40

L'idea principale è che non esiste un requisito particolare che tutti i livelli di una rete neurale utilizzino la stessa funzione di attivazione. Puoi mescolare e abbinare come desideri. Detto questo, ci sono alcuni motivi per preferire l'utilizzo$\tanh$ come funzione di attivazione di uno strato nascosto e $\sigma$ come funzione di output.

  • Il $\tanh(x)=\frac{\exp(x)-\exp(-x)}{\exp(x)+\exp(-x)}$è una funzione di attivazione standard. Usarlo in una rete neurale non è più sorprendente che usare i minimi quadrati come funzione obiettivo per un'attività di regressione.

  • La funzione $\sigma(x)=\frac{1}{1+\exp(-x)}$è un modo standard per mappare numeri reali a valori reali in (0,1). Quindi è comunemente usato per modellare le probabilità. Poiché il tuo compito è prevedere 0 o 1, l'utilizzo di questo modello suggerisce di modellare la probabilità che il campione sia etichettato 1.

  • Usare un $\tanh$ funzione nell'ultimo strato non sarebbe plausibile, perché non ha una relazione chiara con la modellazione della probabilità che un campione sia etichettato 1. La funzione $\tanh$ restituisce valori compresi tra -1 e 1, quindi non è una probabilità.

  • Se lo desideri, potresti usare $\sigma(x)$come funzione di attivazione. Ma$\tanh$è preferibile perché avere un gradiente più forte e fornire output positivi e negativi rende più facile l'ottimizzazione. Vedi: funzione di attivazione tanh vs funzione di attivazione sigmoide

  • Ma si noti anche che ReLU e funzioni simili sono generalmente preferite come funzioni di attivazione in livelli nascosti. Vedi: Quali sono i vantaggi di ReLU sulla funzione sigmoidea nelle reti neurali profonde?

  • La scelta di utilizzare $\tanh$come impostazione predefinita è probabilmente più sulle pratiche di sviluppo del software che sui principi matematici: la modifica del comportamento predefinito del software può rompere il codice legacy e causare comportamenti imprevisti. Le unità ReLU sono diventate popolari solo di recente , rispetto all'età di MATLAB. Il componente aggiuntivo Neural Network Toolbox è stato pubblicato per la prima volta nel 1992 (da allora è stato rinominato "Deep Learning Toolbox"). Nel 1992, la creazione di una rete neurale era quasi sinonimo di una rete a livello singolo con$\tanh$ o $\sigma$ funzioni di attivazione.

    Ma è improbabile che esista una spiegazione definitiva del motivo per cui MATLAB ha scelto questo valore predefinito a meno che non sia capitato di pubblicare una giustificazione per questa scelta (ad esempio note di rilascio o documentazione).