Introduzione
Questo articolo rappresenta un ulteriore passo nel percorso dedicato ai Large Language Models (LLM). Nel precedente appuntamento abbiamo visto come i modelli linguistici proiettino le parole in spazi vettoriali n-dimensionali, generando gli embedding che permettono ai computer di dare una forma numerica al linguaggio umano.
Qui concentriamo l'attenzione sull'architettura Transformer (TA), ideata in Google e descritta in Attention Is All You Need. Il Transformer si basa su meccanismi di attenzione per riconoscere le relazioni all'interno di una sequenza ed è stato progettato per compiti di tipo Seq2Seq come la traduzione automatica. La sostituzione degli strati ricorrenti con la self-attention consente una parallelizzazione massiva e ha reso questa architettura il riferimento per tutti i moderni LLM. In questa puntata analizziamo i requisiti che hanno guidato il suo design; nella prossima entreremo nei dettagli implementativi.
Requisiti fondamentali
Prima di addentrarci nei componenti del Transformer vale la pena esplicitare i requisiti chiave alla base della sua progettazione.
1. Elaborazione dell'input consapevole al contesto
Requisito. Il modello deve potersi concentrare sulle porzioni più significative della sequenza mentre elabora i token, andando oltre un approccio strettamente sequenziale.
Motivazione. La comprensione delle relazioni a lungo raggio è essenziale per attività come traduzione, sintesi e risposta a domande, in particolare quando le parole correlate sono distanti.
Soluzione. L'introduzione del meccanismo di auto-attenzione consente di pesare dinamicamente l'importanza relativa dei token, mantenendo il contesto anche su frasi lunghe. Nella frase "The dog sat on the mat because it was comfortable", ad esempio, serve comprendere che "it" si riferisce a "mat" e non a "dog".
2. Elaborazione parallela della sequenza di input
Requisito. Il modello deve analizzare le sequenze da prospettive multiple, calcolando in parallelo più set di punteggi di attenzione (multi-head attention).
Motivazione. Diversi head possono concentrarsi su aspetti differenti della sequenza, migliorando la comprensione complessiva.
Soluzione. L'attenzione multi-head esegue più operazioni di self-attention in parallelo. Ogni head può, ad esempio:
- seguire dipendenze a breve raggio (come "the" ↔ "dog");
- rilevare relazioni a lungo raggio (come "it" ↔ "mat");
- tenere traccia di relazioni causali o sintattiche.
Combinando queste viste il modello costruisce una lettura più ricca dell'input rispetto a un'unica attenzione monolitica.
3. Position encoding / Codifiche posizionali
Requisito. Elaborando i token in parallelo il Transformer perde il senso dell'ordine. Occorre quindi codificare la posizione dei token.
Motivazione. L'ordine è cruciale per comprendere il significato delle frasi e per distinguere ruoli sintattici differenti.
Soluzione. Le positional encoding aggiungono vettori numerici agli embedding dei token. L'uso di funzioni sinusoidali permette di rappresentare posizioni relative senza aumentare la complessità computazionale e consente al modello di riconoscere pattern legati alla posizione.
4. Capacità di identificare pattern complessi
Requisito. Dopo l'attenzione servono ulteriori trasformazioni per estrarre rappresentazioni più astratte.
Motivazione. Per cogliere relazioni intricate nei dati il modello deve trasformare le rappresentazioni generate dall'attenzione in feature più ricche.
Soluzione. Gli strati feed-forward, costituiti da due trasformazioni lineari con attivazione ReLU intermedia, vengono applicati indipendentemente a ciascun token. Lavorano in parallelo e arricchiscono ogni posizione con pattern non lineari, completando il lavoro della self-attention.
Meccanismo di self-attention
Per capire perché i requisiti precedenti convergono proprio nella self-attention vediamo più da vicino come funziona questo componente.
Embeddings e rappresentazione dei token
Ogni parola è rappresentata dal proprio embedding, cioè un vettore appreso durante l'addestramento che cattura relazioni semantiche e morfologiche.
Calcolo di Q, K e V
Per ciascun token vengono calcolati tre vettori attraverso matrici di pesi apprese:
- Query (Q): ciò che il token desidera recuperare dal contesto.
- Key (K): l'informazione che il token offre agli altri.
- Value (V): il contenuto che sarà effettivamente aggregato.
Punteggi di attenzione e normalizzazione
La rilevanza di un token rispetto a un altro è calcolata tramite il prodotto scalare tra il Query del primo e il Key del secondo. I punteggi ottenuti vengono normalizzati con una funzione Softmax per ottenere pesi che sommano a 1. La somma pesata dei vettori Value produce una rappresentazione arricchita di ciascun token. Il processo si ripete per ogni posizione nella sequenza.
Analogia calcistica
Immaginiamo una squadra di calcio:
- Il Query dell'attaccante corrisponde alla domanda "chi può aiutarmi a segnare?".
- Il Key del centrocampista evidenzia la sua capacità di creare occasioni.
- Il Value dell'ala rappresenta l'azione proposta, ad esempio "sono libero sulla fascia".
Il giocatore assegna attenzione maggiore ai compagni i cui Key rispondono meglio al proprio Query e combina i rispettivi Value per scegliere l'azione più efficace.
Esempio numerico
Per fissare le idee consideriamo una frase semplice e ipotizziamo embeddings minimali:
"The" -> [1, 0, 0] "dog" -> [0, 1, 0] "sat" -> [0, 0, 1] "on" -> [1, 1, 0] "the" -> [0, 1, 1] "mat" -> [1, 0, 1]
La parola "dog" può essere proiettata in tre vettori distinti, ad esempio:
- Q(dog) = [0.2, 0.8, 0.1]
- K(dog) = [0.5, 0.3, 0.7]
- V(dog) = [0.6, 0.9, 0.4]
Il prodotto scalare fra Q(dog) e i Key di ogni altra parola genera i punteggi di attenzione, che vengono normalizzati con Softmax. Supponendo i pesi risultanti [0.1, 0.5, 0.2, 0.1, 0.05, 0.05], la rappresentazione contestuale di "dog" diventa la somma pesata dei rispettivi Value. Il procedimento si ripete per tutti i token, permettendo al modello di comprendere ruoli e relazioni ("dog" soggetto, "mat" luogo dell'azione, ecc.).
Conclusioni
La Transformer Architecture è stata progettata per il Natural Language Processing e ha sostituito gli approcci ricorrenti grazie alla capacità di elaborare sequenze in parallelo. I servizi chiave che deve offrire includono:
- catturare le relazioni fra token tramite self-attention;
- processare viste multiple dell'input con la multi-head attention;
- preservare l'ordine con le codifiche posizionali;
- apprendere pattern complessi tramite strati feed-forward;
- stabilizzare e velocizzare l'addestramento con layer normalization e connessioni residuali;
- mantenere la struttura Encoder-Decoder per i compiti sequence-to-sequence;
- scalare su dataset di grandi dimensioni grazie al parallelismo;
- trasformare testo e predizioni tramite tokenization, embedding e layer di output.
Queste caratteristiche rendono il Transformer la spina dorsale dei moderni LLM: parallelizzazione, comprensione contestuale, scalabilità e possibilità di trasferire le conoscenze a compiti a valle sono i motivi per cui i modelli contemporanei adottano varianti di questa architettura.
Riferimenti
- [Vaswani et al., 2023] *Attention Is All You Need*, https://arxiv.org/pdf/1706.03762.pdf
- [Devlin et al., 2018] *BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding*, https://arxiv.org/abs/1810.04805
- [Google Gemini Team, 2023] *Gemini: A Family of Highly Capable Multimodal Models*, https://arxiv.org/abs/2312.11805
- [Radford et al., 2018] *Language Models are Unsupervised Multitask Learners*, https://t.ly/4RI02
- [Touvron et al., 2023] *LLaMA: Open and Efficient Foundation Language Models*, https://arxiv.org/abs/2302.13971
- [Belcic, Stryker, 2024] *What is Claude AI?*, https://t.ly/K5LV1