Guida rapida alle funzioni di attivazione nel Deep Learning

Guida rapida alle funzioni di attivazione nel Deep Learning

23 Marzo 2021 ai 1

In questo articolo, fornirò una rapida panoramica di alcune delle funzioni di attivazione nel deep learning più comuni, utilizzate nelle reti neurali. Ma prima di discuterli, discutiamo alcuni concetti di base relativi alle funzioni di attivazione.

Una rapida discussione di tutte le principali funzioni di attivazione nell’apprendimento profondo.

Contenuti

1. Perché abbiamo bisogno di funzioni di attivazione?

2. Perché scegliamo sempre funzioni di attivazione non lineare in una rete neurale?

3. Teorema di approssimazione universale

4. Problemi di gradiente che scompaiono ed esplodono

5. Funzioni di attivazione:

  • Funzione Sigmoide
  • Funzione Softmax
  • Tangente iperbolica (tanh)
  • Relu
  • Leaky Relu
  • Swish
  • Relu parametrizzato
  • ELU
  • Softplus e Softsign
  • Selu
  • Gelu

6. Come decidere quale funzione di attivazione utilizzare?

7. Conclusioni

Perché abbiamo bisogno di funzioni di attivazione?

Come sappiamo, nei neuroni artificiali vengono dati input e pesi da cui viene calcolata la somma ponderata dell’input e poi viene dato ad una funzione di attivazione che lo converte in output. Quindi fondamentalmente una funzione di attivazione viene utilizzata per mappare l’ingresso all’uscita. Questa funzione di attivazione aiuta una rete neurale ad apprendere relazioni e schemi complessi nei dati.

Ora la domanda è cosa succede se non usiamo alcuna funzione di attivazione e permettiamo a un neurone di fornire la somma ponderata degli input così come gli output. Bene, in quel caso il calcolo sarà molto difficile poiché la somma ponderata dell’input non ha alcun intervallo e, a seconda dell’input, può assumere qualsiasi valore. Quindi un uso importante della funzione di attivazione è di mantenere l’uscita limitata a un intervallo particolare. Un altro uso della funzione di attivazione è l’aggiunta di non linearità nei dati. Scegliamo sempre funzioni non lineari come funzioni di attivazione. Vediamo, perché è importante.

Perché scegliamo sempre funzioni di attivazione nel Deep Learning non lineare?

Non linearità significa che l’output non può essere generato da una combinazione lineare di input. La non linearità è importante nelle reti neurali perché le funzioni di attivazione lineare non sono sufficienti per formare un approssimatore di funzione universale.

Se usiamo le funzioni di attivazione lineare in una rete neurale profonda, indipendentemente dalla profondità della nostra rete, sarà equivalente ad una semplice rete neurale lineare senza strati nascosti perché quelle funzioni di attivazione lineare possono essere combinate per formare un’altra singola funzione lineare.

Quindi fondamentalmente tutta la nostra rete sarà ridotta ad un singolo neurone con quella funzione lineare combinata come sua funzione di attivazione e quel singolo neurone non sarà in grado di apprendere relazioni complesse nei dati. Poiché la maggior parte dei problemi del mondo reale sono molto complessi, abbiamo bisogno di funzioni di attivazione non lineari in una rete neurale.

La rete neurale senza funzioni di attivazione non lineare sarà solo un semplice modello di regressione lineare. Tuttavia, nello strato finale della rete neurale, possiamo scegliere funzioni di attivazione lineare.

Teorema di approssimazione Universale

Citando direttamente Wikipedia ‘’Il Teorema di Approssimazione Universale afferma che una rete ‘’Feed-Forward’’ – preazione composta da neuroni artificiali può approssimare funzioni continue arbitrarie bem valutate in modo reale su un sottoinsieme compatto di Rⁿ. In breve, questo teorema dice che una rete neurale può apprendere qualsiasi funzione continua. Ora la domanda è cosa gli permette di farlo. La risposta è la non-linearità delle funzioni di attivazione.

Problemi del gradiente che scompare ed esplode

Nelle reti neurali durante la propagazione posteriore, ogni peso riceve un aggiornamento proporzionale alla derivata parziale della funzione di errore. In alcuni casi, questo termine derivato è così piccolo da rendere gli aggiornamenti molto piccoli. Soprattutto negli strati profondi della rete neurale, l’aggiornamento è ottenuto moltiplicando varie derivate parziali.

Se queste derivate parziali sono molto piccole, l’aggiornamento complessivo diventa molto piccolo e si avvicina allo zero. In tal caso, i pesi non saranno in grado di aggiornarsi e quindi la convergenza sarà lenta o assente. Questo problema è noto come problema del gradiente di fuga.

Allo stesso modo, se il termine derivato è molto grande, anche gli aggiornamenti saranno molto grandi. In tal caso, l’algoritmo supererà il minimo e non potrà convergere. Questo problema è noto come problema del gradiente esplosivo. Esistono vari metodi per evitare questi problemi. La scelta della funzione di attivazione appropriata è una di queste.

Funzioni di attivazione nel Deep Learning

1. Funzione Sigmoide

Sigmoide è una funzione matematica a forma di ‘‘S’’, la cui formula è:

Fonte: Wikipedia

Ecco un grafico della Funzione Sigmoide. Devi aver superato questa funzione quando impari la regressione logistica. Sebbene la Funzione Sigmoide sia molto popolare, non viene ancora utilizzata molto, per i seguenti motivi.

Funzione Sigmoide (Fonte: Wikipedia)

PRO

  • La Funzione Sigmoide è continua e differenziabile.
  • Limiterà l’uscita tra 0 e 1
  • Previsioni molto chiare per la classificazione binaria

CONTRO

  • Può causare il problema del gradiente in fuga.
  • Non è centrato attorno allo zero.
  • Computazionalmente costoso

2. Funzione Softmax

  • La funzione Softmax è una generalizzazione della funzione Sigmoide ad una impostazione multi-classe. E’ comunemente utilizzato nello strato finale della classificazione multi classe. Prende un vettore di ‘K’ numero reale e poi lo normalizza in una distribuzione di probabilità costituita da probabilità ‘K’ corrispondenti agli esponenziali del numero di input. Prima di applicare softmax, alcuni componenti del vettore potrebbero essere negativi o maggiori di uno e potrebbero non sommarsi a 1 ma dopo aver applicato softmax ogni componente sarà compreso tra 0 e 1 e sommerà a 1, può quindi essere interpretato come probabilità.
Fonte: Wikipedia

PRO

  • Può essere utilizzato per la classificazione multi-classe e quindi utilizzato nel livello di output delle reti neurali.

CONTRO

  • È computazionalmente costoso in quanto dobbiamo calcolare molti termini di esponente.

3. Tangente Iperbolica (tanh)

La tangente Iperbolica o in breve ‘Tanh’ è rappresentata da:

Fonte: Wikipedia
Fonte: Wikipedia

È molto simile alla Funzione Sigmoide. È centrata su zero ed ha un intervallo compreso tra -1 e +1.

Fonte: Wikipedia

PRO

  • E continua e differenziabile ovunque.
  • E centrata attorno allo 0.
  • Limiterà l’uscita in un intervallo da -1 a +1.

CONTRO

  • Può causare il problema del gradiente in fuga.
  • Computazionalmente costosa.

4. Relu

Unità lineare rettificata, spesso chiamata solo raddrizzatore o relu.

Fonte: Wikipedia
Fonte: Wikipedia

PRO

  • Facile da calcolare.
  • Non causa problemi di fuga del gradiente.
  • Dato che tutti i neuroni non sono attivati, questo crea scarsità nella rete e quindi sarà veloce ed efficiente.

CONTRO

  • Causa problemi di esplosione del gradiente.
  • Non è centrato su zero.
  • Può uccidere alcuni neuroni per sempre poiché dà sempre 0 per valori negativi.

5.  Leaky Relu

Leaky relu è il miglioramento della funzione Relu. La funzione Relu può uccidere alcuni neuroni in ogni iterazione, questo è noto come condizione di relu morente. Leaky relu può superare questo problema, invece di dare 0 per valori negativi, utilizzerà una componente di input relativamente piccola per calcolare l’output, quindi non ucciderà mai alcun neurone.

Fonte: Wikipedia
Fonte: Wikipedia

PRO

  • Facile da calcolare
  • Non causa problemi di fuga del gradiente
  • Non causa problemi di morte di Relu

CONTRO

  • Causa problema di esplosione del gradiente
  • Non centrato su zero

6.  Relu Parametrizzato

Nel relu parametrizzato, invece di fissare una velocità per l’asse negativo, viene passato come un nuovo parametro addestrabile che la rete impara da sola per ottenere una convergenza più rapida.

Fonte: Wikipedia

PRO

  • La rete apprenderà da sola il valore più appropriato di Alfa.
  • Non causa problemi di fuga del gradiente.

CONTRO

  • Difficile da calcolare
  • Le prestazioni dipendono dal problema
  • In Tensorflow la Relu parametrizzata è implementata come strato personalizzato.

7. Swish

La funzione Swish si ottiene moltiplicando X per la funzione Sigmoide.

Fonte: Wikipedia

Fonte: Wikipedia

Fonte: Wikipedia

 La funzione Swish è proposta dal team Brain di Google. I loro esperimenti mostrano che Swish tende a funzionare più velocemente di Relu di modelli profondi su diversi set di dati impegnativi.

PRO

  • Non causa problemi di fuga del gradiente.
  • Si è dimostrato leggermente migliore di Relu.

CONTRO

  • Computazionalmente costoso.

8.  ELU-

Exponential Linear Unit (ELU) è un’altra variazione di Relu che cerca di rendere le attivazioni più vicine allo zero che accelera l’apprendimento. Ha mostrato una migliore accuratezza della classificazione rispetto a Relu. Gli ELU hanno valori negativi che spingono la media delle attivazioni più vicino a zero.

Fonte: Wikipedia

PRO

  • Does not cause the dying relu problem.

CONTRO

  • Computazionalmente costoso.
  • Non evita il problema di esplosione del gradiente.
  • Il valore Alfa deve essere deciso.

9.  Softplus and Softsign

La funzione Softplus è:

Fonte: Wikipedia

Fonte: Wikipedia

La sua derivata è uma funzione Sigmoide.

La funzione Softsign è:

Fonte: Wikipedia

Softplus e Softsign sono poco utilizzati e generalmente si preferiscono Relu e le sue varianti.

PRO

  • Non causa problemi di fuga del gradiente.

CONTRO

  • Computazionalmente costoso.
  • Più lento del Relu.

10. Selu

Selu sta per Unità lineare esponenziale scalata. Selu è definito come:

Fonte: Wikipedia

dove alfa e scala sono costanti i cui valori sono rispettivamente 1,673 e 1,050. I valori di alfa e scala vengono scelti in modo che la media e la varianza degli input vengano preservate tra due livelli consecutivi purché i pesi siano inizializzati correttamente. Selu si dimostra migliore di Relu e presenta i seguenti vantaggi.

PRO

  • Non causa problemi di fuga di gradiente.
  • Non causa problemi di morte di Relu
  • Più veloce e migliore delle altre funzioni di attivazione.

11. Attivazione lineare

Come discusso precedentemente, dovremmo usare funzioni di attivazione non lineare nelle reti neurali. Tuttavia, nello strato finale della rete neurale per il problema di regressione, possiamo utilizzare una funzione di attivazione lineare

Come decidere quali funzioni di attivazione nel Deep Learning utilizzare

• Sigmoide e tanh dovrebbero essere evitati a causa del problema della fuga del gradiente.

• Anche Softplus e Softsign dovrebbero essere evitati poiché Relu è una scelta migliore.

• Relu dovrebbe essere preferito per i livelli nascosti. Se sta causando il problema di relu morente, è necessario utilizzare le sue modifiche come Leaky Relu

, ELU, SELU, ecc.

• Per le reti profonde, swish ha prestazioni migliori di relu.

• Per lo strato finale in caso di regressione la funzione lineare è la scelta giusta, per la classificazione binaria sigmoide è la scelta giusta e per la classificazione multiclasse, softmax è la scelta giusta. Lo stesso concetto dovrebbe essere utilizzato negli autoencoders.

Conclusione sulle funzioni di attivazione nel Deep Learning

Abbiamo discusso di tutte le funzioni di attivazione popolari con i loro pro e contro. Ci sono molte altre funzioni di attivazione ma non le usiamo molto spesso. Possiamo anche definire le nostre funzioni di attivazione. Alcune delle funzioni di attivazione discusse qui non vengono mai utilizzate per risolvere i problemi del mondo reale. Sono solo per conoscenza. Il più delle volte per gli strati nascosti utilizziamo relu e le sue varianti e per lo strato finale utilizziamo softmax o funzione lineare a seconda del tipo di problema.

 

Una risposta.

  1. Comprensione delle reti neurali artificiali - NetAi ha detto:

    […] circa novembre 2013, il termine “deep learning” in italiano “Apprendimento profondo” ha iniziato a guadagnare popolarità, soprattutto […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *