Funzioni di attivazione nelle reti neurali

I compiti di attivazione nelle reti neurali

Introduzione

Le funzioni di attivazione sono il condimento segreto dietro le straordinarie capacità delle reti neurali. Sono i decision-maker, che determinano se un neurone dovrebbe “attivarsi” o rimanere inattivo in base all’input che riceve. Sebbene possa sembrare una complessità intricata, comprendere le funzioni di attivazione è fondamentale per chiunque si immerga nelle reti neurali artificiali.

In questo articolo del blog, sveleremo il mistero delle funzioni di attivazione in modo facile da comprendere, anche se sei nuovo al machine learning. Pensalo come la chiave per sbloccare il potenziale nascosto delle reti neurali. Alla fine di questo articolo, comprenderai cosa sono le funzioni di attivazione e apprezzerai la loro importanza nell’apprendimento profondo.

Quindi, che tu sia un giovane scienziato dei dati, un appassionato di machine learning o semplicemente curioso della magia che avviene all’interno di quelle reti neurali, allaccia la cintura. Iniziamo un viaggio per esplorare il cuore dell’intelligenza artificiale: le funzioni di attivazione.

Obiettivi di apprendimento

  1. Comprendere il ruolo e la trasformazione delle funzioni di attivazione nelle reti neurali.
  2. Esplorare le funzioni di attivazione comuni e i loro pro e contro.
  3. Riconoscere scenari per funzioni di attivazione specifiche e il loro impatto sul flusso dei gradienti.

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Cos’è la funzione di attivazione?

Le funzioni di attivazione sono i decision-maker all’interno di una rete neurale. Sono associate a ciascun neurone e svolgono un ruolo cruciale nel determinare se un neurone dovrebbe essere attivato. Questa decisione di attivazione dipende dal fatto che l’input ricevuto da ciascun neurone sia rilevante per la previsione della rete.

Le funzioni di attivazione fungono da guardiani, consentendo solo a determinate informazioni di passare e contribuire all’output della rete. Aggiungono uno strato fondamentale di non linearità alle reti neurali, consentendo loro di apprendere e rappresentare pattern complessi all’interno dei dati.

Per approfondire questo concetto cruciale, esplora alcune funzioni di attivazione standard e le loro caratteristiche uniche. La funzione di attivazione svolge anche un ruolo vitale nella normalizzazione dell’output di ciascun neurone, limitandolo all’interno di un intervallo specifico, di solito tra 0 e 1 o tra -1 e 1.

In una rete neurale, gli input vengono forniti ai neuroni all’interno dello strato di input. Ogni neurone è associato a un peso e l’output del neurone viene calcolato moltiplicando l’input con il suo peso rispettivo. Questo output viene quindi trasmesso al layer successivo.

La funzione di attivazione è un “cancello” matematico tra l’input che entra nel neurone corrente e l’output trasmesso al layer successivo. Può essere semplice come una funzione a gradino, che commuta efficacemente l’output del neurone su o giù in base a una regola o una soglia definita.

In modo cruciale, le reti neurali utilizzano funzioni di attivazione non lineari. Queste funzioni sono strumentali nell’abilitare la rete a comprendere pattern complicati dei dati, calcolare e apprendere quasi ogni funzione rilevante per una determinata domanda e, alla fine, effettuare previsioni precise.

Ulteriori informazioni: Funzioni di attivazione | Fondamenti del deep learning

Funzioni di attivazione comunemente utilizzate

  • Funzione sigmoide
  • Funzione tangente iperbolica
  • Funzione ReLU
  • Funzione Leaky ReLU
  • Funzione ELU (Exponential Linear Units)

Funzione Sigmoide

La formula e la curva della funzione sigmoide sono le seguenti,

La funzione sigmoide è la funzione di attivazione più utilizzata all’inizio del deep learning. È una funzione di smorzamento facile da derivare.

La funzione sigmoide mostra che il suo output si trova nell’intervallo aperto (0,1). Possiamo pensare alla probabilità, ma nel senso stretto, non trattarla come una probabilità. La funzione sigmoide era una volta più diffusa. Può essere pensata come il tasso di scarica di un neurone. Nel mezzo, dove la pendenza è relativamente grande, è l’area sensibile del neurone. L’area inibitoria del neurone si trova ai lati, con una pendenza dolce.

Pensa alla funzione sigmoide come un modo per descrivere quanto attivo o “eccitato” è un neurone in una rete neurale. Immagina di avere un neurone, come un interruttore, nella tua rete.

  • Quando l’output della funzione sigmoide si avvicina a 1, puoi immaginare il neurone come altamente sensibile, come se fosse pronto a rispondere in modo deciso all’input.
  • Nel mezzo, dove la pendenza è ripida, qui il neurone è più sensibile. Se cambi leggermente l’input, l’output del neurone cambierà in modo significativo.
  • Nei lati, dove la pendenza è dolce, è come se il neurone fosse in un’area inibitoria. Qui, anche se cambi leggermente l’input, il neurone non reagisce molto. Non è molto sensibile in queste zone.

La funzione stessa ha certi difetti.

  1. Quando l’input è leggermente lontano dall’origine del sistema di coordinate, il gradiente della funzione diventa molto piccolo, quasi zero.
  • Perché i valori sono zero o trascurabili?
  • L’intervallo di output della funzione sigmoide è 0 o 1. La formula della funzione sigmoide è F(x) = 1 / (1 + e^-z), quindi poniamo il valore z = 0 o 1. (1 + e^-z) è sempre maggiore. ma questo termine è presente nel denominatore, quindi il calcolo complessivo è molto piccolo.
  • Quindi, i valori della funzione del gradiente sono molto piccoli o quasi zero.
  • Nel backpropagation in una rete neurale, ci affidiamo alla regola della catena della differenziazione per calcolare i gradienti di ogni peso (w). Tuttavia, quando il backpropagation passa attraverso la funzione sigmoide, il gradiente in questa catena può diventare estremamente piccolo. Inoltre, se ciò avviene attraverso più strati con funzioni sigmoide, può portare al peso (w) che ha un impatto minimo sulla funzione di perdita. Questa situazione non è favorevole per l’ottimizzazione del peso ed è comunemente chiamata “saturazione del gradiente” o “svanimento del gradiente”.
  • Considera uno strato…

2. L’output della funzione non è centrato su 0, il che può ridurre l’efficienza dell’aggiornamento del peso.

3. La funzione sigmoide coinvolge operazioni esponenziali, che possono essere computazionalmente più lente per i computer.

Vantaggi e Svantaggi della Funzione Sigmoide

Funzione Tanh

La formula e la curva della funzione tangente iperbolica sono le seguenti,

Tanh, abbreviazione di tangente iperbolica, è una funzione di attivazione strettamente correlata alla funzione sigmoide. Sebbene le curve delle funzioni tangente iperbolica e sigmoide siano simili, vi sono differenze significative. Confrontiamole.

Una caratteristica comune è che entrambe le funzioni producono output quasi lisci con gradienti piccoli quando i valori di input sono molto grandi o molto piccoli. Ciò può presentare sfide per gli aggiornamenti efficienti dei pesi durante l’addestramento. Tuttavia, la distinzione principale risiede nei loro intervalli di output.

L’intervallo di output di tanh varia da -1 a 1 e l’intera funzione è centrata su zero, il che la differenzia dalla funzione sigmoide.

In molti scenari, la funzione tangente iperbolica trova il suo posto negli strati nascosti delle reti neurali. Al contrario, la funzione sigmoide è spesso utilizzata nel livello di output, specialmente in compiti di classificazione binaria. Tuttavia, queste scelte non sono immutabili e dovrebbero essere adattate al problema specifico o determinate attraverso sperimentazione e messa a punto.

Vantaggi e Svantaggi della Funzione Tanh

Funzione ReLU

La formula e la curva della funzione ReLU sono le seguenti,

La funzione ReLU, abbreviazione di Rectified Linear Unit, è una funzione di attivazione relativamente recente e altamente influente nell’apprendimento profondo. A differenza di altre funzioni di attivazione, ReLU è notevolmente semplice. Restituisce semplicemente il valore massimo tra zero e il suo input. Sebbene ReLU non abbia una completa differenziabilità, possiamo utilizzare un approccio con i sottogradienti per gestire la sua derivata, come illustrato nella figura sopra.

ReLU ha acquisito una vasta popolarità negli ultimi anni, e con buoni motivi. Si distingue rispetto alle tradizionali funzioni di attivazione come la sigmoide e la tanh.

Vantaggi e Svantaggi della Funzione ReLU

Funzione Leaky ReLU

La formula e la curva della funzione Leaky ReLU sono le seguenti,

Per affrontare il “Problema del ReLU morto”, i ricercatori hanno proposto diverse soluzioni. Un approccio intuitivo consiste nel impostare la prima metà di ReLU a un piccolo valore positivo come 0,01x invece di uno stretto 0. Un altro metodo, ReLU Parametrica, introduce un parametro apprendibile, alpha. La funzione ReLU Parametrica è f(x) = max(alpha * x, x). Attraverso il backpropagation, la rete può determinare il valore ottimale di alpha. (Per selezionare un valore di alpha, scegliere il valore più piccolo).

In teoria, Leaky ReLU offre tutti i vantaggi di ReLU eliminando i problemi associati a “Relu morto”. Leaky ReLU consente un gradiente piccolo, non nullo per input negativi, evitando che i neuroni diventino inattivi. Tuttavia, se Leaky ReLU supera costantemente ReLU dipende dal problema specifico e dall’architettura. Non esiste una risposta universale, e la scelta tra ReLU e le sue varianti spesso richiede test empirici e tarature.

Queste varianti della funzione ReLU dimostrano la continua ricerca di migliorare le prestazioni e la robustezza delle reti neurali, adattandosi a una vasta gamma di applicazioni e sfide nell’apprendimento profondo.

Vantaggi e Svantaggi della Funzione Leaky ReLU

Funzione ELU (Exponential Linear Units)

La formula e la curva della funzione ELU sono le seguenti,

È un’altra funzione di attivazione proposta per affrontare alcune delle sfide poste da ReLU.

Vantaggi e Svantaggi della Funzione ELU

Addestramento delle Reti Neurali con Funzioni di Attivazione

La scelta delle funzioni di attivazione nelle reti neurali influisce significativamente sul processo di addestramento. Le funzioni di attivazione sono fondamentali nel determinare come le reti neurali imparano e se riescono a modellare efficacemente relazioni complesse all’interno dei dati. Qui discuteremo come le funzioni di attivazione influenzano l’addestramento, affrontiamo problemi come i gradienti che tendono a sparire e come determinate funzioni di attivazione mitigano queste sfide.

Impatto delle Funzioni di Attivazione sull’Addestramento:

  • Le funzioni di attivazione determinano come i neuroni trasformano i segnali in ingresso in attivazioni in uscita durante la propagazione in avanti.
  • Durante la retropropagazione, i gradienti calcolati per ogni layer dipendono dalla derivata della funzione di attivazione.
  • La scelta della funzione di attivazione influisce sulla velocità complessiva di addestramento, sulla stabilità e sulla convergenza delle reti neurali.

Gradienti che Tendono a Sparire:

  • I gradienti che tendono a sparire si verificano quando le derivate delle funzioni di attivazione diventano estremamente piccole, causando una lenta convergenza o stagnazione nell’addestramento.
  • Le funzioni di attivazione sigmoidali e tangenti sono note per causare gradienti che tendono a sparire, specialmente nelle reti profonde.

Mitigare il Problema dei Gradienti che Tendono a Sparire:

  • La Rectified Linear Unit (ReLU) e le sue varianti, come la Leaky ReLU, affrontano il problema dei gradienti che tendono a sparire fornendo un gradiente non nullo per input positivi.
  • Le funzioni ReLU portano a una convergenza più rapida a causa dell’assenza di gradienti che tendono a sparire quando gli input sono positivi.

Ruolo delle funzioni di attivazione centrata su zero:

  • Le funzioni di attivazione come ELU, che offrono un output centrato su zero, aiutano a mitigare il problema del gradiente che scompare fornendo gradienti sia positivi che negativi.
  • Le funzioni centrate su zero contribuiscono agli aggiornamenti stabili dei pesi e all’ottimizzazione durante l’addestramento.

Scelte di attivazione adattive:

  • La scelta della funzione di attivazione dovrebbe essere in linea con l’architettura della rete e con le specifiche del problema.
  • È essenziale testare empiricamente diverse funzioni di attivazione per determinare quella più adatta a un determinato compito.

Esempi pratici

Utilizzo di TensorFlow e Keras

import tensorflow as tffrom tensorflow.keras.layers import Densefrom tensorflow.keras.models import Sequential# Dati di esempiox = [[-1.0, 0.0, 1.0], [-2.0, 2.0, 3.0]]# Attivazione sigmoidalemodel_sigmoid = Sequential([Dense(3, activation='sigmoid', input_shape=(3,))])output_sigmoid = model_sigmoid.predict(x)# Attivazione tanhmodel_tanh = Sequential([Dense(3, activation='tanh', input_shape=(3,))])output_tanh = model_tanh.predict(x)# Attivazione ReLUmodel_relu = Sequential([Dense(3, activation='relu', input_shape=(3,))])output_relu = model_relu.predict(x)# Attivazione Leaky ReLUmodel_leaky_relu = Sequential([Dense(3, activation=tf.nn.leaky_relu, input_shape=(3,))])output_leaky_relu = model_leaky_relu.predict(x)# Attivazione ELUmodel_elu = Sequential([Dense(3, activation='elu', input_shape=(3,))])output_elu = model_elu.predict(x)print("Output Sigmoid:\n", output_sigmoid)print("Output Tanh:\n", output_tanh)print("Output ReLU:\n", output_relu)print("Output Leaky ReLU:\n", output_leaky_relu)print("Output ELU:\n", output_elu)#import csv

Utilizzo di PyTorch

import torchimport torch.nn as nn# Dati di esempiox = torch.tensor([[-1.0, 0.0, 1.0], [-2.0, 2.0, 3.0]], dtype=torch.float32)# Attivazioni sigmoidalesigmoid = nn.Sigmoid()output_sigmoid = sigmoid(x)# Attivazione tanhtanh = nn.Tanh()output_tanh = tanh(x)# Attivazione ReLUrelu = nn.ReLU()output_relu = relu(x)# Attivazione Leaky ReLUleaky_relu = nn.LeakyReLU(negative_slope=0.01)output_leaky_relu = leaky_relu(x)# Attivazione ELUelu = nn.ELU()output_elu = elu(x)print("Output Sigmoid:\n", output_sigmoid)print("Output Tanh:\n", output_tanh)print("Output ReLU:\n", output_relu)print("Output Leaky ReLU:\n", output_leaky_relu)print("Output ELU:\n", output_elu)

Ecco gli output per gli esempi di codice forniti utilizzando diverse funzioni di attivazione:

Output Sigmoid:

Output Sigmoid: [[0.26894143  0.5        0.7310586 ] [ 0.11920292  0.8807971  0.95257413]]

Output Tanh:

Output Tanh: [[-0.7615942  0.         0.7615942] [-0.9640276   0.9640276  0.9950547]]

Output ReLU:

Output ReLU: [[0. 2. 3.] [ 0. 2. 3.]]

Output Leaky ReLU:

Output Leaky ReLU: [[-0.01  0.    1.  ] [-0.02   2.    3.  ]]

Output ELU:

Output ELU: [[-0.63212055   0.   1. ] [-1.2642411     2.   3. ]]

Conclusion

Le funzioni di attivazione sono il cuore pulsante delle reti neurali, che determinano il modo in cui questi sistemi computazionali elaborano le informazioni. Dalla classica Sigmoide e Tangente iperbolica all’efficienza di ReLU e le sue varianti, abbiamo esplorato il loro ruolo nel plasmare il comportamento delle reti neurali. Ogni funzione offre punti di forza e debolezze uniche, e la scelta della giusta dipende dalla natura dei dati e dal problema specifico che si sta affrontando. Con una comprensione pratica dell’implementazione, sei ora in grado di prendere decisioni informate, sfruttando queste funzioni per ottimizzare le prestazioni della tua rete neurale e sbloccare il potenziale del deep learning nei tuoi progetti.

Concetti chiave:

  • Le funzioni di attivazione sono fondamentali nelle reti neurali, trasformando i segnali di input e consentendo l’apprendimento delle relazioni complesse dei dati.
  • Le funzioni di attivazione comuni includono Sigmoide, Tangente iperbolica, ReLU, Leaky ReLU e ELU, ognuna con caratteristiche e casi d’uso unici.
  • Comprendere i vantaggi e gli svantaggi delle funzioni di attivazione aiuta a selezionare quella più adatta per compiti specifici delle reti neurali.
  • Le funzioni di attivazione sono cruciali nel risolvere problemi di gradiente, come la scomparsa del gradiente, durante la retropropagazione.

Domande frequenti (FAQ)

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.