Il self-attention è il trucco matematico che ha cambiato tutto. Senza di lui niente ChatGPT, niente Claude, niente Gemini. Niente di niente.
L'idea: quando il modello legge una frase, ogni parola "guarda" tutte le altre e si chiede "quanto sei rilevante per me?". Nella frase "il gatto che ho visto ieri al parco era bianco", la parola "bianco" deve sapere che si riferisce a "gatto", non a "parco". Self-attention calcola questi pesi di rilevanza in parallelo, per tutte le parole insieme.
Prima dei Transformer, le reti neurali leggevano i testi una parola alla volta (RNN, LSTM). Lente, dimentiche, impossibile parallelizzare. Self-attention guarda tutto in una botta sola, sfrutta le GPU al massimo, mantiene contesto lungo.
Come funziona in pratica:
- Ogni token diventa tre vettori: Query, Key, Value.
- Si moltiplica Query di un token per Key di tutti gli altri: ottieni i pesi di attenzione.
- Si combinano i Value pesati: il token "vede" il contesto.
Costo: il calcolo cresce in modo quadratico con la lunghezza del testo. Una context window doppia costa quattro volte. Per questo i modelli con contesto lungo (1M token) usano varianti ottimizzate come Flash Attention.
Nel paper "Attention Is All You Need" (Google, 2017) c'è scritto tutto. Da lì in poi è cambiata la storia.