Le parole che si sentono ogni volta che si parla di intelligenza artificiale, spiegate una alla volta e in ordine di prerequisito: ogni capitolo usa solo concetti già spiegati nei capitoli precedenti. Per ciascuna: la definizione in una frase, da dove viene (con la storia, dal 1637 al 2024), a che cosa serve, dove tutti sbagliano, gli esempi, e una figura per vederla funzionare.
È un manuale sull'intelligenza artificiale, scritto in modo che ogni capitolo usi solo concetti già spiegati nei capitoli precedenti.
I capitoli, numerati da #1 in poi, non seguono l'ordine alfabetico ma quello dei prerequisiti. Ogni capitolo affronta una sola parola: cos'è, da dove viene, a cosa serve e dove la gente di solito sbaglia. Nessun capitolo usa un termine che non sia già stato spiegato in uno precedente.
La catena principale va da intelligenza artificiale a machine learning a LLM (large language model, modello linguistico di grandi dimensioni).
Non serve partire dal primo capitolo. Da qualsiasi punto si entri, se si incontra una parola sconosciuta si va al capitolo che la spiega e si scende di un gradino, ripetendo finché non si arriva ai concetti di base.
Il manuale è ordinato per prerequisito: ogni capitolo usa soltanto concetti spiegati nei capitoli precedenti. Per questo il metodo è semplice: da qualunque punto entri, se incontri una parola sconosciuta scendi di un gradino. Qui sotto i capitoli sono disposti in quattro fasce; tocca un capitolo per vedere su che cosa si regge, direttamente e indirettamente.
Chi serve a chi dati reali dei collegamenti
Parte I · #1–#8
Intelligenza artificiale, machine learning, reti neurali e deep learning sono scatole una dentro l’altra; modello, parametro, peso e addestramento sono le parole per dire che cosa resta dentro la scatola alla fine.
L'intelligenza artificiale (IA) non è una tecnologia precisa, ma un insieme di tecniche per far fare alle macchine cose che, fatte da una persona, chiameremmo intelligenti.
Un'etichetta ampia che raccoglie strumenti molto diversi tra loro. La si può paragonare al nome comune di scooter, trattore, auto elettrica e aereo di linea: tutti veicoli a motore, ma oggetti diversissimi.
«Intelligenza artificiale» non indica un metodo ma un obiettivo: far fare a un programma compiti che, fatti da una persona, chiameremmo intelligenti, come giocare a scacchi, fare una diagnosi, capire una frase o trovare una strada. Per raggiungerlo, dal 1956 a oggi sono nate famiglie di tecniche molto diverse tra loro. Le principali sono cinque.
Visione artificiale, elaborazione del linguaggio e robotica non sono una sesta famiglia: sono campi di applicazione, problemi che sono stati affrontati di volta in volta con le tecniche dell'elenco. Il riconoscimento della voce, per esempio, è passato dalle regole scritte a mano ai modelli probabilistici e poi alle reti neurali.
Ogni sistema di intelligenza artificiale è un programma: gira sugli stessi computer ed è scritto negli stessi linguaggi di qualunque altro software. La differenza non sta nel codice, ma in da dove viene la logica della decisione.
In un software classico il programmatore conosce la procedura e la scrive passo per passo: calcolare l'IVA (Imposta sul Valore Aggiunto) di una fattura, ordinare un elenco, registrare un bonifico. Per ogni ingresso esiste una risposta giusta, prevista da chi ha scritto il codice, e il programma la produce sempre nello stesso modo. Se sbaglia, è un errore nel codice e lo si corregge lì.
Si parla di intelligenza artificiale quando quella procedura non si sa scrivere e la si sostituisce con qualcos'altro: con una ricerca tra moltissime possibilità che nessuno ha esaminato una per una (Deep Blue), con una base di regole che un motore di ragionamento combina in modi non previsti caso per caso (i sistemi esperti), oppure con regole ricavate dai dati (il machine learning). Nei primi due casi il comportamento viene ancora da conoscenza scritta da persone; nel terzo viene dagli esempi, e il programmatore scrive solo il procedimento con cui il sistema impara. Per questo un sistema di machine learning può sbagliare anche senza un errore nel codice: ha imparato male, o da dati sbagliati.
Il confine è sfumato e si sposta nel tempo. Un algoritmo che trova il percorso più breve, negli anni Sessanta, era ricerca di punta sull'intelligenza artificiale; oggi è un pezzo di software classico dentro ogni navigatore. È l'effetto descritto più sotto, tra gli errori comuni.
Lo stesso compito, quattro approcci illustrazione
Nel 1956 un piccolo gruppo di ricercatori si riunì in New Hampshire, e John McCarthy scelse il nome per distinguersi dalla cibernetica e per attirare fondi. Per decenni prevalse l'idea che l'intelligenza fosse un elenco di regole scritte da esperti. Le promesse superarono i risultati, e seguirono gli "inverni" degli anni Settanta e Ottanta, con i finanziamenti crollati.
Il successo più famoso di questa strada arrivò nel 1997, quando Deep Blue batté Kasparov a scacchi. Deep Blue non imparava nulla. Per scegliere una mossa costruiva l'albero delle mosse possibili, sue e dell'avversario, per diverse mosse in avanti, e dava un voto a ogni posizione raggiunta con una formula scritta da programmatori e maestri di scacchi: quanto vale il materiale rimasto, quanto sono attivi i pezzi, quanto è protetto il re. Poi giocava la mossa che portava alla posizione con il voto migliore, esaminando circa 200 milioni di posizioni al secondo.
In fondo era una procedura classica: regole scritte a mano più un'enorme quantità di calcolo. Funzionava perché negli scacchi le regole si sanno scrivere: una posizione è descritta esattamente (quale pezzo su quale casa) e gli esperti sanno dire, a parole, che cosa la rende buona.
Il confronto con una foto mostra il limite che si era visto fin dagli anni Sessanta. Una foto arriva al computer come milioni di numeri, uno per pixel, e nessun esperto sa scrivere la formula che da quei numeri dica «qui c'è un gatto»: noi lo riconosciamo in una frazione di secondo, ma non sappiamo spiegare come. Molti compiti che a noi riescono senza sforzo restavano così fuori dalla portata delle regole scritte a mano. La svolta fu il machine learning: invece di scrivere le regole, si forniscono esempi già risolti e la macchina ricava da sola la formula.
Proviamo a farlo davvero. Una regola sensata sembra «è un gatto se ha orecchie a punta, baffi, pelo e quattro zampe». Ma un gatto acciambellato sotto una coperta non mostra né zampe né orecchie; uno sphynx non ha pelo; una volpe e un cane lupo hanno orecchie a punta, baffi, pelo e quattro zampe. Ogni eccezione chiede una regola nuova, e ogni regola nuova sbaglia su qualche altro caso: la lista non converge mai.
E c'è un problema più profondo. Le regole parlano di «orecchie» e «baffi», ma il computer non vede orecchie: vede una griglia di numeri, uno per pixel, che cambiano tutti se il gatto si sposta di un centimetro, se la luce cambia o se la foto è sfocata. Per applicare la regola «ha orecchie a punta» bisognerebbe prima riconoscere un orecchio tra milioni di numeri, che è lo stesso problema di partenza, solo più piccolo. Noi lo facciamo in una ventina di millisecondi senza saper spiegare come: per questo nessun esperto è mai riuscito a scrivere quelle regole, e la soluzione è stata smettere di scriverle e dare alla macchina esempi già risolti, cioè il machine learning (#2).
Scrivi tu le regole del gatto calcolo reale
Spunta le caratteristiche: un'immagine è «gatto» solo se le ha tutte (regole in E).
Nessuna combinazione le prende tutte.
Le regole dovrebbero lavorare su questi numeri, non su «orecchie»: nessuna cella dice «orecchio». Valori inventati dalla sagoma, più un po' di rumore (0 scuro, 255 chiaro).
Il ribaltamento: dalle regole agli esempi illustrazione
È la cornice sotto cui stanno gli altri capitoli del manuale, a partire da machine learning, rete neurale e deep learning. Il suo uso pratico è difensivo: quando un fornitore dichiara di usare l'IA, la frase da sola non dice nulla. La domanda utile è quale tecnica concreta c'è dentro, perché oggi sotto questa etichetta funziona davvero soprattutto il machine learning.
Il Machine Learning (apprendimento automatico) è la parte dell'AI (Artificial Intelligence, intelligenza artificiale) in cui il sistema ricava le regole dagli esempi, invece di riceverle già scritte da un programmatore.
Invece di scrivere a mano istruzioni per ogni caso possibile, si mettono a disposizione della macchina moltissimi esempi già risolti, e l'algoritmo individua da solo lo schema che collega i dati alla risposta giusta. Le regole restano implicite, custodite nei valori numerici messi a punto durante l'addestramento.
Il grafico di sinistra sono i dati: otto case di cui si conoscono la superficie e il prezzo vero (i punti neri). La retta è il modello, cioè la funzione prezzo stimato = w × superficie + b: per ogni superficie dà un prezzo. I segmenti rossi sono gli errori: la distanza tra il prezzo vero di ogni casa e quello stimato dalla retta.
Muovendo a mano w e b cambi la funzione: w ne cambia la pendenza (quante migliaia di euro aggiunge ogni metro quadro), b la sposta in su o in giù (il prezzo di partenza). Vedi subito quanto i dati si discostano dalla retta: i segmenti si allungano o si accorciano, e l'errore quadratico medio (la media dei quadrati dei segmenti) sale o scende.
«Un passo di correzione» fa da solo quello che faresti a mano: guarda gli errori, calcola in che verso girare w e b per ridurli e li gira di poco. «20 passi» ne esegue venti di seguito, e ogni clic ne aggiunge altri venti. Il grafico di destra registra l'errore dopo ogni passo.
A che cosa tende l'errore. Scende in fretta nei primi passi, poi sempre più piano, e dopo circa cento passi (cinque clic su «20 passi») smette di scendere: si ferma a circa 18,9, cioè uno scarto tipico di circa 4 mila euro per casa, con w ≈ 2,22 e b ≈ 41. Non arriva a zero, perché gli otto punti non stanno esattamente su una retta e nessuna retta può passare per tutti. Quel valore è il minimo possibile per questo modello: è l'errore della retta migliore, ed è quella retta che i passi di correzione hanno trovato. Altri clic non lo abbassano; per scendere ancora servirebbe un modello con più manopole, per esempio una curva invece di una retta.
Il cerchio vuoto è la stima per una casa da 100 m² che non è tra i dati: è a questo che serve il modello, una volta trovati w e b.
Le manopole del prezzo delle case calcolo reale
La storia parte dal 1952, quando Arthur Samuel, ingegnere dell'IBM, scrive nel tempo libero un programma per giocare a dama. All'inizio gioca male, perché conosce solo le regole che lui stesso gli ha fornito.
La svolta arriva quando il programma aggiusta da solo la valutazione delle posizioni osservando l'esito delle partite, giocando contro se stesso un numero enorme di volte. Dopo qualche anno batte il suo creatore. Nel 1959 Samuel usa per la prima volta l'espressione Machine Learning.
Serve quando scrivere le regole a mano è impraticabile. Dopo l'addestramento il sistema generalizza anche a casi mai visti. Un esempio è la stima del prezzo di una casa, in cui il modello scopre da solo che il centro costa più della periferia, senza che nessuno glielo abbia scritto.
Si tende a pensare che la macchina capisca il concetto. In realtà impara la statistica degli esempi: se i dati sono distorti, assorbe la distorsione con la stessa efficienza con cui assorbirebbe una verità, senza accorgersene.
Un caso noto è quello di un sistema di selezione dei curricula, addestrato su assunzioni passate quasi tutte maschili, che penalizzava le candidature femminili. Non era rotto: faceva esattamente ciò per cui era stato costruito. Definire un algoritmo imparziale solo perché è una macchina significa non aver capito come funziona.
Una rete neurale è una catena a strati di unità semplici che si passano informazioni pesate, e i pesi interni vengono regolati dall'addestramento finché le risposte diventano utili.
È un insieme di passaggi organizzati a strati. Ogni strato riceve molte informazioni, ciascuna con un'importanza diversa, e ne restituisce una sola più elaborata. Quanto conta ciascun ingresso lo regola il sistema stesso durante l'addestramento (#6 Parametro, #7 Peso).
Nel 1943 Warren McCulloch e Walter Pitts descrivono un neurone semplificato: somma i segnali ricevuti, ciascuno con un peso, e si attiva solo oltre una soglia. Mostrano che collegandone molti si ottiene qualunque ragionamento logico, senza ancora un computer per provarlo.
Nel 1958 Frank Rosenblatt realizza il Perceptron, una macchina fisica addestrata a distinguere forme. Le aspettative sono esagerate: le reti funzioneranno davvero solo dopo decenni. È la stessa idea che oggi sta sotto ChatGPT, basato su GPT (Generative Pre-trained Transformer).
Il neurone di McCulloch e Pitts (1943) calcolo reale
Riconoscere schemi in dati troppo grandi per regole scritte a mano. Un singolo puntino di una foto non significa nulla; una foto da 12 megapixel (milioni di pixel) è una massa di puntini che va letta insieme. Per stimare il prezzo di una casa bastano una decina di dati e poche manopole; per le immagini serve un sistema molto più ampio, a strati.
Il primo equivoco è credere che la rete imiti il cervello. Il nome è rimasto, ma il neurone artificiale è un modello minimo rispetto a quello biologico.
Il secondo è la frase "non sappiamo cosa succede dentro", che è una mezza verità: ogni singola operazione è semplicissima e nota. Ciò che non si spiega è perché una combinazione di miliardi di pesi produca un certo comportamento. Il problema è di scala, non di magia.
Calcolo · la scala di GPT-3
Il deep learning è machine learning realizzato con reti neurali molto stratificate, capaci di scoprire da sole quali aspetti dei dati contano.
È un ramo del machine learning che usa reti neurali con molti strati sovrapposti. La novità sta nel fatto che non è più una persona a decidere quali caratteristiche osservare nei dati: la rete le individua durante l'addestramento. La parola deep indica soltanto la profondità geometrica, cioè il numero di strati, e non ha un significato filosofico nascosto.
La svolta si colloca nel 2012, durante la gara annuale di visione artificiale ImageNet. Il gruppo guidato da Geoffrey Hinton, con Alex Krizhevsky e Ilya Sutskever, presentò AlexNet, che sbagliava circa il 15,3% delle classificazioni contro il 26,2% del secondo classificato. Il distacco era enorme in una competizione dove i miglioramenti si contavano in decimali.
Il modo di addestrare reti a molti strati esisteva già dal 1986: esplose nel 2012 perché si combinarono dati, potenza di calcolo e alcuni accorgimenti tecnici.
Matrioske e svolta del 2012 illustrazione
Gara ImageNet 2012: errore di classificazione (più basso = meglio)
AlexNet (Hinton, Krizhevsky, Sutskever) lasciò quasi 11 punti percentuali di distanza, dove di solito i miglioramenti si contavano in decimali.
Serve a trovare schemi in dati complessi e non strutturati, come le immagini, ed è alla base dei moderni assistenti come ChatGPT. La ricetta resta sempre la stessa: strati, esempi, errore, correzione, ripetuti su scala molto maggiore e con architetture più sofisticate di quella del 2012.
Il primo errore è credere che il deep learning abbia rimpiazzato il machine learning classico. Su una tabella aziendale piccola i metodi più semplici costano molto meno, girano su un portatile e permettono di capire perché hanno deciso in un certo modo.
Il secondo errore è sottovalutare i dati: con poche migliaia di righe storiche il metodo non funziona, e servono milioni di esempi che quasi nessuna azienda possiede.
Il modello è ciò che sopravvive all'addestramento: la struttura della rete più un lungo elenco di valori numerici salvati in un file.
Quando l'addestramento termina, si conservano due cose: la forma della rete (quanti strati e quanti neuroni per strato) e la posizione finale di tutti i suoi parametri. Il risultato è, in pratica, un file composto soltanto da numeri.
Si riparte dal Mark I Perceptron, costruito nel 1958 con i fondi della marina statunitense e firmato dallo psicologo Frank Rosenblatt. Gli occhi erano circa 400 cellule fotoelettriche; la parte decisiva era un armadio di 512 manopole, ciascuna girata da un piccolo motore quando la macchina sbagliava. Il foglio che registrava la posizione di quelle manopole è il primo vero modello.
Serve a produrre risposte su casi nuovi senza conservare gli esempi di partenza. Un modello addestrato su 10.000 case vendute può stimare il prezzo di un'abitazione mai vista, perché la sola configurazione delle manopole basta.
Essendo un file, può essere scaricato e fatto girare altrove: un modello da 7 miliardi di parametri occupa circa 14 GB (gigabyte) e gira su un portatile, mentre GPT-3 (Generative Pre-trained Transformer 3) pesa attorno ai 350 GB.
Un file pieno di numeri calcolo reale
Gli equivoci sono tre. Il primo è credere che il modello impari mentre lo usi: le manopole restano ferme, e la memoria di una chat è solo testo riletto a ogni messaggio.
Il secondo è immaginare un archivio di internet dentro il modello: in realtà contiene numeri, e le risposte vengono ricostruite da quelli, il che spiega perché a volte si sbaglia con grande sicurezza. Il terzo è confondere modello e applicazione: ChatGPT è un prodotto, mentre Gemini o GPT-4 e GPT-5 sono i file di numeri che stanno dietro.
Un parametro è un numero interno a un modello che l'addestramento può modificare; il loro totale misura la dimensione del modello, non la sua intelligenza.
Il parametro è ogni valore numerico che il processo di addestramento regola. Conviene immaginarlo come una manopola: un modello ne ha milioni o miliardi. Ne esistono due famiglie. I pesi fissano quanto un neurone conta sul segnale ricevuto da un altro. I bias sono le soglie di ciascun neurone, cioè quanto forte deve essere il segnale prima di essere propagato.
Pesi, bias e quante manopole illustrazione
Quanti parametri? Lunghezza della barra = numero di zeri (scala logaritmica)
Non sono parametri: numero di piani, impiegati per piano, ampiezza di ogni correzione (iperparametri). Li decide una persona prima dell'addestramento.
Il concetto nasce in astronomia. Nel 1801 Gauss ricostruì l'orbita di Cerere da appena 41 osservazioni, usando sei numeri che la descrivono; in matematica quei numeri si chiamano già parametri. Lo stesso metodo vale per le reti neurali: si parte da valori approssimativi, si misura l'errore rispetto ai dati reali e si corregge ogni numero nella direzione che lo riduce.
Il numero di parametri determina quanta memoria serve per far girare il modello e quanto costa usarlo. Nei nomi come Llama 3 8B o Mistral 7B la lettera B sta per miliardi (billion): 8B significa circa 8 miliardi di parametri. Con due byte per parametro un modello da 8B occupa circa 16 gigabyte (GB).
Calcolo · la memoria di un modello da 8B
Il primo errore è credere che più parametri significhino automaticamente un modello più intelligente. Basti ricordare GPT-3 (Generative Pre-trained Transformer 3), con 175 miliardi di parametri nel 2020, superato oggi su quasi tutto da modelli da 8 miliardi addestrati con più dati e di qualità migliore.
Il secondo errore è pensare che i parametri siano le regole del modello. Letti uno per uno non dicono nulla: la conoscenza è distribuita su milioni di valori insieme.
Un peso è il numero che stabilisce quanto un ingresso conta per una singola decisione del modello, e l'insieme di tutti i pesi è ciò che la rete ha imparato.
Ogni nodo della rete riceve dei valori in ingresso e, per ciascuno, ha un peso. Il nodo moltiplica ogni ingresso per il suo peso, somma tutto e da quel totale ricava la decisione.
Parametro è la parola generale: qualunque numero del modello che l'addestramento regola (#6). Peso è il nome di un tipo particolare di parametro: quello che moltiplica un ingresso. Ogni peso è un parametro, ma non ogni parametro è un peso.
Prendi un nodo con tre ingressi A, B e C. Il suo conto è wA×A + wB×B + wC×C + b. I numeri wA, wB e wC sono pesi: ciascuno è legato a un ingresso e dice quanto quell'ingresso conta. Il numero b non moltiplica nessun ingresso: si aggiunge alla somma e sposta la soglia oltre la quale il nodo dice sì. Si chiama bias. In tutto sono quattro parametri: tre pesi e un bias.
| che cosa fa | nel nodo A, B, C | nelle case (#2) | |
|---|---|---|---|
| peso | moltiplica un ingresso: quanto conta | wA, wB, wC | w, migliaia di euro per m² |
| bias | si aggiunge alla somma: sposta la soglia | b | b, il prezzo di partenza |
| parametri | tutti i numeri regolati dall'addestramento | 4 (3 pesi + 1 bias) | 2 (1 peso + 1 bias) |
Nei modelli grandi i bias sono pochissimi rispetto ai pesi, e in molti modelli linguistici recenti non ci sono proprio. Per questo, nel parlare comune, «pesi» e «parametri» si usano come sinonimi: «scaricare i pesi di un modello» vuol dire scaricare tutti i suoi parametri, e i 7 miliardi di parametri di un modello sono, quasi tutti, pesi.
Quanto conta un ingresso calcolo reale
Un peso positivo spinge verso il sì, uno negativo spinge verso il no come un veto, e uno vicino a zero non incide.
Il peso è il primo tipo di parametro, già introdotto nel capitolo precedente (#6 Parametro). In una rete che riconosce lettere scritte a mano nessuno scrive i pesi: partono a caso e si aggiustano fino a distinguere una A da una B.
I pesi determinano come la rete trasforma i dati in ingresso in una risposta. Quando un'azienda pubblica un modello a pesi aperti (open weights), mette online il file con tutti i pesi e la struttura della rete: chi lo scarica può farlo girare sul proprio computer senza chiedere permesso. Non equivale all'open source, perché non si condividono dati né procedimento.
Il primo errore è pensare che qualcuno scriva i pesi a mano. Partono da valori casuali e vengono corretti durante l'addestramento: GPT-3 (Generative Pre-trained Transformer 3) ne ha 175 miliardi. Il secondo errore è considerare un peso negativo come sbagliato o rotto. In realtà è un'informazione preziosa: senza pesi negativi la rete riconoscerebbe la presenza di un tratto, ma non la sua assenza.
Calcolo · i pesi di un impiegato del primo piano
È il processo con cui un modello parte da pesi casuali e li corregge, esempio dopo esempio, finché sbaglia il meno possibile.
Addestrare un modello significa ripetere un ciclo: si mostra alla rete un esempio con la risposta giusta, si misura quanto la sua risposta se ne discosta e si sposta ogni peso di un piccolo passo nella direzione che riduce l'errore.
Il ciclo si ripete su tutti gli esempi più volte, finché la rete smette di migliorare. I pesi che restano a quel punto diventano il modello e vengono salvati in un file.
Il ciclo dell'addestramento calcolo reale
Nel 1989 Yann LeCun fece questo stesso ciclo su circa 7.000 cifre scritte a mano (griglie 16 × 16): la rete riconosceva il 95% di quelle mai viste.
Il caso storico è del 1989: Yann LeCun, giovane ricercatore francese nei laboratori Bell, usò circa 7.000 cifre scritte a mano, in griglie da 16 x 16 pixel, per addestrare una rete neurale a leggere i codici postali. Riconosceva il 95% delle cifre mai viste, e poco dopo una sua versione leggeva gli assegni bancari. Con qualche decina di esempi, la stessa rete sarebbe andata molto peggio.
Serve a trasformare pesi iniziali casuali in un modello utile. Il costo è alto ma si paga una volta sola: per GPT (Generative Pre-trained Transformer) del 2020 l'addestramento è durato settimane, con una spesa stimata in milioni di dollari. Poi usarlo costa una frazione.
Due errori classici. Il primo è credere che il modello continui a imparare mentre lo usi. In un assistente come ChatGPT i pesi restano fermi: le correzioni fatte in chat non vengono ricordate il giorno dopo. Un miglioramento richiede un nuovo addestramento e la pubblicazione di un nuovo file di pesi.
Il secondo è pensare che addestrare più a lungo basti a rendere il modello più intelligente. Con pochi esempi, più giri portano a memorizzare invece che a imparare.
Parametro #6 è ogni numero che l’addestramento regola; peso #7 è il parametro che dice quanto conta un ingresso.
Parte II · #9–#16
Prima di qualunque calcolo il testo va spezzato in pezzi e ogni pezzo va trasformato in una lista di numeri. Qui si vede come, e che cosa significa la distanza tra due di queste liste.
Il token è il pezzo di testo che un modello tratta come unità: non una parola e non una lettera, ma una via di mezzo.
Un token è un frammento di testo, che può coincidere con un termine frequente, con un segmento di una parola rara o con un simbolo, e che viene convertito in una cifra prima di entrare in un LLM (Large Language Model, modello linguistico di grandi dimensioni). Il modello non vede lettere né parole, ma una sequenza di token, uno dopo l'altro.
Dove cade il taglio illustrazione
Si parte dai manoscritti latini e greci, scritti senza spazi, dove chi leggeva doveva capire da solo dove finiva una parola. Tra il settimo e l'ottavo secolo i monaci irlandesi introdussero lo spazio, abitudine poi diffusa in tutta Europa. L'analogia serve a dire che il primo passo, prima di qualunque calcolo, è decidere dove tagliare il testo.
Rende il testo leggibile per la rete. Se il token fosse la parola intera, servirebbero milioni di voci in italiano e il modello si bloccherebbe davanti a ogni termine mai visto. Se fosse la singola lettera, una frase di venti parole diventerebbe più di cento pezzi privi di significato. Il token è il compromesso.
È anche l'unità di misura di prezzi (si pagano per milione di token), memoria (quanto testo il modello tiene in una volta) e velocità (quanti token al secondo produce).
L'errore più diffuso è credere che un token equivalga a una parola: in inglese cento token valgono circa settantacinque parole, mentre in italiano una parola occupa in media un token e mezzo. Il secondo è pensare che il modello legga le lettere. Il caso strawberry mostra il contrario: i modelli più vecchi sbagliavano a contare le R perché vedevano solo pezzi codificati come numeri.
Per anni una domanda banale ha messo in difficoltà i modelli linguistici: «quante R ci sono in strawberry?». La risposta è tre (strawberry), ma i modelli rispondevano spesso due. Per capire perché bisogna guardare due cose: che cosa arriva al modello, e come il modello produce una risposta.
1. Che cosa arriva al modello. Noi vediamo dieci lettere. Il modello no: prima che il testo entri nel modello, il tokenizzatore (#10) lo spezza nei pezzi del suo vocabolario, e una parola frequente come strawberry diventa tre pezzi, per esempio «str», «aw» e «berry». Ogni pezzo è sostituito dal suo numero nel vocabolario (#11), e ogni numero da una lista di valori, l'embedding (#13), che descrive come quel pezzo si usa: in che frasi compare, che cosa gli sta vicino. In nessuno di questi valori c'è scritto «questo pezzo contiene due R». Le lettere, al modello, non arrivano.
2. Come il modello risponde. Il modello non esegue un conteggio, come farebbe un programma che scorre le lettere una a una: produce la risposta più probabile, un token alla volta (#19), in base a ciò che ha imparato in addestramento. Per rispondere «tre» dovrebbe avere imparato, da qualche parte, come si scrive ciascuno dei tre pezzi e quante R contengono, e usare quell'informazione tutta insieme, in un solo passaggio, senza vederla. È come chiedere quante lettere ha una parola straniera che hai solo sentito pronunciare: la conosci e sai usarla, ma per rispondere su due piedi devi ricostruire come si scrive, e lì sbagli facilmente. «Due» era la risposta che suonava plausibile, e spesso usciva quella.
3. Perché i modelli recenti rispondono giusto. Non è cambiato il tokenizzatore: la parola entra ancora come tre pezzi. È cambiato il modo di rispondere. Prima di dare il numero, il modello scrive la parola una lettera alla volta, separate: «s - t - r - a - w - b - e - r - r - y». Per scriverla gli basta richiamare un pezzo di ortografia per volta, cosa molto più facile che contare tutto di colpo. E il testo che ha scritto torna in ingresso al passo successivo (è l'autoregressione, #18), passando per lo stesso tokenizzatore: una lettera isolata tra due trattini non si unisce a nient'altro, quindi diventa un token a sé. Così le R, che prima erano chiuse dentro «str» e «berry», adesso sono token separati che il modello ha davanti, e contarle diventa semplice. I modelli recenti sono addestrati a fare questi passaggi intermedi da soli, ed è anche per questo che oggi rispondono «tre».
Che cosa vede il modello quando legge «strawberry» illustrazione
La tokenizzazione è la fase in cui un programma separato spezza il testo in token e li trasforma in numeri, seguendo regole fisse decise prima dell'addestramento.
È il procedimento che divide una frase in pezzi, detti token, e assegna a ciascun pezzo un numero, cioè la sua posizione in una lista chiamata vocabolario. Il modello non lavora mai direttamente sulle lettere: riceve sequenze di numeri e, quando risponde, il tokenizzatore riconverte quei numeri in testo leggibile.
Tre modi di tagliare lo stesso testo calcolo reale
Per carattere
Per parola
Per sotto-parola (vocabolario fisso)
Si parte da una storia: alla fine dell'Ottocento, stando al racconto, ogni parola di un telegramma costava parecchio, e nacquero i libri di codici telegrafici, in cui una frase comune corrispondeva a una sola parola in codice.
Il sistema funzionava solo se mittente e destinatario avevano la stessa identica edizione del libro: con due versioni diverse il messaggio veniva letto in modo sbagliato, senza che nessuno se ne accorgesse. Il parallelo con i modelli è diretto: il tokenizzatore usato in addestramento e quello usato in uso devono coincidere.
Converte il linguaggio umano in una forma numerica che il modello può elaborare, e riporta la risposta in testo. Influisce anche su costi, limiti di contesto e qualità, perché lo stesso testo può produrre un numero di token diverso da modello a modello.
Il primo errore è pensare che sia il modello a decidere come spezzare il testo. Il taglio è un programma fisso che non impara nulla durante l'addestramento: il modello si adatta ai pezzi che riceve, quindi una cattiva suddivisione resta per sempre.
Il secondo errore è credere che il tokenizzatore capisca radici, suffissi o plurali. Il taglio è puramente statistico, e il significato nasce dopo, quando al modello vengono associati i pesi di ogni token.
Il vocabolario è la lista chiusa e numerata di tutti i token che un modello riconosce, costruita una sola volta prima dell'addestramento.
È l'elenco numerato dei token che il tokenizzatore conosce. Ogni pezzo di testo viene cercato in questa lista e la sua posizione diventa il numero con cui il modello lavora.
Dentro trovi parole intere, frammenti di parola, parole con lo spazio davanti, segni di punteggiatura, i 256 byte di base e alcuni token speciali. Se un pezzo non è nella lista, lo si spezza in pezzi più piccoli che invece ci sono.
Vocabolario piccolo o grande? illustrazione
Si parte dal Basic English, proposto nel 1930 dal linguista Charles Kay Ogden: un lessico ristretto, con cui si sosteneva di poter dire quasi tutto. Negli stessi anni George Zipf notò che poche parole coprono gran parte di un testo. Oggi i token non si scelgono a mano ma contando le frequenze su enormi quantità di testo.
Trasforma il testo in numeri che il modello può elaborare. La sua dimensione è una scelta di progetto: un vocabolario grande accorcia le frasi e supporta più lingue, ma aumenta i pesi e lascia i token rari poco allenati; uno piccolo spezza le frasi e costa più elaborazione. GPT-2 aveva circa 50.000 token, Llama 2 32.000, Llama 3 128.000 e GPT-4o circa 200.000.
Il primo errore è pensare che sia un dizionario di parole: la maggior parte delle voci sono frammenti, e il significato sta nei pesi del modello, non nella lista. Il secondo è credere che più grande sia sempre meglio.
Un caso emblematico è quello di un token corrispondente al nome di un utente Reddit, molto frequente nei testi per costruire il vocabolario ma quasi assente nell'addestramento: il suo peso restò casuale e il modello rispondeva in modo bizzarro.
È l'algoritmo che costruisce il vocabolario di un modello contando quali coppie di pezzi compaiono più spesso e fondendole una alla volta.
Si parte dai 256 byte possibili e, ripetutamente, si unisce la coppia di elementi adiacenti più frequente nel testo. Ogni fusione diventa un nuovo elemento del vocabolario. Il processo si ferma quando la lista raggiunge la dimensione decisa in anticipo: un esempio è circa 128.000 token. Le fusioni vengono salvate in ordine, e quell'elenco è il cuore del tokenizzatore.
Il Byte Pair Encoding passo per passo calcolo reale
Il corpus (parola × quante volte compare)
Coppie adiacenti più frequenti
| coppia | quante volte |
|---|
Fusioni imparate, in ordine
Nasce nel 1994 come tecnica di compressione dei dati, proposta da Philip Gage su una rivista di programmazione in C. Per circa vent'anni resta una curiosità. Nel 2016 un gruppo di studiosi scozzesi, impegnato nella traduzione automatica, la riprende per gestire i termini rari: servono pezzi ricorrenti in cui spezzare le parole sconosciute.
Tre anni dopo GPT (Generative Pre-trained Transformer) versione 2 la applica direttamente sui byte. Da allora quasi tutti i modelli costruiscono così il proprio vocabolario.
Creare un insieme fisso di pezzi di testo su cui il modello può imparare pesi stabili. Garantisce che qualunque testo, anche una parola mai vista, sia rappresentabile: nel caso peggiore resta spezzata nei singoli byte, ma passa.
Due errori. Il primo è credere che scelga i pezzi in base al significato: l'algoritmo conta soltanto le coppie, e quando un taglio sembra grammaticalmente sensato è perché frequenza e grammatica coincidono. Il secondo è confonderlo con la compressione tipo zip. Lo zip costruisce un dizionario per ogni file e poi lo scarta; il tokenizzatore ne costruisce uno solo, una volta, e lo usa per sempre.
L'embedding è la lista di numeri con cui un modello descrive ogni token, e il suo significato sta nella posizione di quella lista rispetto alle altre.
Ogni voce del vocabolario di un modello ha una propria riga di pesi, fatta di qualche migliaio di numeri: quella riga è l'embedding. Nessuno la scrive a mano, si ricava durante l'addestramento, e cambia da modello a modello, quindi l'embedding di una parola in un modello è inutile in un altro.
GPT-2 (Generative Pre-trained Transformer 2) usava 768 numeri per token, mentre i modelli attuali ne usano diverse migliaia.
Dalla parola alla riga di numeri illustrazione
La tabella: una riga per voce del vocabolario
| ID (numero) | token | x | y | … |
|---|
L'idea che il senso di una parola dipenda dalle parole vicine risale al linguista inglese John Rupert Firth, nel 1957, con il motto "Conoscerai una parola dalla compagnia che tiene". Per mezzo secolo resta un'idea da studiosi.
Nel 2013 un team di Google guidato da Tomas Mikolov presenta word2vec, che assegna a ogni parola 300 numeri, scelti in modo che termini con contesti affini ottengano valori simili. Ne emerge l'esempio più celebre: partendo da re, togliendo uomo e aggiungendo donna, si arriva vicino a regina, senza che nessuno avesse insegnato il significato di queste parole.
Permette al modello di lavorare con numeri che catturano le somiglianze tra token. Lo stesso principio vale per frasi e interi documenti: testi che parlano della stessa cosa risultano simili anche senza parole in comune, ed è così che i motori di ricerca colgono l'intento di una domanda.
Come primo passo, il modello prende il numero che identifica il token, va alla riga corrispondente della tabella e lavora solo con quella lista.
1. Credere che l'embedding sia una definizione scritta da qualcuno. Nessuna persona ha scritto quei numeri né sa leggerli: sono pesi imparati, che registrano in quali contesti una parola compare nei testi visti. 2. Credere che l'embedding cambi con la frase. La tabella assegna la stessa riga a letto in frasi diverse, e a distinguere i sensi pensa la rete successiva, che mescola ogni lista con quelle dei token vicini.
È uno spazio geometrico, con un numero enorme di dimensioni, in cui un modello colloca token ed embedding; più due punti sono vicini, più sono simili.
Lo spazio latente è l'insieme in cui vivono gli embedding prodotti da un modello. Ogni token diventa un punto, le cui coordinate sono i numeri del suo vettore. Gli assi non li ha decisi nessuno né hanno etichette: emergono dall'addestramento, e si capisce cosa rappresentano solo osservando dove finiscono le cose.
Una carta senza nomi illustrazione
Si parte da Cartesio, che nel 1637 mostra come descrivere un punto con due numeri, trasformando la geometria in calcolo. Poi arriva Charles Spearman, che nel 1904 nota una capacità generale dietro i voti scolastici e la chiama fattore g: una variabile latente, nascosta ma deducibile dai dati. Il termine unisce le due idee, una geometria di numeri con assi non scelti a priori.
Permette di ragionare sul significato in termini di distanze. Parole, frasi e immagini vicine risultano simili, e certe direzioni catturano relazioni, come quella che porta da "re" a "regina". Nei modelli di linguaggio, tutto il funzionamento si può leggere come uno spostamento di punti in questo spazio, piano dopo piano.
Due errori. Il primo è credere che ogni asse significhi qualcosa, come genere o plurale: i singoli numeri non hanno un senso leggibile, sono le direzioni diagonali a contare. Il secondo è immaginare una mappa universale del significato: ogni modello costruisce il proprio spazio, e i punti di modelli diversi non sono confrontabili, salvo quando sono addestrati apposta per allinearsi, come CLIP.
È il modo di confrontare due liste di numeri (embedding) guardando solo la loro direzione e ignorando la lunghezza, con un risultato tra -1 e 1.
La similarità coseno è il coseno dell'angolo tra due vettori: vale 1 se puntano nella stessa direzione, 0 se sono perpendicolari, -1 se sono opposti. Il calcolo moltiplica i valori a coppie, somma tutto e divide per le lunghezze dei due vettori. Il risultato dipende solo dall'orientamento, non dalla grandezza.
Due frecce, un angolo calcolo reale
Formula · la similarità coseno
Si parte dagli anni '60, quando Gerard Salton, alla Cornell, lavorava al sistema SMART per trovare documenti a partire da una domanda. Il guaio: un articolo di due pagine e un libro di trecento sullo stesso tema, descritti dalla frequenza delle parole, risultano lontanissimi perché il libro ripete ogni termine molte più volte.
La svolta, formalizzata da Salton in un articolo del 1975, sta nel ribaltare la domanda: anziché chiedersi quanto due testi siano lontani, chiedersi se siano orientati allo stesso modo. Il coseno, strumento della trigonometria, misura proprio quell'angolo.
Serve a confrontare embedding. Sta dietro alle ricerche che capiscono il senso della domanda anche senza parole in comune, e ai suggerimenti tipo prodotti simili. Dentro un LLM (large language model, modello linguistico di grandi dimensioni) il meccanismo di attenzione fa la prima metà dello stesso conto, senza la divisione finale.
Due errori. Primo: credere che 1 voglia dire stesso significato. Vuol dire stessa direzione, cioè stessa compagnia di token accanto. Per questo caldo e freddo, usati nelle stesse frasi, hanno similarità altissima.
Secondo: considerare 0,7 un valore alto in assoluto. Non esiste una scala fissa: in un modello due frasi non correlate possono avere 0,6, in un altro 0,1. Ha senso paragonare i punteggi soltanto all'interno di un unico modello.
Calcolo · le due bussole
La dimensione di un embedding è quanti valori compongono la sua lista, cioè quanti assi ha lo spazio in cui il modello colloca il significato.
Ogni token è descritto da un vettore, cioè una lista ordinata di numeri. La dimensione è la lunghezza di quella lista: è fissa per tutto il modello e si sceglie prima dell'addestramento. Non coincide con la grandezza del modello, perché misura una sola lista, non quante liste esistono né quanti pesi ci sono in totale.
Quanti numeri servono per distinguere? calcolo reale
Dalle poche alle molte: quanti numeri nella lista (valori del capitolo)
Si parte da Flatlandia (1884, Edwin Abbott): un quadrato che abita un mondo piatto non riesce a immaginare una sfera, pur potendola descrivere con la matematica.
Nel 1957 Richard Bellman, studiando l'ottimizzazione con molte variabili, notò che ogni asse in più fa crescere lo spazio in modo enorme. Nasce così "la maledizione della dimensionalità", che rende inutilizzabile il righello quando i numeri sono migliaia.
Stabilisce quanto spazio ha il modello per distinguere i significati: con pochi numeri gatto, cane e criceto si confondono, con più numeri trovano posto le sfumature. Ecco alcuni valori: GPT-2 (2019) 768 nella versione più piccola e 1.600 in quella più grande, GPT-3 un anno dopo 12.288, Llama 3 da 8 miliardi 4.096 e quello da 405 miliardi 16.384.
Non si può alzare all'infinito: i pesi di ogni piano crescono con il quadrato della dimensione, e uno spazio più grande richiede molti più esempi per essere riempito.
Primo errore: credere che la dimensione sia la grandezza del modello. È solo uno dei fattori che, insieme ai piani della rete e al vocabolario, determinano il peso del file; con dimensione 4.000 si possono avere 8 o 70 miliardi di parametri.
Secondo errore: dire che il modello "vede" 4.000 dimensioni della realtà. Il termine viene dalla fisica, ma qui significa solo quanti numeri ci sono nella lista.
Il token #9 diventa un numero grazie al vocabolario #11; l’embedding #13 trasforma quel numero in una lista, e la similarità coseno #15 confronta due liste.
Parte III · #17–#24
Che cos’è un LLM visto da fuori: un sistema che prevede il prossimo token, lo aggiunge al testo e ricomincia, dentro una finestra di contesto di dimensione finita.
Un LLM (Large Language Model, modello linguistico di grandi dimensioni) è una rete neurale enorme allenata a indovinare il token successivo di un testo, e da questo unico compito nascono le sue capacità.
È una grossa rete neurale con parametri nell'ordine dei miliardi. La parola Language segnala che lavora sul testo; Large si riferisce alle dimensioni, sia dei parametri sia dei dati. Il compito è uno solo: dato un frammento, prevedere cosa viene dopo.
Un solo compito: indovinare il token successivo illustrazione
Il punto di partenza è l'esperimento di Claude Shannon nel 1951, che copriva un libro e faceva ipotizzare alla moglie Betty il carattere seguente: capire una lingua vuol dire saperne prevedere il seguito. Per circa settant'anni l'idea è rimasta un gioco per statistici, perché servivano modelli e testi enormi.
Tra il 2018 e il 2020 OpenAI ha pubblicato i modelli GPT (Generative Pre-trained Transformer); nel novembre 2022 ne ha messo uno dietro una chat, ChatGPT.
Tradurre, riassumere, rispondere a domande e scrivere codice: sono tutte la stessa operazione, cioè continuare un testo nel modo più probabile. Addestrare un modello grande costa decine di milioni di dollari, mentre usarlo costa una frazione di centesimo per risposta.
Due errori comuni. Il primo è pensare che l'LLM cerchi la risposta in un archivio o su internet: nei pesi del modello non c'è nessun testo salvato, quindi può sbagliare con la stessa sicurezza con cui dice cose vere.
Il secondo è confondere LLM e ChatGPT. ChatGPT è l'applicazione, con memoria, regole e strumenti attorno; il modello è il motore che gira sotto, e alcuni modelli si possono scaricare ed eseguire senza nessuna app.
Un modello autoregressivo genera una sequenza un elemento alla volta, usando come input tutto ciò che ha già prodotto, compreso il proprio output.
Un modello è autoregressivo quando costruisce la sequenza elemento per elemento e, per ogni nuovo elemento, usa come ingresso quelli che lo precedono. Nel caso di un LLM (Large Language Model) il ciclo è semplice: si parte dal testo già esistente, si stima il prossimo pezzo, lo si accoda e si riparte da capo, finché non compare un token di fine oppure non si raggiunge un limite di lunghezza.
La frase cresce un token alla volta illustrazione
Il termine nasce in statistica. Nel 1927 George Udny Yule lo usò per descrivere la serie delle macchie solari anno per anno, mostrando che ogni valore dipende da quelli precedenti più un po' di casualità. Per circa novant'anni è rimasto nei manuali di previsione economica e meteo; nel 2018 il primo GPT (Generative Pre-trained Transformer) viene descritto con la stessa idea, dove la serie ora è fatta di parole.
Spiega molti comportamenti tipici dei modelli: scrivono in ordine fisso, non tornano indietro, non pianificano la frase in anticipo e tendono a trascinarsi dietro un errore iniziale. Spiega anche perché la risposta compare a scatti, perché ogni token pesa sui costi, e perché far ragionare il modello passo passo migliori la risposta finale.
Gli errori comuni sono due. Il primo è credere che il modello abbia in mente l'intera risposta prima di scriverla: in realtà la costruisce un token alla volta, e strutture come introduzione e conclusione emergono dai testi di addestramento.
Il secondo è pensare che il modello abbia una memoria separata della conversazione: la sua unica memoria è il testo che ha davanti, quindi ciò che esce dal contesto è perso.
Il prossimo token è il passo con cui un LLM (Large Language Model, modello linguistico di grandi dimensioni) sceglie la parola successiva partendo da una lista di probabilità.
A ogni giro il modello non restituisce una parola, ma una probabilità per ciascun token del suo vocabolario, con valori tra zero e uno che sommati danno uno. Subito dopo entra in gioco una regola esterna, separata dalla rete, che seleziona un solo token. La lista la produce il modello; la scelta è un'operazione diversa.
Lista di probabilità, temperatura e dado calcolo reale
L'idea ha una storia lunga. Nel 1913 il matematico russo Markov analizzò a mano le vocali e le consonanti di un poema, mostrando che le lettere non sono indipendenti: quella successiva dipende da quella precedente. Nel 1948 Shannon usò la stessa intuizione per generare testo, estraendo lettere a caso secondo le probabilità. I moderni LLM fanno la stessa cosa con token invece che con lettere, con circa 128.000 token di vocabolario e miliardi di pesi.
Spiega come nasce una risposta: la lista di probabilità è l'uscita vera del modello, e la regola di scelta decide quanto il testo risulti prudente o creativo. Serve anche a capire quanto il modello sia sicuro: se un fatto è noto, un token domina la lista; se non lo è, le probabilità si disperdono su moltissime alternative. Infine è il punto in cui si misura l'errore durante l'addestramento.
Due errori ricorrenti. Primo: credere che sia il modello a decidere la parola. La scelta è una regola esterna, che può essere cambiata anche a modello concluso, quindi la stessa lista può produrre testi molto diversi.
Secondo: considerare il token più probabile come quello giusto. Quel token è solo il più frequente nei dati di addestramento, e può quindi riflettere un errore diffuso o la risposta più banale.
Lo si può riassumere così: «probabile non vuol dire vero».
Un modello generativo impara la struttura di un tipo di dati e ne costruisce di nuovi, simili agli originali ma non copiati.
È un modello di intelligenza artificiale (AI, Artificial Intelligence) che ha appreso abbastanza bene come è organizzata una classe di contenuti, come testi, immagini o suoni, da poterne produrre di inediti che potrebbero farne parte. Il punto decisivo è la novità: non copie degli esempi di addestramento, ma campioni costruiti seguendo le stesse regole del gruppo.
Distinguere o produrre calcolo reale
Discriminativo: impara un confine tra gatti e cani
Generativo: impara la forma di ogni gruppo
Il racconto parte dal 2014, a una festa d'addio in un pub, quando Ian Goodfellow, dottorando dell'Università di Montréal, propone di far competere due reti neurali: una produce immagini, l'altra prova a capire se sono vere o costruite. Ogni round rende entrambe più abili.
Il primo tentativo funziona la stessa notte, il lavoro esce a giugno, e in pochi anni le immagini sintetiche diventano indistinguibili dalle foto reali. Il termine, già noto in statistica, entra in quel periodo nel linguaggio comune.
Serve a creare contenuti nuovi di testo, immagini, voce, musica e filmati. Un modello che sa generare ha anche interiorizzato le regole dei dati, quindi può combinarle in modi mai visti, come una ricetta in versi o un gatto astronauta. Il vantaggio e il rischio coincidono: le regole apprese valgono anche dove non dovrebbero, e il modello sbaglia con la stessa sicurezza con cui azzecca.
Il primo equivoco è credere che generativo significhi creativo, o che il modello abbia un'intenzione. Il meccanismo è statistico: da una distribuzione di probabilità si estrae un campione. Il risultato può assomigliare alla creatività, ma pensarla così porta ad aspettarsi comportamenti sbagliati.
Il secondo equivoco è confondere la famiglia con l'applicazione: ChatGPT o Midjourney sono prodotti costruiti su modelli generativi, non sinonimi del concetto.
Inoltre la parola non coincide con il testo: immagini, voce, musica e perfino molecole usano tecniche diverse.
Il prompt è l'insieme del testo fornito al modello prima della risposta; il modello non lo esegue, ma lo prosegue.
Il prompt non coincide con la sola domanda che digitiamo. Include le istruzioni di sistema impostate dall'applicazione, i messaggi precedenti della conversazione e gli eventuali documenti allegati. Per il modello questi elementi non hanno gerarchia: diventano un unico testo, spezzato in token, che va completato.
Quello che scrivi e quello che il modello legge illustrazione
Si parte da ELIZA, un programma scritto nel 1966 al MIT da Joseph Weizenbaum, che imitava uno psicoterapeuta riformulando le frasi dell'utente come domande. Per circa cinquant'anni fu una curiosità, finché nel 2020 GPT-3 (Generative Pre-trained Transformer 3) ha reso centrale un'unica porta d'ingresso: dai un testo e il modello lo prosegue.
Il nome deriva dal cursore lampeggiante dei terminali anni Settanta, il segno che aspetta l'input.
Orienta il modello verso l'output desiderato. Modificare la formulazione sposta il brano da proseguire e quindi la probabilità dei token successivi. Un prompt vago porta a risposte generiche; uno preciso, con formato, vincoli ed eventualmente esempi, restringe le continuazioni possibili.
Gli errori sono due. Il primo è considerare il prompt un comando da eseguire: in realtà è l'avvio di un brano che il modello prosegue nel modo più probabile, ed è per questo che un documento allegato o una pagina web possono cambiare il comportamento se contengono frasi con tono di istruzione.
Il secondo è credere nel prompt perfetto, una formula magica valida ovunque. Trucchi diffusi tra il 2022 e il 2024, come chiedere di ragionare un passo alla volta, funzionavano perché avvicinavano il testo a quelli con buone risposte; i modelli attuali ragionano già da soli, e certe formule rallentano soltanto.
Resta utile la parte noiosa: dire con precisione cosa si vuole, in quale formato e con quali vincoli.
La completion è il testo che un modello linguistico genera dopo il prompt, aggiungendo parti in sequenza più che fornendo una risposta vera e propria.
Prompt e completion formano insieme un solo testo. Il primo arriva dall'esterno, la seconda la scrive il modello, scegliendo un token alla volta e accodandolo, finché non interviene una condizione di arresto.
Prompt + completion = un unico testo illustrazione
Il termine riprende il test cloze del 1953, ideato da Wilson Taylor per misurare quanto un testo sia leggibile cancellandone alcune parole. I modelli odierni svolgono un compito analogo, con la differenza che il buco si trova sempre alla fine. Nel 2020 OpenAI ha reso disponibile GPT (Generative Pre-trained Transformer) agli sviluppatori con un'interfaccia dal nome proprio di completamento.
Capire il comportamento reale dei modelli, per esempio perché una risposta può ripetere la domanda o girare in tondo. Serve anche a stimare i costi: nelle API (Application Programming Interface) i token generati costano di solito molto più di quelli letti, fino a un ordine di grandezza in più.
Primo errore: considerare la completion sempre una risposta. Il modello prosegue il testo e, se il prompt è una domanda, la prosecuzione più plausibile somiglia a una risposta; i modelli meno evoluti possono ripetere la domanda o parlare al posto dell'utente.
Secondo errore: pensare che il modello smetta perché ha concluso il suo ragionamento. Gli stop arrivano per tre vie: token di fine testo, limite massimo di token, sequenza di arresto. Una frase troncata indica quasi sempre il raggiungimento del limite.
È la quantità massima di token che un modello riesce a tenere insieme in un singolo giro, contando sia il testo in ingresso sia la risposta.
È un numero fisso, stabilito una volta per tutte alla costruzione del modello. Include il prompt e la completion (la risposta generata) sommati insieme. Con una capienza di 8000 token e 7000 già occupati dalla domanda, alla risposta restano circa mille token. Se il testo supera il limite, una parte va tagliata e il modello non la legge.
Il tavolo di lavoro del modello illustrazione
Capienza della finestra, in token (scala logaritmica)
Calcolo · quanto resta per la risposta
Si parte dal 1956, quando George Miller osservò che le persone trattengono circa sette elementi nella memoria di lavoro, cioè il piano su cui si ragiona nel momento. Il parallelo è con i modelli linguistici. Il primo GPT (Generative Pre-trained Transformer) del 2018 gestiva 512 token, GPT-3 2048, GPT-4 arrivò a 8000 e poi a 32000, e dal 2024 la soglia tipica è 128.000, con alcuni modelli recenti che toccano il milione.
Serve a capire quanto testo puoi dare a un modello in una volta sola, quanti documenti allegare e perché, dopo un po', il modello sembra dimenticare l'inizio della conversazione. Serve anche a capire i costi: una finestra più lunga richiede più calcolo e più memoria nella scheda grafica (GPU, Graphics Processing Unit).
Il primo errore è considerare la finestra la memoria permanente del modello: è solo lo spazio di lavoro, mentre ciò che il modello sa stabilmente sta nei pesi. Il secondo è credere che ciò che scrivi in chat venga appreso: il modello usa quel testo finché resta nella finestra, senza modificare i propri pesi.
Una finestra grande, inoltre, non garantisce attenzione uniforme: i modelli tendono a usare meglio l'inizio e la fine del testo che il centro.
L'inferenza è il momento in cui una rete con parametri congelati elabora una richiesta e genera la risposta, un frammento di testo alla volta.
È l'uso di un modello addestrato: gli si dà un ingresso, questo attraversa i pesi e ne esce un risultato. Per un LLM (large language model, modello linguistico di grandi dimensioni) si parte dal prompt e si ottiene la completion, cioè il testo generato.
Addestramento e inferenza calcolo reale
La differenza chiave con l'addestramento è che i pesi restano congelati: vengono letti, non riscritti.
Si parte da MYCIN, un programma di Stanford degli anni Settanta che suggeriva antibiotici con circa 600 regole scritte a mano. Il suo motore di inferenza applicava le regole ai fatti per trarre conclusioni, nel senso della logica. Con le reti neurali la parola è rimasta, ma ha cambiato significato: oggi indica l'esecuzione di un modello già addestrato.
Serve a far lavorare il modello per chi lo usa. La vita di un modello ha due fasi: l'addestramento, fatto una volta sola e molto costoso, che produce un file di pesi; e l'inferenza, ripetuta a ogni domanda e risposta, economica per volta ma eseguita miliardi di volte. Per i grandi servizi la spesa di inferenza ha già superato quella di addestramento.
Può girare sui server del fornitore oppure sul proprio computer, purché il modello sia distribuito con pesi accessibili e la macchina sia abbastanza potente: l'esempio è un modello da 27 miliardi di parametri su un portatile da 32 GB. A due byte per parametro occuperebbe circa 54 GB: ci sta perché i pesi sono compressi a 4 bit, mezzo byte ciascuno (circa 14 GB), con una piccola perdita di qualità.
Due errori. Primo: credere che il modello impari mentre lo usiamo. Quando un'app dice di aver registrato una preferenza, in realtà salva un testo che reinserisce nel prompt delle conversazioni successive; i pesi non cambiano. Per apprendere davvero serve riaddestrare, ed è per questo che le aziende rilasciano nuove versioni.
Secondo: pensare che inferenza significhi ragionamento. Il termine indica solo far girare il modello, qualunque compito svolga, anche quando scrive passaggi intermedi.
L’LLM #17 ripete il passo autoregressivo #18: dal prompt #21 ricava le probabilità del prossimo token #19, ne sceglie uno e lo accoda alla completion #22.
Parte IV · #25–#38
L’architettura del 2017 che sta sotto quasi tutti i modelli linguistici attuali, scomposta pezzo per pezzo: dagli strati all’attention, dalla posizione dei token alla rete che elabora ogni vettore.
Il Transformer è lo schema architetturale proposto da Google nel 2017, alla base di quasi tutti i modelli di linguaggio odierni.
È un'architettura di rete neurale, cioè un progetto che stabilisce come sono disposti i pezzi della rete e come i dati vi circolano. Non è un modello già pronto: è la pianta che indica quanti strati ci sono e cosa contengono. Gli abitanti della pianta sono i pesi, fissati dall'addestramento.
Per questo modelli come GPT (Generative Pre-trained Transformer), Claude, Llama e Gemini hanno schemi affini, discendenti del progetto del 2017.
La pianta del Transformer, dall'ingresso all'uscita illustrazione
Nel disegno non c'è nessuna regola di grammatica e nessun dizionario: ci sono solo scatole che moltiplicano liste di numeri per pesi. Il sapere sta nei pesi, che la pianta non contiene.
Nel 2017 alcuni ricercatori di Google lavoravano alla traduzione automatica. I sistemi dell'epoca leggevano la frase un termine alla volta, portandosi dietro un riassunto sempre aggiornato: erano lenti e, nelle frasi lunghe, l'inizio sbiadiva.
Nel giugno 2017 il gruppo pubblicò un articolo intitolato "Attention Is All You Need", che proponeva di far entrare tutti i termini insieme. Addestrato per circa tre giorni e mezzo su otto schede grafiche (GPU, Graphics Processing Unit), il nuovo sistema superò i migliori traduttori dell'epoca.
Permette di elaborare tutti gli elementi del testo nello stesso momento, lavoro in cui le schede grafiche eccellono. Ne deriva un addestramento molto più rapido rispetto ai sistemi precedenti, che ha reso possibile far crescere i modelli fino a centinaia o migliaia di miliardi di parametri.
Due errori frequenti. Il primo è confondere il Transformer con un modello, o addirittura con ChatGPT: è l'architettura, mentre ChatGPT è un'applicazione che usa modelli costruiti su quell'architettura.
Il secondo è credere che sia stato progettato per capire la lingua. Al suo interno non ci sono regole grammaticali né dizionari, solo moltiplicazioni tra liste di numeri e pesi. Il sapere linguistico sta nei pesi, non nell'architettura.
Un layer (strato) è una fase di elaborazione di una rete neurale: prende una serie di numeri, li rielabora con i propri pesi e passa il risultato allo strato successivo.
Ogni strato accoglie una serie di numeri, la mescola con i pesi che gli appartengono e ne produce una nuova. L'uscita di uno diventa l'ingresso del successivo, fino in cima alla pila. Quando si parla di miliardi di parametri, si intendono proprio questi pesi, distribuiti strato per strato.
Una pila di strati che rivede la parola «letto» illustrazione
Quanti strati
La storia parte dal 1971, quando il matematico Alexey Ivakhnenko, a Kiev, descrisse una rete a 8 strati, tra i primi casi documentati di rete profonda, poco nota in Occidente. Per circa quarant'anni impilare strati è stato difficile. La rete vincitrice di ImageNet nel 2012 ne aveva 8, nel 2015 un gruppo Microsoft arrivò a 152, e GPT-3 nel 2020 ne contava 96.
Gli strati sono il meccanismo con cui un modello rielabora la rappresentazione di ogni token. Nel Transformer ogni strato fa due cose: i token si scambiano informazioni con quelli del contesto, poi ciascuno viene rielaborato per conto proprio. Così un termine ambiguo si chiarisce: un esempio è la parola "letto", che diventa verbo o participio a seconda delle parole vicine.
Primo errore: credere che più strati significhino sempre un modello migliore. Ogni strato aggiunge parametri, costo di addestramento e tempo per token; oltre una certa soglia la profondità rende sempre meno, e un modello profondo addestrato su pochi dati resta scarso.
Secondo errore: pensare che ogni strato abbia un compito assegnato dal progettista, come la grammatica o i fatti. Il progettista decide la forma, mentre ciò che ogni strato impara lo decide l'addestramento, e la divisione del lavoro che si osserva a posteriori è sfumata.
Si tratta del componente di un modello che legge un input nella sua interezza e lo converte in numeri, senza produrre testo.
Un encoder (codificatore) riceve una sequenza, per esempio una frase, e restituisce un vettore numerico per ciascun token. Nel Transformer è una pila di strati: l'uscita ha la stessa lunghezza dell'ingresso, ma ogni elemento è più ricco perché ha già considerato tutti gli altri.
L'encoder: ogni token vede tutta la frase illustrazione
Si può riassumere così: «ogni token vede tutta la frase».
Nel 2014, da Google, alcuni ricercatori traducono facendo riassumere la frase di partenza in un'unica lista di numeri da una rete; una seconda rete la usa per scrivere la traduzione, e da qui i nomi encoder e decoder. Il limite è il collo di bottiglia: un riassunto di dimensione fissa non regge frasi lunghe.
Poco dopo, a Montréal, si permette alla seconda rete di consultare tutte le parole. Nel 2017 il Transformer spinge questo schema all'estremo, e la prima metà è ciò che oggi chiamiamo encoder.
Oggi l'encoder serve soprattutto a classificare testi, per esempio distinguere un giudizio positivo da uno negativo o riconoscere lo spam. Serve anche a cercare: documenti e domande diventano vettori, confrontati con la similarità coseno (misura dell'angolo tra due vettori).
Leggendo tutto in un solo passaggio è piccolo e veloce: BERT (Bidirectional Encoder Representations from Transformers), nella versione base, ha 110 milioni di parametri.
Il primo errore è credere che "encoder" significhi cifrare. Il termine indica invece la rappresentazione dello stesso contenuto in un altro formato, come l'alfabeto Morse con punti e linee: nulla è nascosto.
Il secondo è pensare che ChatGPT abbia un encoder per il prompt e una parte separata per la risposta. GPT, Claude o Llama non hanno encoder: usano solo la metà decoder, con la stessa pila di strati per leggere e generare.
Il decoder è la metà del Transformer che produce l'output un token alla volta, guardando solo ciò che lo precede.
Il decoder è una pila di layer, simile all'encoder, con una regola in più: ogni token può considerare soltanto i token che stanno prima di lui. Il motivo è pratico: durante la generazione le parole future non esistono ancora. Il funzionamento è autoregressivo: si genera un token, lo si aggiunge in fondo e si riparte.
La «benda» del decoder e le tre famiglie illustrazione
| Famiglia | Come legge | Esempi e usi |
|---|---|---|
| Solo encoder | tutto, in un passaggio | BERT (Bidirectional Encoder Representations from Transformers): classificare, cercare |
| Solo decoder | solo il passato, un token alla volta | GPT (Generative Pre-trained Transformer), Claude, Llama: scrivere testo |
| Encoder + decoder | una metà legge, l'altra scrive | traduzione (2014–2017), Whisper |
Il primo GPT (2018, OpenAI) tenne solo la metà decoder: 12 layer, 117 milioni di parametri, meglio dei riferimenti in 9 compiti su 12.
Il Transformer del 2017 nasce con due metà che lavorano in coppia: l'encoder legge la frase di partenza e il decoder genera la traduzione. Nel giugno 2018 Alec Radford e colleghi di OpenAI pubblicano l'articolo "Migliorare la comprensione del linguaggio con il pre-addestramento generativo", tengono solo la metà decoder e la addestrano a indovinare il token successivo su circa 7.000 libri non pubblicati.
Il modello ha 12 layer e 117 milioni di parametri. Pur senza una parte dedicata alla lettura, batte i riferimenti del periodo in 9 compiti su 12. Il nome GPT (Generative Pre-trained Transformer) arriva solo dopo.
Serve a generare testo in modo continuo. Quasi ogni compito può diventare un "continuare un testo": tradurre, riassumere, rispondere, purché il prompt imposti bene la continuazione. È l'architettura di GPT, Claude, Gemini e quasi tutti i LLM (large language model) che usiamo tramite un'interfaccia chat.
Due errori frequenti. Il primo è credere che "decoder" significhi "decifrare". Il termine, di origine nella teoria dell'informazione, indica la parte che riporta la rappresentazione interna della rete, fatta di liste di numeri, in token leggibili.
Nei modelli in chat non esiste un encoder a monte: un unico blocco di strati legge e scrive.
Il secondo è pensare che, guardando solo indietro, il modello capisca meno. Il vincolo riguarda come si scrive, non quanto si comprende: quando risponde, l'intero prompt è già disponibile alle sue spalle. Gli encoder restano utili per cercare e classificare, ma i modelli più capaci oggi sono decoder puri.
È il meccanismo con cui ogni token stabilisce quanto pesano gli altri token della sequenza, per poi ricombinarne le informazioni.
Per ogni token, l'attention confronta la propria rappresentazione numerica con quella degli altri, converte i punteggi in percentuali e costruisce una nuova rappresentazione come somma pesata.
Confrontare, pesare, mescolare calcolo reale
Clicca la parola che sta guardando le altre:
Si riassume in tre verbi: confrontare, pesare, mescolare.
Nel 2014 Bahdanau, durante uno stage a Montréal nel laboratorio di Bengio, lavorava sulla traduzione automatica. I traduttori di allora compattavano l'intera frase in un'unica lista di numeri, che faticava con le frasi lunghe. L'idea fu far tornare il decoder sulle parole originali a ogni passo, come fa una persona che traduce.
Il modello, chiamato RNNSearch, uscì a settembre 2014. Nel 2017 il meccanismo diventa il centro del Transformer, nell'articolo "Attention Is All You Need".
Permette a parole anche lontane tra loro di collegarsi direttamente, senza passare lungo una catena. Il calcolo avviene in parallelo, quindi sfrutta bene le GPU (graphics processing unit, schede grafiche). Il costo però cresce in modo quadratico: raddoppiare il testo fa quadruplicare i costi.
Calcolo · il costo quadratico dell’attention
Il primo errore è credere che il modello presti attenzione come una persona. In realtà è un calcolo di confronti, percentuali e somme pesate, e la parola è solo una metafora scelta perché rende bene l'effetto.
Il secondo errore sta nello scambiare i pesi dell'attention per quelli del modello: questi ultimi restano fissi dopo l'addestramento, mentre i primi si ricalcolano per ogni frase, token e layer. Inoltre osservare dove si concentra l'attention non basta a spiegare una risposta.
È l'attention applicata a un testo che guarda se stesso: ogni token valuta tutti gli altri token della stessa sequenza, compreso sé stesso.
Chi interroga e chi viene interrogato stanno dentro lo stesso testo. Ogni token mette a confronto la propria lista numerica con quella di tutti gli altri, assegna un peso a ciascuno e costruisce una nuova rappresentazione mescolando il risultato. Il calcolo è lo stesso dell'attention classica: cambia soltanto la provenienza dei dati.
Le parole della stessa frase si guardano tra loro calcolo reale
Si parte da un articolo dell'Università di Edimburgo del 2016 (autori Jianpeng Cheng, Li Dong e Mirella Lapata), che la chiamava intra-attention, cioè attention interna, per capire come un modello legge una singola frase. Un anno dopo il Transformer la adotta come unico modo di leggere il testo e la ribattezza self-attention.
L'attention del 2014, legata a Bahdanau, serviva invece a collegare due frasi diverse, l'originale e la traduzione.
Permette a ogni parola di arricchirsi con il contesto che la circonda, così lo stesso token assume un significato diverso a seconda della frase in cui si trova. Nei modelli generativi come i GPT (Generative Pre-trained Transformer) la versione con maschera guarda solo i token precedenti, e questo rende possibile scrivere testo parola per parola.
Gli errori sono due. Il primo è credere che "self" significhi che il modello riflette su sé stesso o ha una forma di consapevolezza: la parola indica solo che i dati arrivano dallo stesso testo. Il secondo è considerare attention e self-attention due meccanismi diversi, o la seconda una versione evoluta della prima: il calcolo è identico.
Sono tre vettori che ogni token genera per sé prima dell'attention, ciascuno con un compito diverso: porre una domanda, essere individuato, offrire contenuto.
Dentro l'attention un token non lavora con il suo vettore originale, ma ne deriva tre varianti.
La query esprime che cosa il token sta cercando, la key indica con quali criteri il token può essere scovato dagli altri, il value è il dato che il token restituisce quando viene scelto. Le tre versioni nascono moltiplicando il vettore per altrettante tabelle di pesi, apprese in fase di addestramento e quindi parametri come gli altri.
Domanda, etichetta e contenuto: il calcolo di «era» calcolo reale
| Biblioteca | Attention |
|---|---|
| La domanda al bibliotecario | Query: che cosa cerco |
| L'etichetta sul dorso | Key: come mi si trova |
| Il contenuto del libro | Value: che cosa passo |
Qui ogni libro è anche un lettore: «era» pone una query e allo stesso tempo ha una sua key e un suo value.
Nel 2016 un team della Facebook AI Research, tra cui figurano Alexander Miller e Jason Weston, costruisce un sistema che risponde a domande sui film leggendo Wikipedia. Per metterlo alla prova prepara circa 100.000 quesiti. La trovata è separare ciò che un frammento di memoria espone per essere trovato da ciò che restituisce quando viene selezionato.
Nel 2017 il Transformer riprende questa separazione nell'attention, che diventa centrale nell'architettura.
Tenere distinti i due ruoli rende la relazione direzionale: un verbo può andare a caccia del proprio soggetto senza che quest'ultimo debba a sua volta cercarlo. Le key stabiliscono l'intensità del legame tra due token, mentre i value costituiscono la sostanza che passa da uno all'altro. Il risultato, per ogni token, è una somma ponderata delle informazioni altrui.
Primo errore: pensare che la query sia il prompt digitato. In realtà è un calcolo interno, distinto per ogni token e per ogni layer, per cui un prompt lungo genera centinaia di query. Secondo: credere che key e value formino un archivio di nozioni. Sono ricalcolati ogni volta dal testo presente e svaniscono quando il testo finisce; il sapere del modello sta nei pesi.
Calcolo · query, key e value in un Llama da 8 miliardi
anziché un solo meccanismo di attenzione per strato, il modello ne esegue parecchi in parallelo, ciascuno concentrato su un aspetto diverso, poi unisce i risultati.
è l'attenzione ripetuta più volte nello stesso strato, da più teste (head) che lavorano in parallelo. Ogni testa possiede pesi propri per costruire query, key e value, quindi formula le sue domande, individua i token più pertinenti e prepara una propria miscela di informazioni. Infine le uscite di tutte le teste vengono affiancate e rimescolate in un unico vettore per ogni token.
Quattro teste leggono la stessa frase illustrazione
nasce nel 2017 nel gruppo Google che scrive l'articolo Attention Is All You Need. Noam Shazeer, dipendente di lunga data, si unisce subito a un gruppo che propone di togliere le reti ricorrenti dai traduttori. Nell'articolo, accanto al suo nome, compaiono tre contributi, e questo meccanismo è uno di essi.
una sola attenzione produce un unico quadro di pesi che somma a cento, cioè una media, e la media cancella le relazioni diverse che convivono nella frase. Più teste colgono più legami insieme, come soggetto, pronomi e parole vicine. Il costo resta contenuto perché le dimensioni di ogni token vengono divise tra le teste, non duplicate.
il primo errore è pensare che gli ingegneri assegnino un compito a ciascuna testa. I ruoli emergono spontaneamente durante l'allenamento, e le etichette le attacchiamo noi dopo.
Non tutte le teste pesano allo stesso modo: uno studio del 2019 mostra che, rimuovendo 38 teste su 48 da un traduttore, la qualità scende di pochissimo.
Il secondo errore è credere che la frase venga spezzata e ogni testa ne legga un pezzo. Ogni testa vede tutti i token; a dividersi è la lista numerica di ciascun token. Più teste non garantiscono un modello migliore: sono un iperparametro da bilanciare.
Calcolo · quante teste
È il meccanismo con cui un Transformer capisce l'ordine delle parole, aggiungendo a ogni token una traccia della sua posizione.
È un vettore, lungo quanto l'embedding del token, che indica dove quel token si trova nel testo. Viene sommato all'embedding prima che il token entri nel primo layer, così ogni parola porta con sé sia il significato sia il posto. Non è un'etichetta attaccata al token: è mescolato dentro i suoi numeri.
Stesse parole, ordine diverso calcolo reale
La posizione è un vettore: ecco le onde sinusoidali del 2017 (versione ridotta a 64 numeri; nel Transformer erano 512).
L'intuizione risale al 1954, quando Zellig Harris avverte che il linguaggio non è un semplice insieme casuale di parole. Il problema concreto emerge con il Transformer del 2017: l'attention confronta ogni token con tutti gli altri, ma da sola non distingue chi viene prima di chi. La soluzione proposta nello stesso articolo usa onde sinusoidali.
Serve a distinguere frasi fatte delle stesse parole ma in ordine diverso, dove cambia chi fa cosa a chi. Permette anche di cogliere relazioni come la parola immediatamente precedente, più utili della posizione assoluta. Poiché i token vengono elaborati in parallelo, l'ordine va aggiunto a parte.
Primo errore: pensare che la posizione sia un numero scritto accanto al token. In realtà è un vettore sommato all'embedding, e il modello non legge mai un dato esplicito di posizione. Secondo errore: credere che il modello conosca già l'ordine perché leggerebbe da sinistra a destra. I token entrano tutti insieme, quindi senza questo meccanismo la frase tornerebbe un insieme di parole senza ordine.
RoPE (Rotary Position Embedding, embedding posizionale a rotazione) dice al modello dove si trova ogni token ruotando query e key dentro l'attention, senza toccare l'embedding.
È un metodo per codificare la posizione che, a ogni strato, fa ruotare i vettori query e key di un angolo legato alla posizione del token.
Quando due token si confrontano conta solo la differenza tra le loro rotazioni, quindi conta quanto distano i token, non dove si trovano esattamente. L'embedding resta quello originale e porta soltanto il significato della parola.
Due lancette che girano insieme calcolo reale
L'idea nasce nel 2021 da Jianlin Su, ricercatore a Shenzhen, che si chiedeva perché assegnare una posizione assoluta se l'attention ragiona soprattutto sulle distanze. Ad aprile pubblica l'articolo RoFormer; poco dopo il gruppo indipendente EleutherAI la usa nel modello GPT-J (Generative Pre-trained Transformer).
Nel 2023 Meta la sceglie per Llama e da allora quasi tutti i modelli aperti la copiano.
Permette al modello di lavorare sulle distanze tra le parole in modo naturale. La rotazione è una formula fissa, senza parametri da apprendere: l'addestramento riguarda le tabelle che generano query e key. Per estendere il contesto si rallentano le rotazioni o si "stirano" le posizioni: Llama 3 porta la base da 10.000 a 500.000 e Llama 3.1 arriva a 128.000 token.
Due errori frequenti. Il primo è pensare che RoPE sommi una lista di numeri all'embedding, come nel 2017: in realtà non tocca l'embedding e ruota query e key dentro l'attention, in ogni strato.
Il secondo è credere che un modello con RoPE legga testi lunghi quanto vuole: con angoli mai visti in addestramento il modello lavora male, e servono accorgimenti e spesso un po' di addestramento su testi lunghi.
Con BERT (Bidirectional Encoder Representations from Transformers) il limite è una tabella di posizioni fissa, qui è più sfumato.
Calcolo · conta la distanza, non il posto
È una tabella che impedisce a ogni token di guardare quelli che lo seguono, così il modello impara a prevedere il testo senza barare.
È una griglia quadrata in cui ogni token occupa una riga e una colonna. Si applica ai punteggi di attention prima che diventino pesi: le caselle sopra la diagonale, cioè i confronti con le posizioni future, vengono portate a meno infinito, così dopo la normalizzazione il loro peso è nullo.
La benda sugli occhi calcolo reale
Il nome nasce nella teoria dei segnali, dove un sistema è detto causale quando la sua uscita dipende soltanto dal presente e dal passato. Si parte da WaveNet, il modello di DeepMind del 2016 che genera audio campione per campione con convoluzioni causali. L'anno dopo il Transformer applica la stessa idea all'attention nel decoder.
Durante l'addestramento il testo è già completo, quindi senza protezione un token potrebbe copiare la risposta. Con la maschera, un testo lungo mille token equivale a mille esercizi di previsione svolti in parallelo, ciascuno senza accesso al futuro.
Nelle chat, i LLM (Large Language Model, modelli linguistici di grandi dimensioni) scrivono un token alla volta: la maschera garantisce che il comportamento resti identico a quello dell'addestramento.
Gli errori frequenti sono due. Il primo è pensare che anche BERT (Bidirectional Encoder Representations from Transformers) usi la causal mask: BERT vede le parole da entrambi i lati, e il suo metodo di nascondere a caso il 15% delle parole è un'operazione diversa. Il secondo è credere che causale significhi ragionare per cause ed effetti: qui il termine indica soltanto una direzione nel tempo.
Calcolo · le caselle della maschera di Llama 3 da 8 miliardi
un'attention map è una tabella che mostra quanto ciascun token di un testo tiene conto degli altri mentre un Transformer (architettura di rete neurale) lo elabora.
È una griglia quadrata: le righe indicano il token che "guarda", le colonne quello guardato, e ogni casella contiene un peso, spesso reso con l'intensità del colore. Ogni riga somma a 100. Non esiste una mappa unica: ce n'è una per ogni testa (head) e per ogni layer, e cambiano tutte appena cambia il testo.
Chi guarda chi calcolo reale
Nel 2014 Bahdanau, Cho e Bengio introducono il meccanismo di attention per la traduzione automatica, con una figura che mostra quali parole inglesi vengono consultate mentre il modello scrive la frase francese.
Nell'esempio, la diagonale si piega sull'espressione "zone économique européenne", perché in francese il nome precede l'aggettivo. Una regola che nessuno aveva insegnato al modello, ma deducibile dall'immagine.
A ispezionare un modello e formulare ipotesi su quali relazioni tra parole stia sfruttando. Alcune teste seguono la parola precedente, altre collegano termini distanti. Le mappe indicano anche dove conviene guardare con analisi più approfondite.
Primo, parlare della attention map di un modello al singolare: la media di tutte le teste cancella proprio le differenze più interessanti.
Secondo, credere che una casella accesa segnali una parola importante per la risposta. L'attention sink dimostra il contrario: il primo token assorbe molto peso senza contare nulla. La mappa dice a chi guarda un token, non cosa ne fa il modello, perché dopo intervengono i value e gli strati successivi.
Calcolo · le mappe di un solo testo
Nel Transformer è la parte di ogni layer che elabora ogni token da solo, aggiungendovi ciò che il modello ha appreso in addestramento.
Nel Transformer, la feed-forward network (rete a propagazione in avanti) riceve il vettore numerico di un singolo token, lo allarga, lo fa passare da un filtro che spegne una parte dei suoi valori e poi lo riporta alla dimensione iniziale. Il risultato non sostituisce il vettore: viene aggiunto a esso, come una correzione.
Allarga, filtra, riporta calcolo reale
I numeri veri di Llama 3 da 8 miliardi di parametri, per ogni strato:
Nel 2020 un gruppo di Tel Aviv notò che quasi tutti gli studi si concentravano sull'attention, pur contenendo questo blocco circa due terzi dei parametri di ogni strato nei transformer di allora (in Llama 3, come si vede più sotto, sono quattro quinti). Il nome feed-forward indica che i numeri scorrono in una sola direzione, dall'ingresso all'uscita, senza tornare indietro.
Mentre l'attention fa scambiare informazioni tra i token, questo blocco aggiunge a ciascun token conoscenze generali apprese in addestramento, come il fatto che Parigi si trova in Francia.
Per Llama 3 da 8 miliardi di parametri il conto è questo: circa 176 milioni per strato nella feed-forward contro 42 milioni nell'attention, cioè circa quattro quinti dello strato, e oltre 5,5 miliardi sui 32 strati.
Calcolo · FFN e attention in Llama 3 da 8 miliardi
Il primo errore è credere che il nome significhi che il modello legge il testo da sinistra a destra: il termine descrive solo la direzione dei numeri dentro il blocco, mentre a impedire di guardare i token successivi è la causal mask, che appartiene all'attention.
Il secondo errore è immaginare un database con un cassetto per ogni fatto: ogni fatto è distribuito su molti cassetti e su più strati, e modificarne uno può alterarne altri vicini.
È la regola fissa che, subito dopo la moltiplicazione per i pesi, decide quali numeri far passare e quali azzerare; è ciò che permette alla rete di "piegare" le rette e modellare forme complesse.
Un'operazione senza parametri, applicata a ogni numero di una lista subito dopo la moltiplicazione per i pesi. Nelle reti classiche sta dopo ogni strato; nel Transformer si trova nel mezzo della feed-forward network (FFN).
Le piegature calcolo reale
La più nota è la ReLU (Rectified Linear Unit): i negativi diventano zero, i positivi restano invariati.
Per decenni si è usata una curva a S, che schiaccia i numeri tra 0 e 1, ma nelle reti profonde l'addestramento rallentava e si bloccava. Nel 2010 Nair e Hinton propongono la ReLU; nel 2012 AlexNet la usa vincendo la gara ImageNet e diventa lo standard de facto.
Nel 2016 arriva la GELU (Gaussian Error Linear Unit), con un "gomito" arrotondato, usata da GPT-2 (Generative Pre-trained Transformer) e BERT (Bidirectional Encoder Representations from Transformers). Nel 2020 Shazeer propone varianti "a rubinetto", in cui metà della lista regola quanto far passare l'altra metà; una è quella usata da Llama.
Senza un passaggio non lineare tra gli strati, decine di strati impilati equivalgono a un solo strato, capace di tracciare solo relazioni lineari. La funzione spezza questa catena. Nel 1989 Hornik, Stinchcombe e White hanno dimostrato che abbastanza "pieghe" permettono di approssimare quasi qualsiasi funzione.
Calcolo · i filtri per token in Llama 3 8B
In ogni layer #26 l’attention #29 fa scambiare informazioni tra i token, poi la feed-forward #37 rielabora ciascun token da solo.