Il cuore di tutto: quando senti dire «il modello ha imparato», significa che ha trovato i valori giusti per una marea di numeri. Eccoli, in piccolo.
Muovi le tre manopole: la curva rossa cambia. L'obiettivo è farla passare il più vicino possibile ai punti. Poi premi "Addestra" e guarda.
🌫️ La mappa quadrata è il paesaggio dell'errore. Ogni punto del quadrato è una coppia di valori per B e C (la manopola A resta dove l'hai lasciata tu), e il colore dice quanto sbaglierebbe quella coppia: crema in fondo alla valle, rosa sulle creste, a gradini come le curve di livello di una carta topografica. La pallina scura sei tu. Ed è qui che una vecchia metafora si può prendere alla lettera, quella di chi cammina su un versante di montagna dentro la nebbia più fitta e deve raggiungere il fondovalle: quando premi «Addestra» la macchina non guarda la mappa, non l'ha mai vista, sente soltanto la pendenza sotto i piedi e fa un passo in giù. La scia che si lascia dietro è quel percorso verso il fondo, che è la crocetta verde; si ferma poco prima di arrivarci, perché smette di camminare appena l'errore è abbastanza piccolo. Sposta la manopola A e guarda il paesaggio deformarsi: allontanala abbastanza e la valle sparisce, perché non c'è più nessuna coppia (B, C) capace di salvare la curva; riportala al punto giusto e il fondo torna color crema.
Le tre manopole hanno un nome preciso: sono parametri, e in una rete neurale si dividono in pesi, che moltiplicano i segnali in ingresso a ogni neurone, e bias, che li spostano. La barra che chiami «errore» è la funzione di perdita: qui è lo scarto quadratico medio fra la curva e i punti, in un modello linguistico è la cross-entropy, cioè quanta sorpresa prova il modello davanti al token che compare davvero. Addestrare significa una cosa sola: cercare la configurazione di parametri che rende quella sorpresa minima.
Il metodo con cui la cerca è la discesa del gradiente. Immagina di trovarti su un versante di montagna nella nebbia più fitta, con il compito di raggiungere il fondovalle: non vedi il paesaggio, ma senti la pendenza sotto i piedi, e a ogni passo scendi nella direzione in cui il terreno cala di più. Il gradiente è quella pendenza, calcolata rispetto a ciascun parametro; il learning rate è la lunghezza del passo. Per sapere quanto ogni singolo peso abbia contribuito all'errore complessivo serve la retropropagazione, formalizzata da David Rumelhart, Geoffrey Hinton e Ronald Williams su Nature nel 1986: una regola di derivazione a catena che risale la rete dall'uscita verso l'ingresso distribuendo la responsabilità. Quando premi «Addestra», qui sopra succede esattamente questo, con tre parametri invece di miliardi.
La mappa quadrata accanto al grafico è quel versante, disegnato per davvero: per ogni coppia (B, C) della griglia il browser calcola la perdita e le assegna un colore, tenendo A al valore in cui l'hai lasciata. La crocetta verde è il minimo, e qui si può calcolare in forma chiusa senza scendere di un solo passo: il modello è lineare nei parametri — la curva è parabolica in x, ma A, B e C entrano nella formula moltiplicati e sommati, mai elevati o annidati — e la superficie di perdita che ne risulta è un paraboloide convesso: un solo fondo, nessuna trappola. Due avvertenze, allora. La prima è che quella mappa è una fetta bidimensionale di uno spazio a tre dimensioni: muovi A e vedi il paesaggio stesso deformarsi sotto la pallina, e in GPT-3 le dimensioni da affettare sono 175 miliardi, sicché ogni immagine piatta è una menzogna utile. La seconda è che la superficie di perdita di una rete profonda non è convessa affatto: ha altipiani, creste e minimi molteplici, e per ritrarla bisogna proiettarla su due direzioni casuali normalizzate filtro per filtro, la tecnica con cui Hao Li e colleghi hanno prodotto i rilievi montuosi delle reti neurali (NeurIPS 2018), scoprendo per strada che le connessioni saltate delle ResNet appianano quel paesaggio invece di complicarlo.
Il salto di scala è quello che rende difficile l'intuizione. GPT-3 aveva 175 miliardi di parametri; per capire quanti sono, se ogni parametro fosse un secondo, 175 miliardi di secondi farebbero più di cinquemila anni. E la domanda «quanti me ne servono?» ha una risposta che è cambiata nel tempo: le prime leggi di scala di Jared Kaplan e colleghi (2020) mostravano che la perdita cala secondo una legge di potenza al crescere di parametri, dati e calcolo; due anni dopo il gruppo di Jordan Hoffmann (2022, il lavoro noto come Chinchilla) dimostrò che i modelli dell'epoca erano sotto-addestrati: a parità di calcolo conviene un modello più piccolo nutrito con molti più dati. Chinchilla, con 70 miliardi di parametri e 1,4 mila miliardi di token, batteva Gopher che ne aveva 280 miliardi. Non «più grande», dunque: meglio proporzionato.
Qui sopra hai girato tre manopole. Un modello vero ne ha miliardi, e non sono sparse a caso: stanno dentro blocchi tutti uguali fra loro, impilati uno sull'altro. Per fare un modello più grande si aggiungono blocchi e si allarga ciascuno. Ecco quattro modelli veri messi in fila, disegnati nella stessa scala.
proporzioni e parametri ripresi dalla visualizzazione di Brendan Bycroft (bbycroft.net/llm) · disegno insegnai.ch
Da dove escono quei numeri? Da una regola di stima sorprendentemente corta. In un transformer i parametri stanno quasi tutti nei blocchi, e ogni blocco ne contiene all'incirca 12·d², dove d è la dimensione interna, cioè la lunghezza del vettore con cui il modello rappresenta un token: quattro matrici d×d per l'attenzione e otto per il piccolo percettrone che segue. Il totale è quindi N ≈ 12 · nlayer · d², la formula che Jared Kaplan e colleghi usano nelle leggi di scala. Provala. Per GPT-3: 12 × 96 × 12288² fa 173,9 miliardi, contro i 175 dichiarati da Tom Brown e colleghi nel paper del 2020, dove la tabella 2.1 riporta appunto 96 strati e d = 12288. Per GPT-2 small: 12 × 12 × 768² fa 84,9 milioni, cui va aggiunta la matrice delle immersioni, 50257 × 768 ≈ 38,6 milioni, per un totale di 123,5: sono i «124 milioni» del checkpoint pubblicato (il rapporto tecnico del 2019 ne annunciava 117: è la cifra del modello rilasciato quella che si trova ovunque oggi).
Tieni accanto le due leve e capisci il salto: da nano-GPT a GPT-3 la profondità cresce di 32 volte, la dimensione interna di 256, ma i parametri crescono col quadrato di quest'ultima: 256² × 32 fa 2,1 milioni, che è quasi esattamente il rapporto fra 85 mila e 175 miliardi. È il motivo per cui allargare un modello costa molto più che allungarlo, ed è anche il motivo per cui i disegni in scala mentono sempre un po': la barra di GPT-3 qui sopra è lunga trentadue volte quella di nano-GPT, ma se fosse anche spessa nella proporzione giusta occuperebbe da sola l'intero schermo.
Qui sto semplificando: un modello vero non ha 3 manopole ma centinaia di miliardi, e non disegna una curva ma prevede la parola successiva. L'idea, però, è esattamente questa: imparare = regolare numeri per sbagliare di meno.
Complessità della fonte: divulgativa approfondimento tecnica o accademica