“Attention Is All You Need”
Immaginiamo che il nostro Transformer debba tradurre la frase inglese:
👉 “The cat drinks milk.” (traduzione in italiano: “Il gatto beve latte.”)
Vediamo passo per passo come il modello la elabora.
Fase 1: Tokenizzazione
Il testo viene scomposto in parole (token):
["The", "cat", "drinks", "milk", "."]
Ogni parola viene convertita in un numero (ID univoco) che
il modello può elaborare:
[ 523, 1324, 4563, 987, 34 ]
Fase 2: Embedding
Ogni ID viene trasformato in un vettore numerico (embedding)
che rappresenta il significato della parola in uno spazio multi-dimensionale:
The → [0.2, 0.5, -0.1, 0.7, ...]
cat → [0.4, -0.2, 0.8, 0.1, ...]
drinks → [-0.5, 0.9, 0.3, -0.8, ...]
milk → [0.7, 0.3, -0.6, 0.2, ...]
Fase 3: Positional Encoding
Poiché il Transformer elabora tutte le parole contemporaneamente,
dobbiamo dirgli l’ordine delle parole.
Aggiungiamo un Positional Encoding ai vettori per codificare la posizione:
Word Embedding + Positional Encoding:
The → [0.2+PE, 0.5+PE, -0.1+PE, 0.7+PE, ...]
cat → [0.4+PE, -0.2+PE, 0.8+PE, 0.1+PE, ...]
drinks → [-0.5+PE, 0.9+PE, 0.3+PE, -0.8+PE, ...]
milk → [0.7+PE, 0.3+PE, -0.6+PE, 0.2+PE, ...]
Fase 4: Self-Attention (il cuore del Transformer!)
Ora il modello decide quali parole devono prestare più attenzione alle altre.
Ogni parola viene trasformata in 3 vettori:
• Query (Q): cosa sto cercando?
• Key (K): quanto sono rilevante per altre parole?
• Value (V): qual è la mia informazione da trasferire?
Esempio per “cat”:
Q_cat = [0.4, -0.2, 0.1]
K_cat = [0.3, 0.5, -0.4]
V_cat = [0.8, 0.2, -0.5]
Ora calcoliamo quanto “cat” deve concentrarsi sulle altre parole, moltiplicando Q × K di tutte le parole.
The cat drinks milk
The 0.8 0.1 -0.2 0.3
cat 0.1 1.0 0.5 0.2
drinks -0.2 0.5 1.0 0.7
milk 0.3 0.2 0.7 1.0
Notiamo che “cat” e “drinks” hanno un’attenzione alta (0.5), perché “cat” è molto legato al verbo “drinks”.
Poi applichiamo Softmax per ottenere pesi normalizzati (ovvero percentuali di attenzione):
The: 10%
cat: 40%
drinks: 35%
milk: 15%
Conclusione: “cat” si concentra principalmente su sé stesso (40%) e su “drinks” (35%) perché sono grammaticalmente collegati.
Fase 5: Multi-Head Attention
Abbiamo usato un solo calcolo di attenzione, ma in realtà il Transformer ne esegue diversi contemporaneamente con diversi pesi (multi-head attention). Questo permette di catturare relazioni grammaticali diverse (soggetto-verbo, verbi-oggetti, ecc.).
Fase 6: Feedforward e Normalizzazione
Dopo il self-attention, i nuovi vettori vengono passati a una rete neurale feedforward per elaborare ulteriormente le informazioni e poi normalizzati.
Fase 7: Decoder per la Traduzione
Il decoder prende il risultato dell’encoder e inizia a generare parole in italiano. Funziona in modo simile, ma con un vincolo:
🔹 Il decoder vede solo le parole precedenti, non le future (Masked Self-Attention).
Esempio:
1️⃣ Prima genera “Il”
2️⃣ Poi “gatto”
3️⃣ Poi “beve”
4️⃣ Infine “latte”