2026.07.30 // LLM FOR DUMMIES // 9 MIN
LLM for Dummies #3 — Attention: Come le Parole Imparano a Guardarsi
Le puntate 1 e 2 hanno trasformato il testo in punti solitari nello spazio. L'attention è il meccanismo che permette a ogni token di guardare tutti gli altri e decidere chi ascoltare — l'idea da cui prende il nome il Transformer, e il motivo per cui le context window lunghe costano denaro quadratico.
ALESSIO ROCCHI ·
Riepilogo veloce della serie. Puntata 1: il testo diventa una sequenza di ID di token. Puntata 2: ogni ID diventa un punto in uno spazio dove la distanza è somiglianza e le direzioni sono concetti. E abbiamo chiuso su un problema irrisolto: la tabella dà a "riva" un vettore solo, che stia accanto a "fiume" o dentro un bilancio. I punti sono solitari. Ognuno non sa nulla dei suoi vicini nella frase.
Questa puntata riguarda il meccanismo che pone fine alla solitudine — l'idea singola su cui è costruito l'intero boom dell'AI: l'attention.
Ogni Parola Può Chiedere in Giro
Leggete questa frase: "L'animale non attraversò la strada perché era troppo stanco."
Chi era stanco? Avete risposto all'istante: l'animale. Le strade non si stancano. Ora cambiate una parola — "perché era troppo stretta" — e il soggetto salta alla strada. L'avete risolto lasciando che la parola ambigua consultasse il resto della frase.
L'attention è esattamente questo, reso meccanico. Ogni token può guardare ogni altro token, assegnargli un peso — "quanto sei rilevante per capire il mio significato qui?" — e poi ricostruirsi come miscela pesata di ciò che gli altri offrono.
FIG. 01 // CHI GUARDA CHI
Un token che decide chi ascoltare
ILLUSTRAZIONE: PESI DI SELF-ATTENTION PER UNA TESTA
Tutto qui il trucco. Niente regole grammaticali, niente alberi sintattici, nessuno ha spiegato al modello cosa sia un pronome. I pesi di rilevanza si imparano dai dati, e la risoluzione delle coreferenze — storicamente uno dei problemi più duri della linguistica computazionale — cade fuori come effetto collaterale.
Domande, Etichette, Contenuti
Come fa un token a decidere chi ascoltare? Il meccanismo ha tre ingredienti dai nomi notoriamente inutili — query, key, value. Ecco la versione che resta in testa.
Immaginate che ogni token entri in una biblioteca:
- porta con sé una domanda a cui vuole risposta ("sono un aggettivo, di chi si parla?") — la query;
- ogni libro sugli scaffali ha un'etichetta sul dorso che descrive cosa contiene ("sono un nome animato, soggetto di questa frase") — le key;
- e ogni libro ha un contenuto vero da offrire — i value.
Il token confronta la sua domanda con ogni etichetta. Corrispondenza forte, peso grande. Poi si porta a casa una miscela dei contenuti, pesata da quelle corrispondenze — e quella miscela diventa il suo nuovo sé, consapevole del contesto. La "riva" che ha chiesto in giro e ha ricevuto contenuti fluviali ora è, letteralmente, un vettore diverso dalla "riva" che ha ricevuto contenuti finanziari. Il problema della puntata 2 è risolto.
Un'ultima torsione: non succede una volta sola. Ogni layer esegue molte "teste" di attention in parallelo — insiemi separati di domande ed etichette, ognuno libero di specializzarsi. Nei modelli addestrati si trovano teste che tracciano la sintassi, teste che collegano i pronomi ai referenti, teste che guardano solo il token precedente. Nessuno assegna questi ruoli; emergono.
La Macchina Intorno
L'attention da sola non è un language model. La ricetta completa, distillata:
FIG. 02 // LA MACCHINA
Il Transformer, tolto il rumore
ILLUSTRAZIONE: TRANSFORMER DECODER-ONLY (STILE GPT)
Due mosse alternate, impilate decine di volte: attention (i token si parlano) e una rete feed-forward (ogni token pensa da solo — la stessa piccola rete a due strati applicata a ogni posizione e, controintuitivamente, il posto dove vivono la maggior parte dei parametri e molta della "conoscenza" memorizzata). Le connessioni residuali permettono a ogni blocco di aggiungere il proprio contributo a un flusso continuo invece di sostituirlo: è ciò che rende addestrabili pile da 100 layer.
Questa architettura è il Transformer, dal paper del 2017 con il titolo più sicuro di sé nella storia del machine learning: "Attention Is All You Need." La sua vera rivoluzione fu economica quanto scientifica: la generazione precedente di modelli leggeva il testo in sequenza, parola per parola, come un umano. L'attention processa tutte le posizioni in parallelo — esattamente il carico di lavoro per cui sono fatte le GPU. Il parallelismo ha reso abbordabile l'addestramento su trilioni di parole, la scala ha reso i modelli sorprendentemente bravi, e tutto questo ciclo dell'AI è seguito da lì.
Il Conto: Perché il Contesto Costa Denaro Quadratico
Non esistono pasti gratis. "Ogni token guarda ogni token" significa che n token richiedono n² confronti. Raddoppi il contesto, quadruplichi il lavoro di attention.
FIG. 03 // IL CONTO QUADRATICO
L'attention in tre numeri
Il paper che ha iniziato tutto
2017
"Attention Is All You Need" — 8 pagine, ~200K citazioni
Raddoppi il contesto, moltiplichi il lavoro di attention per
×4
ogni token guarda ogni token: n token, n² coppie
Coppie di attention in un contesto pieno da 128K token
~16B
per layer — ecco perché il contesto lungo costa denaro vero
VASWANI ET AL. 2017 · VALORI TIPICI DECODER-ONLY
È la ragione profonda dietro diverse cose che avete sperimentato:
- Il contesto lungo è una feature premium. Una finestra da 128K non è 16× il lavoro di una da 8K — è fino a 256× al layer di attention.
- La "tassa linguistica" della puntata 1 si compone. Il +40% di token dell'italiano diventa circa +100% di calcolo di attention a parità di contenuto. L'inefficienza del tokenizer viene elevata al quadrato.
- Le chat lunghe rallentano e mangiano memoria. Il modello tiene in cache le rappresentazioni di tutto (la KV cache, per i lettori del deep dive), e cresce a ogni messaggio.
- Il modello non "scorre" mai il testo. Dentro la finestra, ogni token passato viene riconsultato per ogni nuovo token generato. Quando gli sfugge qualcosa a metà conversazione, non è perché non ha guardato — è perché i pesi si sono diluiti ("lost in the middle" è un effetto reale e misurato).
Deep Dive: la Formula che Citano Tutti
La parte "for dummies" finisce qui — sotto si assumono algebra lineare e un po' di probabilità. Altrimenti ci vediamo alla puntata #4: il modello mentale qui sopra è quello che conta.
Scaled Dot-Product Attention
L'intero meccanismo è una riga:
Attention(Q, K, V) = softmax( QKᵀ / √d_k ) · V
Spacchettiamo. L'input del layer è X ∈ ℝ^{n×d} (n token, larghezza d). Tre proiezioni apprese producono query, key e value: Q = XW_Q, K = XW_K, V = XW_V, con W_Q, W_K ∈ ℝ^{d×d_k}. La matrice QKᵀ ∈ ℝ^{n×n} contiene tutti i prodotti scalari query-key — i punteggi "domanda vs etichetta" della biblioteca, tutti gli n² in un colpo. La softmax trasforma ogni riga in una distribuzione di probabilità (i pesi degli archi della FIG. 01), e la moltiplicazione per V prende la miscela pesata. Quella matrice n×n è il costo quadratico fatto carne.
Perché dividere per √d_k? Se le componenti di q e k sono grosso modo indipendenti con varianza unitaria, il prodotto scalare ⟨q,k⟩ ha varianza d_k — i punteggi crescono in modulo come √d_k. Date punteggi grandi a una softmax e questa satura: un peso ≈ 1, gli altri ≈ 0, gradienti ≈ 0, il training si pianta. Dividere per √d_k tiene la varianza dei punteggi a 1 indipendentemente dalla dimensione della testa. Un denominatore minuscolo che regge l'addestrabilità dell'intera architettura.
Mascheramento causale: in un decoder stile GPT, la posizione i non deve vedere le posizioni j > i (sta cercando di predirle). Implementazione: quei punteggi vengono messi a −∞ prima della softmax, che li trasforma in zeri esatti dopo. Addestrare su una sequenza di lunghezza n produce così n problemi di predizione del token successivo in un solo passaggio parallelo — questo, più di ogni altra cosa, è il miracolo di efficienza del Transformer.
Multi-head: si divide in h teste di dimensione d_k = d/h, si esegue l'attention indipendentemente in ognuna, si concatena, si proietta con W_O. Le teste sono proiezioni economiche in sottospazi, non h copie del calcolo completo — stessi FLOP totali di una testa grande, comportamento molto più ricco.
L'Attention È Cieca alle Permutazioni — Quindi Positional Encoding
Riguardate la formula: nulla al suo interno sa dove sta un token. Mescolate l'input e gli output si mescolano identicamente — "il cane morde l'uomo" e "l'uomo morde il cane" sarebbero indistinguibili. La posizione va iniettata esplicitamente.
Il paper del 2017 aggiungeva agli embedding vettori sinusoidali: PE(pos, 2i) = sin(pos/10000^{2i/d}), coseno per le dimensioni dispari — uno spettro di lunghezze d'onda che permette di leggere posizioni assolute e, via identità trigonometriche, offset relativi. I modelli moderni usano perlopiù RoPE (rotary embeddings): invece di sommare la posizione al vettore, ruotano ogni fetta 2D di q e k di un angolo proporzionale alla posizione. L'eleganza: una rotazione di mθ su q e nθ su k rende il loro prodotto scalare dipendente solo da m−n — la posizione relativa emerge dalla geometria, che si comporta molto meglio quando si estrapola oltre le lunghezze di training (i trucchi di "stiramento" della context window come YaRN operano direttamente su questi angoli).
La Vista Sistemistica: KV Cache e FlashAttention
In inferenza si genera un token alla volta. Ricalcolare K e V per l'intero prefisso a ogni passo costerebbe O(n²) per token; invece si mettono in cache — la KV cache. La generazione costa allora O(n) di attention per nuovo token, ma la cache cresce linearmente: per un modello classe 70B a 128K di contesto raggiunge decine di gigabyte — spesso più del budget di traffico in memoria dei pesi stessi. È il vincolo reale dietro il pricing del contesto, ed è il motivo per cui esistono tecniche come la grouped-query attention (condividere K,V tra le teste): riducono la cache, non la matematica.
Lato training, nemmeno la matrice n×n dei punteggi sta nella memoria veloce. FlashAttention (2022) calcola l'attention esatta senza mai materializzarla — piastrellando il calcolo così che i punteggi vivano brevemente nella SRAM on-chip, usando il trucco della online-softmax per accumulare risultati corretti blocco per blocco. Non è un'approssimazione: è un riordino della stessa aritmetica attorno alla banda di memoria. È il motivo per cui le finestre odierne da 100K+ sono praticabili.
Il cimitero del sub-quadratico merita una menzione: sparse attention, linear attention, sliding window e modelli state-space (Mamba) barattano tutti l'n² con qualcosa di più economico, e gli ibridi sono sempre più comuni in produzione. Ma per la qualità di frontiera, l'attention piena — resa veloce anziché approssimata — tiene ancora la corona.
Cosa Fanno Davvero le Teste
L'attention è la parte più interpretabile di un Transformer, perché i pesi sono lì da leggere. L'interpretabilità meccanicistica ha mappato parte del macchinario: le induction head — coppie di teste che implementano "trova l'ultima volta che è apparso questo pattern e copia quel che seguiva" — emergono bruscamente durante il training e sembrano essere un meccanismo centrale dell'in-context learning, la capacità del modello di cogliere un pattern dal vostro prompt senza alcun aggiornamento dei pesi. Quando mostrate tre esempi input→output e il modello produce il quarto, state guardando teste di attention eseguire un algoritmo appreso sui vostri esempi. La prossima puntata mostra da dove viene tutto questo: il training.
Prossima Tappa
Ora abbiamo la macchina completa: token, geometria, e una pila di blocchi attention + feed-forward che trasforma il contesto in predizione. Quello che non abbiamo è una ragione per cui quei trilioni di numeri siano giusti. La prossima volta: il training — la predizione del token successivo come obiettivo, perché comprimere internet costringe un modello a imparare fatti, grammatica e un po' di ragionamento, e cosa misura davvero una "loss curve".
Roadmap della serie: tokenizzazione → embedding → attention (siete qui) → training → da autocomplete ad assistente → inferenza. Domande? Scrivetemi.