Funzioni di attivazione nelle reti neurali: cosa sono, come funzionano e quali scegliere
Cosa sono le funzioni di attivazione nelle reti neurali, come funzionano e come scegliere tra ReLU, sigmoide, tanh e softmax per addestrare modelli efficaci.

C’è un’idea semplice ma sorprendente al cuore di ogni rete neurale: senza le funzioni di attivazione, anche la rete più grande e profonda del mondo non sarebbe altro che una complicata somma di numeri, incapace di riconoscere un volto, tradurre una frase o giocare a scacchi. Sono proprio queste funzioni, spesso trascurate da chi si avvicina all’intelligenza artificiale, a dare alle reti la capacità di apprendere schemi complessi.
Eppure il loro funzionamento non è affatto misterioso. Una volta capito cosa fanno e perché servono, molti concetti del deep learning diventano improvvisamente più chiari.
In questa guida completa scoprirai cosa sono le funzioni di attivazione, come agiscono dentro un neurone artificiale e perché sono indispensabili. Vedremo una per una le più importanti, dalla sigmoide alla ReLU fino alla softmax, con i loro pregi e i loro difetti. Alla fine saprai anche come scegliere quella giusta a seconda del problema che devi risolvere, evitando gli errori più comuni.
Cosa sono le funzioni di attivazione
Una funzione di attivazione è una funzione matematica che decide se e quanto un neurone artificiale deve attivarsi, cioè quale valore deve trasmettere ai neuroni successivi. È il piccolo interruttore intelligente posto all’uscita di ogni unità di calcolo della rete.
Per capire il suo ruolo devi ricordare come lavora un neurone artificiale. Ogni neurone riceve dei valori in ingresso, li moltiplica per dei pesi, somma il tutto e aggiunge un termine chiamato bias. Il risultato è un semplice numero.
Quel numero, da solo, non basta. È qui che entra in gioco la funzione di attivazione, che prende quel valore grezzo e lo trasforma nell’output effettivo del neurone, comprimendolo in un certo intervallo, azzerandolo se negativo o convertendolo in una probabilità.
In altre parole, la somma pesata stabilisce quanto un neurone è stimolato, mentre la funzione di attivazione decide come reagire a quella stimolazione.
Il ruolo nel neurone artificiale
Immagina il neurone come un piccolo giudice. Raccoglie prove, cioè i segnali in ingresso, dà a ciascuna un peso in base a quanto la ritiene importante e poi emette un verdetto. La funzione di attivazione è il criterio con cui quel verdetto viene formulato.
Se il criterio fosse rigido, il neurone risponderebbe solo sì o no, acceso o spento. Se invece è morbido e graduale, il neurone può esprimere sfumature, dicendo quanto è convinto della sua risposta. Questa gradualità, come vedremo, è fondamentale per permettere alla rete di imparare.
Perché serve la non linearità
Arriviamo al punto più importante di tutta la guida. La ragione per cui le funzioni di attivazione esistono si riassume in una parola: non linearità.
Una trasformazione lineare è qualcosa di molto semplice, come moltiplicare e sommare. Il problema è che se impili molte trasformazioni lineari una dopo l’altra, il risultato resta comunque una singola trasformazione lineare. Aggiungere strati non servirebbe a nulla, perché cento moltiplicazioni in fila si possono sempre riscrivere come una sola.
Questo significa che una rete senza funzioni di attivazione, per quanto profonda, potrebbe apprendere solo relazioni lineari, cioè linee rette. Sarebbe incapace di modellare le curve, le eccezioni e gli intrecci che caratterizzano i dati del mondo reale.
Le funzioni di attivazione introducono proprio quelle piccole pieghe non lineari che, sommandosi strato dopo strato, permettono alla rete di approssimare relazioni di enorme complessità. È questa la scintilla che rende possibile il deep learning e la sua straordinaria capacità di riconoscere schemi.
Come funziona una funzione di attivazione
Dal punto di vista pratico, una funzione di attivazione prende un numero e ne restituisce un altro, seguendo una regola precisa. Se la somma pesata in ingresso vale un certo valore, la funzione lo trasforma secondo la sua curva caratteristica.
Alcune funzioni schiacciano qualsiasi numero in un intervallo ristretto, per esempio tra zero e uno. Altre lasciano passare i valori positivi così come sono e bloccano quelli negativi. Altre ancora convertono un intero gruppo di numeri in una distribuzione di probabilità che somma a uno.
Ogni scelta produce un comportamento diverso, e capire queste differenze è la chiave per usarle bene.
Attivazione e addestramento
Le funzioni di attivazione non servono solo a trasformare i segnali quando la rete elabora un dato. Hanno un ruolo decisivo anche durante l’addestramento, cioè nel momento in cui la rete impara dai propri errori.
L’apprendimento di una rete neurale si basa su un principio semplice. La rete fa una previsione, si misura quanto è sbagliata e poi si correggono leggermente i pesi per avvicinarsi alla risposta giusta. Questa correzione avviene attraverso la discesa del gradiente, un metodo che indica in che direzione modificare ogni peso.
Il calcolo della direzione richiede di conoscere la pendenza della funzione di attivazione, cioè la sua derivata. Se la funzione ha una pendenza utile, l’informazione sull’errore si propaga bene all’indietro fino ai primi strati e la rete impara in modo efficiente.
Se invece la funzione è quasi piatta in certe zone, la sua pendenza si avvicina a zero e con essa il segnale di correzione. In questo caso i neuroni smettono di aggiornarsi e la rete fatica ad apprendere.
Questo fenomeno ha un nome che sentirai spesso, il vanishing gradient, cioè il gradiente che svanisce. È uno dei motivi principali per cui alcune funzioni storiche sono state progressivamente abbandonate a favore di alternative più moderne, come scoprirai tra poco.
Le principali funzioni di attivazione
Nel corso degli anni sono state proposte molte funzioni di attivazione, ma alcune si sono imposte più di altre. Vediamole in ordine, partendo dalle più antiche e semplici per arrivare a quelle che oggi dominano la scena.
La funzione a gradino
La funzione a gradino è la più elementare di tutte. Restituisce uno se il valore in ingresso supera una certa soglia e zero altrimenti, esattamente come un interruttore. Era alla base dei primi modelli di neurone, i percettroni.
Il suo limite è evidente. Risponde solo in modo netto, acceso o spento, senza sfumature, e la sua pendenza è nulla quasi ovunque. Questo la rende inutilizzabile per l’addestramento moderno, perché non fornisce alcuna informazione utile alla discesa del gradiente. Oggi ha soprattutto valore storico e didattico.
La funzione sigmoide
La sigmoide è stata per lungo tempo la regina delle funzioni di attivazione. Ha una caratteristica forma a S e schiaccia qualsiasi numero in un intervallo compreso tra zero e uno.
Questa proprietà la rende molto intuitiva, perché il suo output si può leggere come una probabilità o come un grado di attivazione. Un valore vicino a uno significa neurone molto attivo, un valore vicino a zero significa neurone spento.
La sigmoide ha però due difetti importanti. Il primo è che, per valori molto grandi o molto piccoli, la curva diventa quasi piatta e la sua pendenza si annulla, provocando proprio quel vanishing gradient che rallenta l’apprendimento nelle reti profonde.
Il secondo è che i suoi valori non sono centrati sullo zero, essendo sempre positivi, e questo può rendere l’addestramento meno stabile. Per questi motivi la sigmoide, un tempo dominante negli strati nascosti, oggi si usa soprattutto nello strato finale di alcuni modelli.
La tangente iperbolica
La tangente iperbolica, che si abbrevia in tanh, è per molti versi una cugina migliorata della sigmoide. Ha anch’essa una forma a S, ma schiaccia i valori in un intervallo compreso tra meno uno e uno.
Il vantaggio rispetto alla sigmoide è proprio questo intervallo centrato sullo zero, che rende l’addestramento più fluido e spesso più rapido. Un neurone può esprimere sia attivazioni positive sia negative, cosa che aiuta la rete a bilanciare i segnali.
Purtroppo la tanh condivide con la sigmoide il problema della saturazione. Anche qui, per valori estremi, la curva si appiattisce e il gradiente rischia di svanire. Resta comunque una scelta valida in diversi contesti, in particolare in alcune reti che elaborano sequenze.
La funzione ReLU
Arriviamo alla funzione che ha cambiato le regole del gioco. La ReLU, acronimo di Rectified Linear Unit, ha una regola sorprendentemente semplice: se il valore in ingresso è positivo lo lascia passare invariato, se è negativo lo azzera.
Nonostante questa semplicità, o forse proprio grazie ad essa, la ReLU ha reso possibile l’addestramento delle reti molto profonde che caratterizzano il deep learning contemporaneo. I suoi vantaggi sono notevoli.
Prima di tutto, per i valori positivi non satura mai, quindi il gradiente si propaga bene e il problema del vanishing gradient si attenua fortemente. Inoltre è velocissima da calcolare, perché richiede solo un confronto con lo zero, e questo accelera l’addestramento di reti con milioni di parametri.
La ReLU introduce anche una utile sparsità. Poiché azzera tutti gli input negativi, in ogni momento solo una parte dei neuroni è attiva, rendendo la rete più efficiente e in un certo senso più pulita.
Non è però perfetta. Il suo difetto più noto è il fenomeno dei neuroni morti. Se un neurone finisce per ricevere sempre valori negativi, la ReLU lo azzera in continuazione, la sua pendenza resta nulla e quel neurone smette di imparare, restando spento per sempre.
Le varianti della ReLU
Proprio per risolvere il problema dei neuroni morti sono nate diverse varianti della ReLU, che ne conservano i pregi cercando di limitarne i difetti.
La Leaky ReLU, cioè la ReLU con perdita, invece di azzerare completamente i valori negativi li lascia passare con una pendenza molto piccola. In questo modo anche i neuroni che ricevono input negativi mantengono un filo di attività e continuano ad aggiornarsi, evitando di spegnersi del tutto.
Una sua evoluzione è la Parametric ReLU, in cui quella piccola pendenza per i valori negativi non è fissata a priori ma viene appresa dalla rete stessa durante l’addestramento.
Esistono poi funzioni più sofisticate come la ELU e soprattutto la GELU e la Swish, che uniscono la semplicità della ReLU a curve più morbide e regolari. Queste ultime si sono diffuse molto nei modelli linguistici di ultima generazione, dove aiutano a stabilizzare l’addestramento e a migliorare le prestazioni.
Non esiste una variante universalmente migliore. La scelta dipende dal tipo di rete, dai dati e, non di rado, da prove sperimentali.
La funzione softmax
La softmax merita un discorso a parte, perché non lavora su un singolo neurone ma su un intero gruppo di valori contemporaneamente. Il suo compito è trasformare una lista di numeri in una distribuzione di probabilità, in cui ogni valore è compreso tra zero e uno e la somma totale fa esattamente uno.
Questo la rende perfetta per lo strato finale di un classificatore. Se una rete deve decidere se un’immagine ritrae un cane, un gatto o un cavallo, la softmax assegna a ciascuna categoria una probabilità, per esempio ottanta per cento cane, quindici per cento gatto e cinque per cento cavallo.
Il bello della softmax è che amplifica le differenze. Il valore più alto tende a emergere con decisione rispetto agli altri, pur lasciando visibile il grado di incertezza. È diventata lo standard indiscusso per i problemi in cui bisogna scegliere una sola categoria tra molte.
Come scegliere la funzione di attivazione giusta
Di fronte a tante opzioni, la domanda pratica è inevitabile: quale funzione conviene usare? La risposta dipende soprattutto da dove si trova il neurone, se in uno strato nascosto o nello strato di uscita.
Per gli strati nascosti, quelli interni che fanno il grosso del lavoro, la scelta di partenza oggi è quasi sempre la ReLU o una delle sue varianti. È veloce, funziona bene nella maggior parte dei casi e raramente ti farà sbagliare. Se noti problemi di neuroni morti, puoi passare alla Leaky ReLU o a funzioni più recenti come la GELU.
Per lo strato di uscita, invece, la funzione va scelta in base al compito. Se devi risolvere un problema di classificazione binaria, cioè decidere tra due sole possibilità, la sigmoide è la candidata naturale, perché restituisce una probabilità.
Se la classificazione riguarda molte categorie, la softmax è la scelta giusta. Se invece stai affrontando un problema di regressione, in cui la rete deve prevedere un numero come un prezzo o una temperatura, spesso non si usa alcuna funzione di attivazione nello strato finale, lasciando che l’output sia un valore libero.
Questa piccola mappa mentale ti eviterà la maggior parte degli errori. Nel dubbio, parti dalle scelte standard e sperimenta solo se i risultati non ti soddisfano.
Problemi comuni e come affrontarli
Anche scegliendo bene, le funzioni di attivazione possono dare origine a qualche grattacapo. Conoscere questi problemi in anticipo ti permette di riconoscerli e correggerli.
Il primo è il vanishing gradient, di cui hai già sentito parlare. Nasce con funzioni che saturano, come sigmoide e tanh, e rallenta o blocca l’apprendimento negli strati più lontani dall’uscita. La cura più comune è passare a funzioni che non saturano, come la ReLU, e curare l’inizializzazione dei pesi.
C’è poi il problema opposto, l’exploding gradient, in cui i segnali di correzione diventano enormi e rendono l’addestramento instabile. Anche in questo caso una buona inizializzazione e alcune tecniche di normalizzazione aiutano a tenere tutto sotto controllo.
Il terzo è il fenomeno dei neuroni morti legato alla ReLU, che si affronta proprio con le varianti pensate per lasciare un margine di attività anche ai valori negativi.
Vale la pena ricordare che la funzione di attivazione è solo uno degli ingredienti di una rete che apprende bene. Va sempre accompagnata da scelte corrette su architettura, dati e regolarizzazione per evitare problemi come l’overfitting, cioè la tendenza della rete a memorizzare invece di generalizzare.
Funzioni di attivazione e modelli moderni
Le funzioni di attivazione non sono un dettaglio del passato, ma restano al centro delle architetture più avanzate. Ogni famiglia di reti ha le sue preferenze, maturate con l’esperienza.
Nelle reti convoluzionali usate per le immagini la ReLU e le sue varianti la fanno da padrone, grazie alla loro efficienza. Nelle reti che elaborano sequenze, invece, funzioni come la sigmoide e la tanh mantengono un ruolo importante all’interno dei meccanismi che regolano la memoria.
Nei grandi modelli linguistici che alimentano gli assistenti di oggi si sono affermate funzioni morbide come la GELU, capaci di offrire un addestramento stabile su scale enormi. È la prova che, anche mentre l’AI avanza a grande velocità, i principi che hai imparato in questa guida continuano a valere.
Un esempio pratico per fissare le idee
Per rendere tutto più concreto, immagina una piccola rete che deve riconoscere se in una foto è presente un gatto. La foto viene trasformata in numeri, che entrano nel primo strato di neuroni.
Ogni neurone di quello strato calcola la sua somma pesata, combinando i valori dei pixel secondo i propri pesi. Fin qui è tutta algebra lineare, priva di intelligenza. Poi interviene la funzione di attivazione, per esempio una ReLU, che azzera i contributi negativi e lascia passare quelli positivi.
Il risultato è che alcuni neuroni si accendono in presenza di certe caratteristiche, come un contorno curvo o una macchia di colore, mentre altri restano spenti. Strato dopo strato, queste attivazioni si combinano in modo sempre più astratto, passando dai bordi alle forme fino a concetti come orecchie a punta o baffi.
Arrivati all’ultimo strato, la rete deve esprimere un verdetto. Se il problema è semplicemente gatto oppure non gatto, una sigmoide traduce tutto in una probabilità, per esempio novanta per cento. Se invece la rete deve distinguere tra molti animali diversi, la softmax distribuisce la probabilità tra tutte le categorie possibili.
In questo viaggio, le funzioni di attivazione sono presenti a ogni passo. Senza di loro, la foto entrerebbe da un lato e uscirebbe una semplice combinazione lineare di pixel, senza che nessuna caratteristica venga davvero riconosciuta. Con loro, la stessa architettura diventa capace di vedere.
È utile notare come funzioni diverse convivano nella stessa rete, ciascuna al posto giusto. La non linearità negli strati interni costruisce la comprensione, mentre la funzione finale traduce quella comprensione in una risposta leggibile.
Conclusioni
Le funzioni di attivazione sono uno di quei concetti che, una volta compresi, illuminano tutto il resto. Sono loro a trasformare una fredda catena di moltiplicazioni in un sistema capace di apprendere, introducendo la non linearità senza la quale il deep learning non esisterebbe.
Abbiamo visto che non esiste una funzione perfetta per ogni situazione, ma esistono scelte sensate e collaudate. La ReLU e le sue varianti negli strati nascosti, la sigmoide e la softmax nello strato di uscita a seconda del compito: con questa bussola sei già in grado di orientarti nella maggior parte dei progetti.
Il consiglio finale è di non fermarti alla teoria. Prova a modificare la funzione di attivazione di una piccola rete e osserva come cambiano i risultati, perché è sperimentando che questi concetti si fissano davvero. Se vuoi continuare il percorso, esplora le altre guide del blog dedicate alle reti neurali, al deep learning e all’addestramento dei modelli, così da costruire un quadro completo di come nasce e impara un’intelligenza artificiale.