Mentre elabora la frase, il modello decide a quali parole prestare attenzione. È così che "capisce" il contesto: pesando relazioni, non seguendo regole scritte.
Sotto ogni parola della demo trovi quattro numeri: sono la sua carta d'identità, e dicono quanto quella parola è un essere vivo, un'azione, una cosa, oppure una parolina che rimanda a un'altra (gli articoli, i pronomi, le congiunzioni). Quando clicchi una parola, il programma trasforma la sua carta d'identità in una domanda — «sto cercando esseri viventi», per esempio — e confronta quella domanda con la carta d'identità di tutte le altre parole. Più le due combaciano, più alto è il punteggio; poi i punteggi diventano percentuali che sommano a cento, e le percentuali disegnano le barre. Il conto lo fa davvero, adesso, nel tuo browser: puoi controllarlo riga per riga nella tabella dei passaggi.
Clicca una parola: sotto trovi il suo vettorino, e più giù il calcolo che produce le barre.
Colonna 1: il punteggio grezzo, cioè il prodotto scalare fra la query della parola scelta e la key di ognuna delle altre. Colonna 2: quel punteggio diviso per la radice del numero di dimensioni (√4 = 2) e poi messo all'esponente. Colonna 3: ogni esponenziale diviso per la somma di tutti. Questa terza colonna è la softmax: prende numeri qualunque e ne fa percentuali che sommano a uno. La parola scelta è esclusa dal conto per leggibilità; in un transformer vero la diagonale c'è, e spesso è il peso più alto.
| la query… | vivo | azione | cosa | rimando |
|---|---|---|---|---|
| cerca vivo | 0 | 1 | 0 | 1 |
| cerca azione | 1 | 0 | 1 | 0,5 |
| cerca cosa | 0 | 1 | 0 | 1 |
| cerca rimando | 0 | 0 | 0 | 0 |
Si legge per righe: la prima dice «quanto cerco esseri viventi», e la cerco se sono un'azione o una parola di rimando. Detto in italiano: un verbo cerca esseri e cose (i suoi argomenti); un nome cerca azioni (il suo verbo); una parola-ponte cerca soprattutto esseri e cose, e un po' le azioni. La key di una parola è invece il vettorino stesso, senza trasformazioni: l'etichetta che la parola espone. Questa matrice l'ho scritta io in dieci minuti; un modello vero impara le sue leggendo miliardi di frasi, e ne ha una coppia diversa per ogni testa di ogni strato.
Il riflettore ha una meccanica precisa, e vale la pena smontarla. Ogni token, arrivato a uno strato di attenzione, produce tre vettori diversi a partire dal proprio: una query, una key e un value. Il modo più onesto di leggerli è come in una biblioteca: la query è la domanda che quel token sta facendo («sto cercando un soggetto maschile singolare»), la key è l'etichetta che ogni altro token espone sul dorso («io sono un soggetto maschile singolare»), il value è il contenuto che passa a chi lo interroga. Il modello confronta la query di una parola con le key di tutte le altre tramite un prodotto scalare, normalizza i punteggi con una softmax in modo che sommino a uno, e con quei pesi mescola i value. La barra che vedi in questa pagina è, in miniatura, quella distribuzione.
Le teste di attenzione sono più d'una per strato, ed è il punto in cui la metafora del riflettore diventa insufficiente: non c'è un solo fascio di luce, ce ne sono decine in parallelo su ciascuno strato, e ognuno impara a inseguire un tipo di relazione diverso — l'accordo fra soggetto e verbo, il legame fra un pronome e il suo antecedente, la parola che chiude una citazione aperta. L'idea nasce nel 2015 con Dzmitry Bahdanau, Kyunghyun Cho e Yoshua Bengio, che la introducono per la traduzione automatica come rimedio al collo di bottiglia delle reti ricorrenti; diventa l'intera architettura nel 2017, quando il gruppo di Ashish Vaswani pubblica «Attention Is All You Need», elimina la ricorrenza e rende il calcolo parallelizzabile. È da lì che discende tutto ciò che usi oggi: la sigla GPT sta per Generative Pre-trained Transformer.
Un esempio concreto di che cosa sappia fare questo meccanismo sono le induction head, descritte da Catherine Olsson e colleghi (2022): coppie di teste che, avendo già incontrato la sequenza «A B» più indietro nel testo, quando rivedono «A» spingono il modello a predire «B». È un circuito di copiatura, e sembra poca cosa, ma è il candidato principale a spiegare l'apprendimento in contesto, cioè la capacità di imparare uno schema dagli esempi che gli metti nel prompt senza che nessun peso venga modificato. Nei grafici di addestramento la sua comparsa coincide con un gradino netto nelle prestazioni: una struttura che si forma da sola e cambia ciò che il modello sa fare.
La demo qui sopra esegue, senza abbreviazioni, la formula del §3.2.1 di «Attention Is All You Need»: Attention(Q, K, V) = softmax(QKᵀ / √dk) V, amputata dell'ultimo pezzo — i value, che qui non servono perché non c'è nessuno strato successivo a cui passare il risultato. Il termine QKᵀ è la matrice di tutti i prodotti scalari fra le query e le key; i suoi elementi si chiamano logit, cioè punteggi grezzi non ancora normalizzati. La dk è la dimensione dei vettori: qui vale 4, nel transformer originale vale 64, perché dmodel = 512 viene diviso fra 8 teste. La divisione per √dk non è un vezzo estetico: se le componenti dei due vettori sono indipendenti a media nulla e varianza uno, il loro prodotto scalare ha varianza dk, quindi cresce con la dimensione; logit troppo grandi mandano la softmax in saturazione — un peso quasi uguale a 1 e tutti gli altri schiacciati contro lo zero — e in quella regione il gradiente, cioè la derivata che dice come correggere i pesi, diventa minuscolo e l'addestramento si inchioda. Dividere per √dk riporta i logit in un intervallo in cui la softmax resta sensibile. È lo stesso identico parametro che nella pagina sulla risposta compare come temperatura: dividere prima di esponenziare significa decidere quanto la distribuzione sarà appuntita.
La maschera causale che puoi accendere nella demo è, in un modello vero, esattamente questo: prima della softmax si somma −∞ a tutti i logit delle posizioni future, così il loro esponenziale vale zero e il peso pure. È la differenza fra un encoder — che vede la frase intera, come BERT — e un decoder-only come GPT, che genera da sinistra a destra e non può sbirciare la parola che deve ancora scrivere. Prova a metterla sulla prima parola della frase: non le resta nessuno da guardare, e in un modello vero il peso finirebbe tutto su sé stessa. Prova poi sulla seconda: le resta un solo candidato, e la softmax di un insieme con un elemento solo vale 1 per costruzione — il 100% che leggi lì non è una preferenza del modello, è aritmetica.
Dove il mio giocattolo smette di valere, e conviene sapere dove. Primo: i vettorini sono statici — «gatto» ha sempre gli stessi quattro numeri — mentre in un transformer vero il vettore che entra nello strato n è già contestuale, si porta dentro il residuo di tutti gli strati precedenti, e il «gatto» di questa frase è numericamente diverso dal «gatto» di un'altra. Secondo: qui Wk è la matrice identità, mentre in un modello vero query e key nascono da due matrici distinte, entrambe imparate. Terzo: una testa sola e uno strato solo, mentre GPT-2 small — quello che gira dentro Transformer Explainer — ha 12 strati per 12 teste, cioè 144 pattern di attenzione diversi sulla stessa frase. Quarto: il costo. I punteggi sono n² per testa, con n il numero di token: su un contesto da mille token fanno un milione di prodotti scalari per testa, e su centomila token fanno dieci miliardi. È da questa parabola che nasce metà della ricerca sull'efficienza degli ultimi anni — attenzione sparsa, GQA, MLA — che Sebastian Raschka ha riassunto in una guida visuale alle varianti.
Il calcolo della demo è autentico, i vettori no. Se vuoi vedere l'attenzione di un modello vero, questi quattro posti la mostrano davvero. Sono tutti in inglese e i primi tre danno il meglio da computer; nessuno è incorporato qui dentro, perché preferisco mandarti alla fonte che rifarne una copia.
Una singola testa di attenzione di un modello di frontiera, aperta e ispezionabile:
strato 15, testa 22 di Qwen3.6-27B.
Nel riquadro di testo puoi incollare una frase tua e guardare dove quella testa manda i
pesi, token per token, con l'entropia dell'attenzione e la quota di auto-attenzione
calcolate accanto. L'indirizzo segue uno schema regolare —
neuronpedia.org/modello/head/strato/indice — e cambiando
i due numeri esplori le oltre 36.000 teste catalogate su 37 modelli. È il posto giusto per
verificare di persona che le teste non fanno tutte la stessa cosa.
Un GPT-2 small vero, con i suoi 12 strati e le sue 12 teste, che gira dentro il browser: scrivi una frase, scegli lo strato e la testa, e vedi la matrice di attenzione colorarsi mentre il modello sceglie il token successivo. È la versione autentica di ciò che la mia demo imita in miniatura. poloclub.github.io
Brendan Bycroft ha costruito la visualizzazione tridimensionale dell'inferenza di un nano-GPT da 85.000 parametri: ogni tensore è un solido, e la telecamera vola lungo la pipeline. Non ha ancore negli indirizzi, quindi ti scrivo i passi.
Avvertenze oneste: è in inglese, serve un computer con WebGL2 (su telefono degrada), e il modellino non genera linguaggio — ordina tre lettere, A, B e C. Quello che si vede benissimo, invece, è la forma del calcolo, e in coda il confronto di scala con GPT-2 e GPT-3.
Se la multi-head attention classica ti è chiara e vuoi sapere che cosa usano davvero i modelli di oggi — multi-query, grouped-query, multi-head latent attention, finestre scorrevoli — la guida visuale di Raschka le mette in fila con gli schemi, ed è gratuita. È il gradino successivo naturale dopo questa pagina.
Come funziona questa demo, detto senza trucchi: i quattro numeri sotto ogni parola li ho scelti io, e sono un giocattolo — un modello vero ne usa centinaia per parola e se li costruisce da solo leggendo miliardi di frasi. Il calcolo, invece, è quello vero: prodotto scalare, divisione per la radice della dimensione, softmax, e i numeri della tabella sono quelli che il tuo browser sta usando in questo momento. L'attenzione autentica si può vedere, e non serve fidarsi di me: Transformer Explainer fa girare un GPT-2 dentro la pagina, e Neuronpedia apre una testa alla volta di modelli grandi. Una cautela in più, che vale anche là: i ricercatori discutono da anni se questi pesi dicano davvero dove il modello ha guardato per rispondere (Jain e Wallace, 2019). Trattali come un indizio, non come una confessione.
Complessità della fonte: divulgativa approfondimento tecnica o accademica