Spiega in dettaglio l'attenzione multi-testa: cosa sono Q/K/V, come vengono calcolati i pesi di attenzione, perché ci sono più teste.
sobes.tech AI
Risposta dell'AI
L'attenzione multi-testa — è un meccanismo chiave nei trasformatori, che permette al modello di concentrarsi contemporaneamente su diverse parti della sequenza di input.
-
Q (Query), K (Chiave), V (Valore) — sono tre matrici ottenute dai dati di input tramite trasformazioni lineari addestrabili. Ogni posizione nella sequenza viene trasformata in tre vettori:
- Query — la richiesta per cui si cerca un'informazione rilevante.
- Chiave — la chiave con cui viene confrontata la query.
- Valore — il valore che viene restituito in risposta alla query.
-
Calcolo dei pesi di attenzione:
- Si calcola il prodotto scalare tra Query e Chiave per ogni coppia di posizioni.
- Il risultato viene scalato (solitamente diviso per la radice della dimensione delle chiavi) per stabilizzare i gradienti.
- Si applica softmax per ottenere una distribuzione di probabilità sui pesi.
- I pesi vengono moltiplicati per i Valori corrispondenti e i risultati vengono sommati — questa è l'uscita dell'attenzione.
-
Perché più teste (multi-head)? Diverse teste permettono al modello di vedere le informazioni da diversi "angoli di vista", cioè ogni testa impara a evidenziare diverse dipendenze e pattern nei dati. Questo aumenta l'espressività e la qualità del modello.
Esempio semplificato:
# Per ogni testa:
Q_i = X * W_Q_i
K_i = X * W_K_i
V_i = X * W_V_i
attention_weights = softmax((Q_i @ K_i.T) / sqrt(d_k))
output_i = attention_weights @ V_i
# Combiniamo le uscite di tutte le teste
output = concat(output_1, ..., output_h) * W_O
Dove W_Q_i, W_K_i, W_V_i, W_O sono matrici addestrabili, d_k è la dimensione delle chiavi, e h è il numero di teste.