Tema

Machine learningdi

Le reti multistrato: oltre il muro del percettrone

Il pezzo sul percettrone si era chiuso davanti a un muro: quattro punti - il problema XOR - che nessuna retta separa, e la promessa che due strati di percettroni sarebbero bastati ad abbatterlo. Questo pezzo comincia mantenendo la promessa, coi conti che si rifanno a mano. Poi affronta le domande che quella mossa apre: perché impilare funziona solo se in mezzo c’è una curva, come si ripartisce l’errore sugli strati che nessuna etichetta raggiunge - il problema che fermò le reti per vent’anni - e quanto si guadagna davvero, misurato sugli stessi dati di prima.

La rete minima che abbatte il muro

Tre percettroni: due leggono gli ingressi, il terzo legge loro due. Il problema impossibile diventa una tabella di quattro righe.

La rete neurale multistrato più piccola che serva a qualcosa ha due ingressi, due neuroni nel mezzo e un’uscita. I due neuroni di mezzo formano lo strato nascosto: nascosto perché non tocca né gli ingressi né l’uscita - legge i primi, scrive al terzo. I pesi, per ora, li scriviamo a mano; che l’addestramento possa trovarli da solo è il tema di tutto il resto del pezzo.

L’immagine domestica di XOR è la luce delle scale: due deviatori, uno in basso e uno in cima, e la luce è accesa quando uno solo dei due è alzato - alzarli entrambi la spegne. Il primo neurone nascosto si accende se almeno uno dei due ingressi è acceso (pesi 1 e 1, soglia 0,5). Il secondo se lo sono entrambi (pesi 1 e 1, soglia 1,5). L’uscita legge loro due: si accende se il primo è acceso ma il secondo no (pesi 1 e -1, soglia 0,5). I quattro casi, svolti:

Ingressi «almeno uno» «entrambi» Uscita XOR vero
0 · 0 0 0 0 0
0 · 1 1 0 1 1
1 · 0 1 0 1 1
1 · 1 1 1 0 0

La tabella qui sopra ha appena risolto il problema che nel 1969 aveva fermato il percettrone: l’uscita coincide con XOR in tutti e quattro i casi. Il «muro» del pezzo precedente - i quattro punti che nessuna retta riesce a separare - è superato. Ma il modo della soluzione insegna più della soluzione, e per vederlo bisogna disegnare i quattro casi come punti: è la figura qui sotto. A sinistra il piano ha per assi i due ingressi: ogni riga della tabella è un punto, e nessuna retta separa i due pieni dai due vuoti. A destra lo stesso disegno è rifatto con altri assi: non più i due ingressi, ma le risposte dei due neuroni nascosti - «almeno uno» in orizzontale, «entrambi» in verticale. Qui succede la cosa decisiva: i casi 0·1 e 1·0 hanno le stesse risposte (per tutti e due «almeno uno» dà 1 ed «entrambi» dà 0), quindi finiscono nello stesso punto. I punti da separare non sono più quattro ma tre, e per quei tre una retta basta: a tracciarla è l’uscita, che è un percettrone qualunque. Questo è tutto il segreto dello strato nascosto: ha spostato i punti, finché il problema è diventato quello facile. La rassegna che Nature ha dedicato al campo lo dice con le parole giuste: gli strati nascosti «deformano l’ingresso in modo non lineare, finché le categorie diventano separabili con una retta dall’ultimo strato».

Lo strato nascosto sposta i punti del problema XOR finché una retta basta Due riquadri. A sinistra, i quattro punti XOR nello spazio degli ingressi: i pieni (0·1 e 1·0) su una diagonale, i vuoti (0·0 e 1·1) sull'altra, nessuna retta possibile. A destra, gli stessi casi nello spazio dei due neuroni nascosti, con l'asse orizzontale «almeno uno» e il verticale «entrambi»: 0·0 resta in basso a sinistra, 0·1 e 1·0 collassano nello stesso punto in basso a destra, 1·1 sale in alto a destra - e una retta in colore d'accento separa il punto pieno dai due vuoti. NELLO SPAZIO DEGLI INGRESSI DOPO LO STRATO NASCOSTO 0·0 1·0 0·1 1·1 ALMENO UNO → ENTRAMBI ↑ 0·0 0·1 e 1·0 1·1 PIENI: RISPOSTA 1 · VUOTI: RISPOSTA 0
Gli stessi quattro casi, prima e dopo lo strato nascosto. A sinistra nessuna retta li separa. A destra i due casi «uno solo acceso» sono collassati nello stesso punto, e la retta che mancava esiste: è quella dell'uscita, acceso «almeno uno» meno «entrambi» sopra 0,5.

I conti della tabella si rifanno con xor.py nel repository che accompagna il pezzo.

Perché serve una curva: il collasso lineare

Impilare strati senza curve non compra niente: due trasformazioni lineari in fila sono ancora una trasformazione lineare.

Prima di addestrare serve un chiarimento che decide tutto. Se i neuroni si limitassero a fare somme pesate - senza la funzione di attivazione in mezzo - impilare strati non servirebbe a niente: una somma pesata di somme pesate è ancora una somma pesata, e la rete a dieci strati saprebbe fare esattamente ciò che sa fare un percettrone. È il collasso lineare: la profondità paga solo se fra uno strato e l’altro c’è una curva.

Il gradino del percettrone è una curva, e infatti la rete della tabella funziona. Ma ha un difetto: è piatto ovunque e salta in un punto - non ha una pendenza che dica quanto cambierebbe l’uscita se la somma cambiasse di poco. Per addestrare serve proprio quella pendenza, e per questo la rinascita delle reti passò da curve morbide come la sigmoide: una S che schiaccia qualunque somma fra 0 e 1, sale dolcemente, e ha pendenza in ogni punto. Detto con gli oggetti di casa: col gradino il neurone è un interruttore, o acceso o spento; con la sigmoide diventa un reostato - la manopola che accende la luce per gradi - e fra spento e acceso ha tutte le gradazioni: la gradazione dice di quanto, e in che verso, girare ancora la manopola.

Il problema dei vent’anni: a quale peso addebitare l’errore?

L’etichetta dice se l’uscita è giusta. Ma quale dei pesi nascosti ha sbagliato? Senza risposta, le reti multistrato restarono ferme.

La regola di apprendimento del percettrone funzionava perché l’errore era lì, in uscita, e tutti i pesi erano attaccati all’uscita. In una rete multistrato no: gli esempi etichettati dicono che la risposta è sbagliata, ma nessuna etichetta dice che cosa avrebbero dovuto fare i neuroni nascosti. Quale dei cinquantamila pesi interni ha sbagliato, e di quanto? Senza una risposta a questa domanda - il problema dell’attribuzione dell’errore (credit assignment) - gli strati nascosti non si possono addestrare, e per una ventina d’anni le reti multistrato rimasero una possibilità teorica.

La risposta ha una storia che va raccontata bene, perché la vulgata la semplifica fino a falsificarla. L’idea matematica - si può calcolare la responsabilità di ogni peso procedendo all’indietro - fu scoperta indipendentemente da più gruppi negli anni Settanta e Ottanta, come ricorda la rassegna che Yann LeCun, Yoshua Bengio e Geoffrey Hinton firmarono su Nature; la ricostruzione dettagliata, coi nomi e le date, è nella rassegna storica di Jürgen Schmidhuber citata in fondo.

Il 1986 è l’anno in cui l’idea divenne lo strumento di tutti: David Rumelhart, Geoffrey Hinton e Ronald Williams pubblicarono su Nature l’articolo che dà alla procedura il nome con cui la conosciamo - e che abbiamo letto in originale. L’obiettivo è individuato con precisione: grazie alle correzioni dei pesi, le unità nascoste «arrivano a rappresentare i tratti importanti del dominio del compito»; e questa capacità di crearsi i propri tratti «distingue la retropropagazione da metodi precedenti e più semplici, come la procedura di convergenza del percettrone». La procedura di convergenza è esattamente il teorema del pezzo precedente: la nuova regola si presenta al mondo misurandosi con la vecchia.

La retropropagazione, spiegata a parole

Si misura l’errore in uscita, si ripartisce all’indietro in proporzione alle responsabilità, e ogni peso scende di un passo contro il suo errore.

Il nome italiano dice già quasi tutto: retropropagazione, l’errore propagato all’indietro. Il giro completo, per un esempio:

L’ultimo punto ha un nome da imparare: discesa del gradiente. L’errore complessivo della rete è un paesaggio - tante colline quante sono le combinazioni dei pesi - e il gradiente è la pendenza del punto in cui la rete si trova: correggere i pesi contro il gradiente significa fare un passo in discesa. Passo dopo passo, esempio dopo esempio, la rete scende verso una valle dove gli errori sono pochi. Qui il gradino del percettrone esce di gara: dove non c’è pendenza, non c’è direzione di discesa - per questo gli strati nascosti vogliono curve morbide.

La regola di apprendimento del percettrone, vista da qui, era il caso più semplice della stessa idea: un solo strato, l’errore già in uscita, niente da ripartire. La retropropagazione è la sua erede per le reti con dentro qualcuno a cui chiedere conto. Il programma nel repository la esegue riga per riga, coi commenti in italiano, nella funzione impara.

La garanzia gemella: il teorema di approssimazione universale

Un solo strato nascosto abbastanza largo può approssimare qualunque funzione continua. Il teorema dice che la rete esiste, non che la discesa la trova.

Il percettrone aveva il suo teorema di convergenza; le reti multistrato hanno la garanzia gemella. Nel 1989 George Cybenko dimostrò il teorema di approssimazione universale - l’articolo sta fra le fonti in fondo al pezzo, e potete leggerlo nell’originale. Il teorema dice che a una rete basta un solo strato nascosto, purché largo a sufficienza, con una curva a S qualsiasi, per avvicinarsi quanto si vuole a qualunque funzione continua: nelle sue parole, «regioni di decisione arbitrarie possono essere approssimate arbitrariamente bene» da reti «con un solo strato interno nascosto». Il problema del percettrone non era un limite delle reti: era il limite di uno strato solo.

I due teoremi però non dicono la stessa cosa, e la differenza è decisiva. Il teorema di convergenza del percettrone garantiva che, se la soluzione esiste, la regola la trova. Il teorema di Cybenko garantisce soltanto che la soluzione esiste: non dice che la discesa del gradiente la troverà, né quanti neuroni serviranno. Per questo l’addestramento delle reti è rimasto per decenni un mestiere, oltre che una teoria.

E se un solo strato nascosto in teoria basta, perché oggi le reti sono profonde? Perché la profondità della rete permette a poco prezzo ciò che la larghezza paga carissimo, e il motivo si può dire per intero. Uno strato solo non condivide niente: ogni suo neurone costruisce la risposta direttamente dai dati grezzi, ogni combinazione utile vuole neuroni suoi, e il conto - proprio quello che il teorema lasciava aperto - cresce in fretta. La profondità invece compone: i primi strati imparano pochi tratti semplici, i successivi li combinano in tratti sempre più ricchi, e un tratto imparato una volta serve a tutte le combinazioni che lo contengono - e le combinazioni si moltiplicano da sole: dieci tratti accesi o spenti ne danno più di mille, venti più di un milione. La ragione ultima sta nei dati: la rassegna di Nature osserva che i segnali naturali sono essi stessi gerarchie di composizioni - nelle immagini «combinazioni locali di bordi formano motivi, i motivi si assemblano in parti, e le parti formano oggetti», e nella lingua lo stesso, dai suoni alle sillabe, alle parole, alle frasi. Una rete profonda ha la stessa forma delle cose che impara. La radiografia del piccolo GPT, con la predizione che matura blocco dopo blocco, è la stessa idea vista al lavoro.

I guai del mestiere dell’addestratore di reti neurali

Il gradiente che svanisce, il passo della discesa, l’imparare a memoria: i tre modi in cui l’addestramento va storto.

La discesa del gradiente funziona, ma chi addestra una rete incontra tre difficoltà ricorrenti. Vale la pena conoscerle, perché da esse discendono scelte che si ritrovano in ogni rete moderna: la ReLU al posto della sigmoide, il tasso da regolare con cura, il giudizio su dati mai visti.

Il gradiente che svanisce. Nel viaggio all’indietro, il segnale d’errore di ogni strato viene moltiplicato per la pendenza della curva dello strato successivo. La sigmoide è quasi piatta agli estremi: pendenze piccole, moltiplicate strato dopo strato, spengono il segnale - e gli strati vicini all’ingresso smettono di imparare. È il gradiente che svanisce (vanishing gradient), il freno storico delle reti profonde. La funzione che ha vinto è la ReLU - Rectified Linear Unit, l’unità lineare rettificata: «rettificata» nel senso del raddrizzatore, il componente elettrico che lascia passare la corrente in un verso solo. Fa proprio questo: zero sotto lo zero, la somma così com’è sopra - pendenza 1 ovunque sia accesa, niente da spegnere, e un costo di calcolo minimo. La rassegna di Nature del 2015 la registra senza giri di parole: «al momento, la funzione non lineare più popolare è la ReLU». Il suo difetto è il rovescio del pregio: un neurone che riceve solo somme negative resta spento per sempre.

Funzione La forma Il pregio Il difetto Dove si usa oggi
Gradino 0 o 1, salto secco la decisione più semplice nessuna pendenza: la discesa non ha direzione nel percettrone - e riaffiora nelle reti a 1 bit, con un trucco (più avanti)
Sigmoide una S fra 0 e 1 pendenza ovunque; si legge come probabilità quasi piatta agli estremi: il gradiente svanisce alle uscite, quando serve un sì/no graduato
Tanh una S fra -1 e 1 come la sigmoide, ma centrata sullo zero lo stesso appiattimento agli estremi dove i dati hanno un segno - un segnale audio che oscilla fra più e meno - e comunque sempre più di rado
ReLU zero sotto, la somma sopra pendenza 1 dove è accesa; costa quasi niente i neuroni sempre spenti non imparano più lo standard degli strati nascosti
Tre funzioni di attivazione a confronto: gradino, sigmoide, ReLU Tre riquadri con gli stessi assi. Il gradino salta da 0 a 1 in un punto, piatto altrove. La sigmoide sale dolcemente a S da 0 a 1, con pendenza in ogni punto ma quasi piatta agli estremi. La ReLU è zero a sinistra dello zero e sale come una retta a destra, con pendenza costante 1. GRADINO SIGMOIDE RELU STESSA DOMANDA: QUANTA PENDENZA C'È IN OGNI PUNTO?
Le tre curve che hanno segnato tre epoche. Il gradino decide ma non ha pendenza: la discesa non sa dove andare. La sigmoide ha pendenza ovunque, ma agli estremi è quasi piatta e il gradiente svanisce. La ReLU ha pendenza 1 dove è accesa: ecco perché è lo standard degli strati nascosti.

Il passo della discesa. Il secondo guaio è il tasso di apprendimento. La discesa cerca un minimo: il fondo della valle dell’errore, il punto dove nessun ritocco ai pesi fa più calare l’errore. Il tasso di apprendimento è la lunghezza del passo con cui si scende, ed è un compromesso obbligato: troppo alto e ogni passo scavalca il fondo - la discesa rimbalza da un versante all’altro; troppo basso e i passi sono così corti che il fondo non si raggiunge in tempi umani. Nel repository si può toccare con mano: è una costante in testa al programma.

La stessa valle dell'errore con tre lunghezze di passo: giusto, troppo alto, troppo basso Tre riquadri con la stessa valle a forma di U e una linea tratteggiata sul fondo, il minimo. Nel primo, passo giusto: i punti scendono lungo il versante sinistro con passi che si accorciano e l'ultimo punto, pieno, tocca il fondo. Nel secondo, passo troppo alto: i punti saltano da un versante all'altro scavalcando il fondo, ogni rimbalzo più in alto del precedente. Nel terzo, passo troppo basso: i punti si affollano in cima al versante sinistro con passi minuscoli, e il fondo resta lontano. MINIMO PASSO GIUSTO TROPPO ALTO TROPPO BASSO LA STESSA VALLE, TRE LUNGHEZZE DI PASSO: IL TRATTEGGIO È IL MINIMO
La valle dell'errore vista tre volte. Col passo giusto la discesa arriva al minimo con passi che si accorciano man mano che la pendenza cala. Col passo troppo alto ogni passo scavalca il fondo, e la discesa rimbalza fra i versanti salendo invece di scendere. Col passo troppo basso ogni passo è un'inezia: la direzione è giusta, ma il fondo resta lontano.

L’imparare a memoria. Il terzo guaio: una rete con cinquantamila pesi può permettersi di memorizzare gli esempi invece di capirli - eccellente sull’addestramento, inutile sui dati nuovi. È il sovradattamento, e il metro per accorgersene è la generalizzazione del pezzo precedente: si giudica su esempi mai visti, sempre. Più la rete è grande e meno esempi ha, più il rischio cresce - ecco perché le reti moderne si addestrano con tecniche apposite per disturbare la memorizzazione (la più nota è il dropout: a ogni giro si spegne a caso una parte dei neuroni, così nessuno può specializzarsi su un esempio), e con tantissimi dati.

E le tre curve si possono provare giocando, qui sotto. Il campo è la luce delle scale di poco fa: due deviatori, la luce accesa quando uno solo dei due è alzato. Si gioca così:

Qui comincia la seconda partita, quella delle tre curve. Prima di premere «Addestra» potete scegliere la funzione di attivazione dello strato nascosto, e ognuna gioca col suo carattere:

Il cursore del tasso di apprendimento è il passo della discesa: alzatelo e l’errore si mette a oscillare, abbassatelo e i giri si allungano. E la mappa accanto ai comandi è la geometria di tutto questo: la risposta della rete su tutte le posizioni intermedie degli interruttori - i nove numeri resi visibili - con la superficie che si piega mentre impara.

La rete non tocca né le leve né la lampadina: impara a simulare il circuito. Il suo compito è prevedere, per ogni posizione dei due deviatori, se la luce vera è accesa o spenta - e all'inizio, coi pesi a caso, tira a indovinare.

FASE 1 · A MANO: FATE ESPERIENZA DELLE COMBINAZIONI

TOCCATE GLI INTERRUTTORI, IN BASSO E IN CIMA ALLE SCALE

LA LUCE VERA SECONDO LA RETE IN BASSO IN CIMA

IL CIRCUITO SI CHIUDE - E LA LUCE SI ACCENDE - QUANDO LE DUE LEVE SCELGONO LO STESSO FILO

FASE 2 · L'ADDESTRAMENTO, DA GUARDARE

LA CURVA DELLO STRATO NASCOSTO

GIRI 0 · LAMPADINE GIUSTE · ERRORE

Pesi a caso. Fase 1: toccate gli interruttori nella scena e cercate dove la rete sbaglia. Poi «Addestra».

LA MAPPA ACCESA SPENTA

L'ERRORE, GIRO PER GIRO

Alla fine del gioco restano nove numeri: sei pesi e tre soglie, il vettore - la fila ordinata di numeri - in cui la discesa ha depositato tutto quello che la rete ha imparato. È una versione, ritrovata da sola, della tabella che in apertura avevamo scritto a mano, spesso con valori diversi, perché di soluzioni ce n’è più d’una. Tutto l’addestramento produce questo: non un programma né una spiegazione, ma un pugno di numeri che realizza la regola.

E la simulazione funziona così: le posizioni delle due leve entrano come ingressi, 0 per giù e 1 per su. Ogni neurone nascosto moltiplica le due posizioni per i suoi due pesi, somma, toglie la soglia e passa il risultato alla sua curva: ne esce la sua risposta, la gradazione del reostato. L’uscita ripete il gesto sulle due risposte dei nascosti - pesi, somma, soglia, curva - e se il numero finale supera 0,5 la lampadina tratteggiata si accende. Ogni volta che nella scena toccate un interruttore, il widget rifà questi conti col vettore del momento: nove numeri, due giri di somme, e il circuito è simulato.

Se nel gioco la ReLU fa la figura peggiore, come può essere lo standard? Perché il gioco è minuscolo: con due soli neuroni nascosti, uno che parte spento è metà della rete, e la discesa si incaglia. Nelle reti profonde le proporzioni si rovesciano: i neuroni spenti sono una frazione trascurabile di migliaia, mentre la pendenza 1 attraversa intatta decine di strati - la sigmoide, coi suoi estremi piatti, lì si spegne. È il motivo per cui la rassegna di Nature, citata sopra per il primato della ReLU, aggiunge che «impara tipicamente molto più in fretta nelle reti con molti strati». Il widget ve la mostra alla scala che la sfavorisce: il difetto ingrandito, il pregio senza lo spazio per farsi valere - tenete le due scale distinte.

Il ritorno del gradino: le reti a 1 bit

Il gradino torna dove memoria ed energia sono contate: nelle reti a 1 bit pesi e attivazioni valgono solo più uno o meno uno, e l’addestramento aggira la pendenza assente con un trucco.

La funzione di attivazione a gradino, però, non è scomparsa: torna nelle reti quantizzate a 1 bit, dove la funzione che decide è di nuovo un segno secco - e merita una spiegazione. Sono reti con i pesi - e perfino le attivazioni - ridotti a +1 o -1, e servono a far girare un modello dove memoria ed energia sono contate: un telefono, un sensore, un apparecchio a batteria. Un peso a 1 bit occupa trentadue volte meno di uno a precisione piena, e i conti si riducono a operazioni elementari sui bit. E l’addestramento aggira la pendenza assente con un trucco dichiarato fin dal lavoro che aprì la strada: in discesa si finge che il gradino sia una retta nel suo tratto centrale, e ogni peso vive in due copie - quella secca a +1 o -1, che la rete usa per i conti, e una gemella a precisione piena, il numero con tutti i suoi decimali, dove si sommano le piccole correzioni di ogni giro. Da sola nessuna correzione basterebbe a far saltare un peso da -1 a +1; accumulate nella gemella, quando la somma cambia segno il peso secco scatta dall’altra parte. Finito l’addestramento, le gemelle si buttano: restano solo i +1 e i -1.

Da non confondere con la quantizzazione a 8 bit dei pesi nei nostri repository: quella avviene dopo l’addestramento, solo per conservare i numeri in meno spazio, e nessun gradino entra mai nella discesa.

La prova sul campo: il confronto misurato

Stessi dati, stesso metro del percettrone: la differenza è lo strato nascosto.

L’articolo sul percettrone misurava dieci percettroni sulle cifre scritte a mano di MNIST: 83,2% di riconoscimenti su diecimila immagini mai viste, riproducibile al decimale. La stessa prova, con una rete multistrato minima - 784 ingressi, uno strato nascosto di 64 neuroni con sigmoide, 10 uscite: 50.890 parametri, sei volte e mezzo in più dei 7.850 dei dieci percettroni dell’articolo precedente - sta nel repository che accompagna questo pezzo, Python puro senza dipendenze, semi fissati, dati scaricati dalla raccolta pubblica alla prima esecuzione.

L’esito misurato: 95,8% già dopo il primo giro di addestramento, 96,3% dopo il terzo - tredici punti sopra il percettrone, sempre su diecimila immagini mai viste. E l’altalena sulla curva dell’errore, che là non trovava un minimo stabile (nove punti persi in un giro), qui si riduce a sette decimi: la rete oscilla appena e si assesta, perché lo strato nascosto le dà una valle vera da scendere. E dove dieci rette si fermavano, la rete rifà in grande la mossa vista su XOR: sposta i punti. Là lo spazio nuovo aveva due assi, uno per neurone nascosto; qui ne ha sessantaquattro e non si può disegnare - ma la mossa è la stessa, e alla fine le dieci cifre sono separabili.

Il lavoro non lo fa il numero degli assi: su XOR erano due prima e due dopo, e qui addirittura si scende - dai 784 dei pixel ai 64 dei neuroni nascosti. A spostare i punti dove le rette non arrivano è la funzione di attivazione: senza, vale il collasso lineare dell’inizio.

Le dieci uscite meritano l’ultima parola tecnica del pezzo: invece di dichiarare vincitrice la somma più alta e basta, la rete passa tutte e dieci per la softmax.

La regola sta in una riga: si prende il numero fisso e - il numero di Eulero, che vale circa 2,72 - lo si eleva a ciascuna somma, e si divide ogni risultato per il totale. Coi numeri, su tre somme sole - 2, 1 e 0: le potenze valgono 7,4, 2,7 e 1; il totale fa 11,1; le divisioni danno 67%, 24% e 9%. I numeri si sono trasformati in probabilità: tutti positivi, con la somma che dà 1 - o 100%, a seconda di come si scrive ogni singola probabilità: 0,1 e 10% sono lo stesso valore. Il risultato ha due pregi: i distacchi escono amplificati rispetto alle somme di partenza, e nessun candidato finisce a zero - una somma negativa dà una frazione piccola, per -1 circa 0,37, non il nulla. È il passo avanti rispetto al «vince la somma più alta» del percettrone: là restava solo il vincitore; qui la somma più alta prende la fetta più grande, ma tutte le altre restano in gioco con la propria. Il piccolo GPT fa esattamente questo quando pesa i candidati al prossimo carattere.

Verso i modelli di linguaggio

Le immagini stanno in una griglia fissa. Il linguaggio no: è una sequenza, e cambia lunghezza a ogni frase.

Da qui il mestiere si è specializzato: reti fatte apposta per le immagini, reti fatte apposta per le sequenze, fino alle architetture di oggi. La serie prosegue nella direzione che porta ai modelli di linguaggio, e il prossimo passo è il più sottovalutato: prima di qualunque rete, il testo deve diventare numeri. Come si affetta una frase, che cosa è un token, perché la sequenza è un problema diverso da una griglia di pixel: sono i prossimi due pezzi.

Il percettrone era una retta; la rete multistrato è una macchina che sposta i punti finché le rette bastano. Tutto quello che la serie incontrerà da qui in poi - l’attenzione, il Transformer, il piccolo GPT coi suoi 800.000 parametri - è fatto di questi due gesti: somme pesate, e curve che tengono viva la pendenza.

I concetti che questo articolo introduce

Undici voci: la rete e il suo strato nascosto, l’algoritmo che li addestra, la garanzia, i tre guai del mestiere e la softmax delle uscite.

Concetto Ambito Che cos’è Si lega a
Rete neurale multistrato machine-learning Neuroni artificiali disposti in strati, ognuno dei quali legge le uscite del precedente: con almeno uno strato nascosto e curve non lineari supera il limite della retta del percettrone ogni suo nodo è un neurone artificiale; contiene lo strato nascosto; si addestra con la retropropagazione; risolve il problema XOR
Strato nascosto machine-learning Lo strato fra ingresso e uscita, che nessuna etichetta raggiunge direttamente: trasforma i dati finché il problema diventa separabile appartiene alla rete neurale multistrato; il suo addestramento è il problema che la retropropagazione risolve
Retropropagazione machine-learning L’algoritmo che ripartisce l’errore all’indietro, strato per strato, in proporzione alla responsabilità di ciascun peso; l’idea fu scoperta da più gruppi negli anni Settanta e Ottanta, e Rumelhart, Hinton e Williams (1986) la resero lo strumento di tutti addestra la rete neurale multistrato; usa la discesa del gradiente; è l’erede della regola di apprendimento del percettrone; soffre del gradiente che svanisce
Discesa del gradiente machine-learning Correggere ogni peso spostandolo di un passo nella direzione che riduce l’errore, come scendere un pendio seguendo la pendenza del punto in cui ci si trova è il motore della retropropagazione; il suo passo è il tasso di apprendimento
Tasso di apprendimento machine-learning La lunghezza del passo della discesa: troppo alto scavalca la valle oscillando, troppo basso non arriva regola la discesa del gradiente
Gradiente che svanisce machine-learning Negli strati profondi il segnale d’errore si spegne, perché torna indietro moltiplicato per pendenze minori di 1 a ogni strato: gli strati vicini all’ingresso smettono di imparare affligge la retropropagazione; cresce con la profondità della rete; è il motivo per cui la ReLU ha vinto sulla sigmoide
ReLU machine-learning La funzione di attivazione oggi standard negli strati nascosti (Rectified Linear Unit, unità lineare rettificata): zero sotto lo zero, la somma così com’è sopra; pendenza 1 ovunque sia accesa, costo di calcolo minimo è una funzione di attivazione; mitiga il gradiente che svanisce
Teorema di approssimazione universale machine-learning Una rete con un solo strato nascosto abbastanza largo può approssimare qualunque funzione continua (Cybenko, 1989). Garantisce che la rete esiste, non che l’addestramento la trova riguarda la rete neurale multistrato; è la garanzia gemella del teorema di convergenza del percettrone
Profondità della rete machine-learning Il numero di strati. Più strati permettono gerarchie di tratti - semplici nei primi, composti nei successivi - che uno strato solo, per quanto largo, paga carissimo caratterizza la rete neurale multistrato; aggrava il gradiente che svanisce
Sovradattamento machine-learning Imparare a memoria gli esempi invece del criterio: eccellente sull’addestramento, inutile sui dati mai visti; si smaschera col metro della generalizzazione minaccia la rete neurale multistrato; cresce coi parametri e cala con gli esempi
Softmax machine-learning La trasformazione che converte le somme d’uscita in probabilità: ogni somma passa per l’esponenziale e si divide per il totale; tutte positive, sommano a 1, coi distacchi amplificati opera sulle uscite della rete neurale multistrato; è la versione graduata del vincitore unico del percettrone

Fonti