2026-07-27 · 6 min di lettura

Capire i vettori Q, K, V nei modelli Transformer

Nell'intelligenza artificiale moderna, in particolare nell'elaborazione del linguaggio naturale, l'architettura Transformer è diventata la spina dorsale di modelli come GPT, BERT e molti altri. Al centro di questa architettura si trova il meccanismo di attenzione, che si basa su tre vettori chiave: Query (Q), Key (K) e Value (V). Questo articolo spiegherà come questi vettori vengono derivati dai token, come vengono utilizzati durante l'elaborazione del prompt e come funzionano l'attenzione multi-testa e le operazioni all-reduce per produrre l'output finale.

Dalle parole ai token e agli embedding

Il primo passo nell'elaborazione del testo è convertire ogni parola (o sottoparola) in un token. Il vocabolario del modello contiene un insieme fisso di token, ciascuno con un ID intero univoco. Una volta che la frase di input è suddivisa in token, ogni token viene mappato a un vettore denso chiamato embedding. Questo embedding è una rappresentazione ad alta dimensionalità (ad esempio, 512 o 768 dimensioni) che cattura il significato semantico del token. Questi embedding vengono appresi durante l'addestramento e sono memorizzati in una matrice di embedding.

Derivazione dei vettori Query, Key e Value

Per abilitare il meccanismo di attenzione, l'embedding di ogni token viene trasformato in tre vettori diversi: Query, Key e Value. Questo viene fatto moltiplicando il vettore di embedding per tre matrici di pesi apprese: Wq, Wk e Wv. Queste matrici sono parametri del modello, aggiornati durante l'addestramento. I vettori risultanti hanno una dimensione più piccola (spesso chiamata d_k) rispetto alla dimensione originale dell'embedding, il che aiuta a un calcolo efficiente.

Il vettore Query (Q) rappresenta ciò che il token sta 'cercando' nel contesto. Il vettore Key (K) rappresenta ciò che il token 'offre' come etichetta. Il vettore Value (V) contiene le informazioni effettive che verranno aggregate. Il meccanismo di attenzione determina quanto ogni token deve prestare attenzione agli altri confrontando le query con le chiavi.

Dimensioni delle matrici e trasformazioni
SimboloDimensioniDescrizione
Embeddingd_modelRappresentazione del token di input
Wqd_model x d_kMatrice dei pesi Query
Wkd_model x d_kMatrice dei pesi Key
Wvd_model x d_vMatrice dei pesi Value
Qd_kVettore Query per un token
Kd_kVettore Key per un token
Vd_vVettore Value per un token
← Scorri a destra per vedere altro →

Il meccanismo di self-attention

Una volta che abbiamo Q, K e V per ogni token nella sequenza, il meccanismo di self-attention calcola i punteggi di attenzione. Per un dato token, la sua query viene moltiplicata (prodotto scalare) con le key di tutti i token nella sequenza. I punteggi risultanti indicano la rilevanza di ciascun token per quello corrente. Questi punteggi vengono quindi scalati dividendo per la radice quadrata della dimensione delle key (d_k) per stabilizzare i gradienti. Successivamente, viene applicata una funzione softmax per convertire i punteggi in probabilità che sommano a 1. Infine, le probabilità vengono utilizzate per calcolare una somma ponderata dei vettori value, producendo un nuovo vettore contestuale per il token.

Questo processo viene eseguito in parallelo per tutti i token nella sequenza, rendendolo estremamente efficiente. I nuovi vettori vengono poi passati attraverso una rete neurale feed-forward e ulteriori livelli, costruendo gradualmente una ricca rappresentazione dell'input.

Passi della self-attention
PassoOperazioneRisultato
1Calcolare Q, K, V dagli embeddingVettori per ogni token
2Prodotto scalare di Q con tutte le KPunteggi di attenzione (grezzi)
3Scalare i punteggi per sqrt(d_k)Punteggi scalati
4Applicare softmaxPesi di attenzione (probabilità)
5Somma ponderata dei vettori VNuovo vettore di contesto
← Scorri a destra per vedere altro →

Elaborazione del prompt e calcolo strato per strato

Durante l'elaborazione del prompt (la codifica iniziale dell'input), l'intera sequenza di token viene elaborata simultaneamente. Gli embedding vengono trasformati in Q, K, V e la self-attention viene calcolata per ogni token. Questo viene ripetuto attraverso tutti gli strati (tipicamente 12, 24 o più) del Transformer. Ogni strato affina le rappresentazioni, consentendo al modello di catturare dipendenze complesse come relazioni a lungo raggio, sintassi e semantica. L'output dell'ultimo strato fornisce un embedding contestualizzato per ogni token.

Inferenza: aggiungere un nuovo token

Quando si genera testo (inferenza), il modello produce un token alla volta. Per il nuovo token, viene calcolato solo il suo embedding. Quindi, viene derivata la sua Query. Per calcolare l'attenzione, il modello ha bisogno delle Key e dei Value di tutti i token precedenti. Questi sono memorizzati in una struttura chiamata cache KV, che evita di ricalcolarli. La Query del nuovo token viene moltiplicata per tutte le Key memorizzate, viene applicata la softmax e viene calcolata la somma ponderata dei Value memorizzati. Questo produce un nuovo vettore di contesto per il nuovo token, che viene poi passato attraverso gli strati rimanenti e infine uno strato di classificazione (softmax sul vocabolario) per selezionare la parola successiva.

Questo approccio incrementale è efficiente perché i calcoli pesanti per i token precedenti vengono riutilizzati. La cache KV viene aggiornata con la Key e il Value del nuovo token dopo ogni passo di generazione.

Attenzione multi-testa e All-Reduce

Per catturare diversi tipi di relazioni (ad esempio, sintattiche, semantiche, referenziali) simultaneamente, i Transformer utilizzano l'attenzione multi-testa. Invece di eseguire una singola operazione di attenzione, il modello divide i vettori Q, K e V in più teste più piccole (comunemente 8, 12 o 16). Ogni testa impara a concentrarsi su diversi aspetti dell'input. Le teste lavorano in parallelo, ciascuna calcolando il proprio meccanismo di attenzione su un sottospazio dei vettori.

Dopo che ogni testa ha prodotto il suo output, gli output vengono concatenati insieme in un unico vettore della dimensione originale. Questo vettore concatenato viene poi moltiplicato per una matrice di proiezione di output (spesso chiamata Wo) per combinare le informazioni da tutte le teste. Questo passo finale è equivalente a un'operazione all-reduce: fonde i calcoli paralleli in una rappresentazione unificata. L'all-reduce assicura che il modello benefici dell'apprendimento distribuito attraverso le teste mantenendo al contempo un unico output coerente per lo strato successivo.

Confronto: Attenzione a testa singola vs. multi-testa
AspettoTesta singolaMulti-testa
Numero di calcoli di attenzione1H (numero di teste)
Relazioni catturateUn tipo per stratoPiù tipi simultaneamente
Dimensione outputd_vH * d_v (poi proiettato a d_model)
Costo computazionaleInferioreSuperiore ma parallelizzabile
EspressivitàLimitataRappresentazioni più ricche
← Scorri a destra per vedere altro →

Conclusione

I vettori Query, Key e Value sono fondamentali per il meccanismo di attenzione nei Transformer. Consentono al modello di pesare dinamicamente l'importanza di ogni token nel contesto, abilitando una potente comprensione e generazione del linguaggio. Il processo di derivazione di questi vettori, calcolo dell'attenzione e utilizzo della parallelizzazione multi-testa con all-reduce è ciò che rende i modelli di IA moderni così efficaci. Comprendere questi concetti è essenziale per chiunque lavori o studi i grandi modelli linguistici.

Lavoriamo insieme

Hai bisogno di maggiori informazioni, aiuto con il tuo progetto o di sviluppare un'idea?

Che si tratti di una domanda semplice, un dubbio rapido o una chat di 5 minuti, mandami un messaggio—non costa nulla e sono sempre pronto ad aiutare. Mi piace ascoltare per capire il problema, essere creativo nelle soluzioni e puntare a idee semplici, affidabili e non complicate da realizzare rapidamente.

Contattami

Cambia Argomento

Scegli un argomento specializzato da esplorare: