Cosa sono gli Hidden layer, ecco perché si chiama deep learning

Cosa sono i layer nascosti di una rete neurale, perché si chiamano così e perché la loro presenza è la ragione del nome deep learning.
Immagine realizzata con IA
Le immagini presenti nel post possono essere realizzate o elaborate con strumenti di Intelligenza Artificiale. Questa scelta nasce anche dalla necessità di prevenire le continue contestazioni e richieste economiche improprie che ricevo relative a fotografie utilizzate che sono sempre state acquistate con regolare licenza.
Contenuti dell'articolo

Guarda lo schema di una rete neurale e vedrai sempre la stessa sequenza: un livello di ingresso, una serie di livelli intermedi, un livello di uscita. Quei livelli intermedi hanno un nome preciso, hidden layer, cioè layer nascosti.

È una delle espressioni che si incontrano più spesso quando si studia l’intelligenza artificiale, ed è anche una delle più fraintese. Nascosto non vuol dire misterioso, né inaccessibile.
Vuol dire che quei valori non corrispondono a niente che tu abbia dato in pasto al modello e a niente che il modello ti restituisca.

Qui vediamo cosa sono i layer nascosti, perché hanno questo nome e perché la loro presenza è la ragione per cui oggi si parla di deep learning.

Cos’è un hidden layer, in parole semplici

Una rete neurale è organizzata in livelli sovrapposti.
Il primo è il layer di input, l’ultimo è il layer di output, mentre tutto quello che sta in mezzo è un hidden layer.

Il livello di ingresso non calcola praticamente nulla: prende i dati e li consegna così come sono.
Il livello di uscita produce la risposta finale.
In mezzo, i layer nascosti fanno il lavoro vero, perché trasformano i numeri in ingresso in rappresentazioni via via più utili per il compito.

Ogni neurone di un layer nascosto riceve i valori del layer precedente, li combina con i suoi pesi e bias, applica una funzione di attivazione e passa il risultato al layer successivo. Se hai già letto la lezione sul neurone artificiale, la meccanica ti suona familiare: qui cambia solo la scala, perché ne ripeti lo stesso calcolo migliaia o milioni di volte.

TIP: Perché “nascosto”

Il termine non ha nulla a che vedere con il segreto o con il mistero. Un layer è nascosto perché non è un punto di contatto con l’esterno: i suoi valori non sono dati di partenza e non sono il risultato che leggi. Sono uno stato interno intermedio, visibile solo a chi apre il modello e lo ispeziona.

Un esempio concreto: come fa una rete a riconoscere un gatto

Immagina una rete addestrata a riconoscere gatti nelle fotografie.
Prende in ingresso un’immagine da 224 x 224 pixel a colori: sono circa 150.000 numeri, uno per ogni componente di colore di ogni pixel. Al livello di ingresso sono solo numeri, senza alcun significato.

Il primo layer nascosto cerca cose elementari: bordi, contorni, passaggi netti di luminosità. Non ha la minima idea di cosa sia un gatto, né gli serve saperlo.
Il secondo combina quei bordi in angoli, curve e texture, per esempio la trama del pelo.
Il terzo mette insieme curve e texture e inizia a riconoscere parti riconoscibili: un orecchio appuntito, un occhio, i baffi.

Nei layer più profondi la rappresentazione si fa sempre più astratta. Un livello intermedio può accendersi per la sagoma di una testa con le orecchie a punta, senza sapere se l’animale è seduto o in piedi.

Il layer di output, alla fine, trasforma tutto questo in una risposta: per esempio 92% gatto.

Il punto chiave è che nessun singolo layer sa tutto. Ognuno guarda il risultato del precedente e aggiunge un pezzo di astrazione. Questa si chiama rappresentazione gerarchica, ed è il cuore del deep learning.

Infografica: dal pixel al concetto, cosa impara ogni hidden layer in una rete che riconosce un gatto

Perché si chiama deep learning

Il nome arriva dalla profondità: una rete è deep quando impila molti hidden layer, uno dopo l’altro.
Una rete con un solo layer nascosto si chiama invece shallow, superficiale.

Un po’ di storia, in tre tappe

Il percettrone di Frank Rosenblatt, nel 1958, non aveva nemmeno un layer nascosto: ingresso collegato direttamente all’uscita. Funzionava su problemi semplici e si bloccava su quelli non separabili linearmente, come il famoso caso dello XOR.

Nel 1989 arrivò il teorema di approssimazione universale: una rete con un solo hidden layer e abbastanza neuroni può approssimare qualsiasi funzione continua. È un risultato teorico importante, ma con un limite pratico. Per ottenere la stessa potenza espressiva che si raggiunge con pochi layer profondi, un solo layer dovrebbe contenere un numero di neuroni assurdamente grande. In profondità si arriva prima e con meno parametri.

Nel 2012 AlexNet ha spazzato via ogni dubbio. Otto layer, 60 milioni di parametri, con un errore top-5 del 15,3% alla competizione ImageNet, contro il 26,2% del secondo classificato. Da quel momento il termine deep learning è entrato nel vocabolario comune. Nel 2015 ResNet ha spinto la profondità a 152 layer, nel 2020 GPT-3 viaggiava su 96 layer e 175 miliardi di parametri.

Quanti layer servono per essere “deep”?

Non esiste una soglia ufficiale. La convenzione più diffusa è semplice: più di un hidden layer. Nel linguaggio quotidiano, però, una rete “profonda” oggi ha decine o centinaia di layer. Il confine tra shallow e deep è quindi sfumato e cambia con le epoche, non è una regola scolpita da nessuna parte.

TIP: Profondo, largo e grande non sono sinonimi

Profondità è il numero di layer impilati. Larghezza è quanti neuroni ci sono in un singolo layer. Dimensione è il totale dei parametri del modello. Puoi avere un modello profondissimo ma stretto, oppure poco profondo e larghissimo. Sono tre misure diverse, spesso confuse tra loro.

Cosa impara ogni livello: dalla semplicità all’astrazione

La regola generale vale in tutti i domini: i layer iniziali catturano dettagli locali e semplici, i layer finali catturano concetti complessi e globali.

Nelle immagini

Bordi, poi texture, poi parti di oggetti, infine oggetti interi. È una catena che va dal dettaglio al significato, dove ogni anello è costruito sopra il precedente.

Nel testo

Il meccanismo è lo stesso ma applicato alle parole. I primi layer gestiscono il livello più basso, quello dei embedding dei token, quindi la forma delle parole. I layer intermedi cominciano a rappresentare la struttura della frase, il ruolo grammaticale delle parole, chi fa cosa. I layer più profondi lavorano sul significato complessivo, sul tono, sull’intento e sulle relazioni tra parti lontane del testo.

L’ultimo layer nascosto: il riassunto del contenuto

L’ultimo layer nascosto è spesso il più interessante, perché contiene una sorta di riassunto numerico di tutto l’input. In gergo si chiama hidden state, o rappresentazione latente. È lo stesso tipo di vettore che trovi quando parli di spazi latenti: un concentrato compatto del contenuto, pronto per essere usato dal layer di output.

Hidden layer, input layer e output layer: le differenze

LivelloCosa contieneDa dove arrivano i valori
InputI dati grezzi: pixel, token, numeriDall’esterno, li fornisci tu
HiddenRappresentazioni intermedie, sempre più astratteCalcolate dal layer precedente
OutputLa risposta finale: classe, probabilità, tokenCalcolata dal modello e restituita

Da questa tabella si capisce anche cosa significa “addestrare” una rete profonda: i valori nei hidden layer non sono scritti da nessuno, emergono da soli durante il training: sono il risultato di miliardi di piccoli aggiustamenti dei pesi.

Deep non significa automaticamente meglio

Aggiungere layer aumentò la potenza delle reti, ma portò con sé anche problemi seri. Per anni le reti profonde sono state difficilissime da addestrare. Il motivo principale stava nel modo in cui l’errore si propaga all’indietro.

Il problema del gradiente che svanisce

Durante l’addestramento l’errore viene riportato all’indietro, layer per layer, per correggere i pesi. Con molti layer questo segnale tende a rimpicciolirsi a ogni passaggio, fino a diventare praticamente zero nei primi strati. Il risultato è che i layer iniziali non imparano quasi nulla. È il vanishing gradient, il freno principale al deep learning per anni.

Come si è risolto

La svolta è arrivata da una combinazione di soluzioni. Le funzioni di attivazione come ReLU al posto della sigmoide, che non schiacciano il segnale. Le connessioni residue di ResNet, che creano una scorciatoia diretta tra layer distanti e lasciano passare il gradiente senza deformarlo. La batch normalization, che stabilizza i valori interni. E in generale tecniche di inizializzazione dei pesi più intelligenti.

Overfitting e costo

Più layer significano più parametri, quindi più capacità di memorizzare. Una rete troppo profonda per la quantità di dati disponibile impara a memoria gli esempi di addestramento e poi sbaglia su quelli nuovi: è l’overfitting. In più ogni layer aggiunge calcolo, quindi tempo e soldi. La profondità giusta è un compromesso, non un record da battere.

Si può “vedere” dentro un hidden layer?

Sì, almeno in parte. Esistono tecniche di interpretabilità che visualizzano cosa attiva un determinato neurone, o che verificano con piccoli classificatori di prova quali informazioni sono contenute in un certo layer.

Quello che emerge è una rappresentazione distribuita: un concetto non vive in un singolo neurone, ma è distribuito su moltissimi neuroni, mentre ogni neurone partecipa a molti concetti diversi. È il motivo per cui nessuno può aprire un modello e leggere l’elenco delle cose che ha imparato. Si vedono pattern, non etichette.

Infografica: input layer, hidden layer e output layer a confronto, con la profondità crescente della rappresentazione

Domande frequenti sui hidden layer

Quanti hidden layer ha una rete neurale?

Dipende dal modello. Una piccola rete per dati tabellari può averne uno o due. Le reti convoluzionali per immagini ne hanno decine, i grandi modelli linguistici arrivano a centinaia. GPT-3, per esempio, ha 96 layer. Non esiste un numero corretto in assoluto, esiste il numero giusto per il compito e per i dati che hai.

Perché si chiamano layer nascosti se posso ispezionarli?

Perché “nascosto” si riferisce al ruolo, non all’accessibilità. Non sono visibili dall’esterno della rete, non sono dati che inserisci e non sono risultati che ricevi. Puoi aprire il modello, leggerne i pesi e visualizzarne le attivazioni, ma nell’uso normale quei valori restano uno stato interno che non passa mai dall’interfaccia.

Aggiungere layer rende sempre il modello più preciso?

No. Fino a un certo punto la profondità aiuta, perché permette di costruire rappresentazioni più astratte. Oltre quel punto si entra nell’overfitting e nel costo di calcolo inutile. Un modello più profondo richiede più dati e più addestramento per esprimere il suo potenziale, altrimenti peggiora rispetto a uno più semplice.

Qual è la differenza tra un layer nascosto e un neurone?

Il neurone è l’unità di calcolo, il singolo elemento che combina pesi, bias e funzione di attivazione. Il layer nascosto è il gruppo di neuroni che lavorano allo stesso livello della rete, tutti collegati alla stessa coppia di layer adiacenti. Un layer contiene molti neuroni: la sua larghezza è proprio il numero di neuroni che ospita.

Un Transformer ha hidden layer?

Sì, ne ha molti. Ogni blocco di un Transformer contiene sottolivelli di attenzione e di rete feed-forward, poi i blocchi si impilano uno sopra l’altro. Anche lì vale la stessa logica: i blocchi iniziali lavorano su dettagli locali e sintattici, i blocchi finali su significato e relazioni a lunga distanza. Se vuoi approfondire come è organizzato un modello, ho scritto una lezione dedicata a layer e architettura.

Newsletter settimanale con le ultime novità sull’intelligenza artificiale

Corso gratuito sull’Intelligenza Artificiale, dalle nozioni base ai concetti più complessi

Condividi:

Potrebbero interessarti