I Large Language Models (LLM) come GPT, BERT e le loro varianti come DistilBERT rappresentano una delle più straordinarie innovazioni dell'intelligenza artificiale moderna. Alla base di questi sistemi troviamo un'architettura chiamata "Transformer", introdotta nel celebre paper "Attention Is All You Need" pubblicato da Google nel 2017, che ha rivoluzionato l'elaborazione del linguaggio naturale. Ma come funzionano esattamente questi modelli dal punto di vista matematico?
Questo articolo esplora la matematica e i meccanismi che permettono ai Transformers di comprendere e generare linguaggio umano, partendo dai concetti fondamentali fino ad arrivare ai dettagli più complessi dell'architettura.
Modelli Base vs Modelli Distillati: Un Confronto Iniziale
Prima di addentrarci nei dettagli matematici, è utile comprendere la differenza tra modelli "base" e modelli "distillati" come DistilBERT:
BERT base: Utilizza 12 layer di transformer, 12 attention head e una dimensione nascosta specifica
DistilBERT: Utilizza solo 6 layer di transformer (circa la metà ), mantenendo 12 attention head ma con dimensioni complessive ridotte del 40% circa
Questa differenza strutturale ha importanti implicazioni pratiche:
Il modello distillato è circa il 60% più veloce
Preserva circa il 96% delle prestazioni
Offre un ottimo compromesso tra accuratezza e velocità di esecuzione
Il Vocabolario dei Modelli
Un aspetto fondamentale dei LLM è la dimensione del loro vocabolario. Ad esempio, DistilBERT utilizza un vocabolario di circa 32.000 token. Questo vocabolario rappresenta l'insieme di tutte le unità linguistiche che il modello può riconoscere e processare.
Il vocabolario include non solo parole intere, ma anche parti di parole, punteggiatura e token speciali come [CLS] (Classification Start) e [SEP] (Separator) che aiutano il modello a comprendere la struttura del testo. La dimensione del vocabolario influisce direttamente sulla capacità del modello di comprendere sfumature linguistiche e rappresenta un importante compromesso tra efficienza computazionale e ricchezza espressiva.
Dal Testo ai Numeri: Il Layer di Embedding
Il primo passo fondamentale è convertire il testo in una rappresentazione numerica che il computer possa elaborare.
Embedding dei Token in Uno Spazio Vettoriale Continuo
Quando un testo viene fornito al modello, viene innanzitutto suddiviso in unità linguistiche significative, chiamate token. Questi token vengono poi passati attraverso un layer di embedding, che ha il compito di convertirli in vettori numerici.
Il layer di embedding contiene una matrice che, durante l’addestramento del modello (attraverso la backpropagation), ha imparato a rappresentare ogni token con un vettore. Questa rappresentazione è densa e significativa: parole con significati simili tendono ad avere vettori simili.
Non è necessario addestrare il layer di embedding da zero ogni volta: nei modelli pre-addestrati (come BERT o GPT), questo layer ha già appreso rappresentazioni linguistiche ricche e generalizzabili. Quando si adatta il modello a un compito specifico, si può riutilizzare direttamente questo layer, con o senza fine-tuning — un approccio noto come transfer learning, simile a quanto avviene nella computer vision.
Una caratteristica cruciale dei Transformer è che processano le parole in parallelo, non sequenzialmente. Questo approccio è efficiente ma introduce una sfida: il modello perde naturalmente la nozione dell'ordine delle parole.
Immaginate di leggere una frase con le parole disposte in ordine casuale: il significato andrebbe completamente perso. Lo stesso avviene per un modello che processa le parole simultaneamente senza informazioni sulla loro posizione nella sequenza.
La Matematica del Positional Encoding
Per risolvere questo problema, viene aggiunto un "positional encoding" a ciascun vettore di embedding:
Vengono utilizzate funzioni seno e coseno per generare valori unici per ogni posizione
Per dimensioni pari del vettore di input (0, 2, 4, ...) si usa la funzione seno: \(\text{PE}_{(pos_{i},2i)} = \sin\left(\frac{\text{pos}}{100^{2i/d}}\right)\)
Per indici dispari (1, 3, 5, ...) si usa la funzione coseno: \(\text{PE}_{(pos_{i},2i+1)}= \text{cos}(\frac{\text{pos}}{100\frac{2i}{d}})\)
Dove:
pos è la posizione del token nella sequenza
i è l'indice della dimensione nel vettore di embedding
d è la dimensione totale del vettore di embedding
Queste formule generano un "fingerprint" posizionale unico per ogni token, che viene poi aggiunto al vettore di embedding originale tramite una somma element-wise.
La scelta di queste funzioni trigonometriche non è casuale:
Continuità e Fluidità : Le onde sinusoidali creano cambiamenti graduali e continui nei valori
Pattern Ripetitivi: Permettono al modello di gestire sequenze di varia lunghezza
Unicità : La combinazione di molte frequenze diverse garantisce che ogni posizione abbia un "fingerprint" unico
Espressività : Le alte dimensionalità catturano sfumature sottili dell'ordine delle parole
Robustezza: Sono meno inclini a interferenze quando si affrontano frasi lunghe o complesse
Il risultato finale è che ogni parola mantiene il suo significato originale dall'embedding, ma acquisisce anche una "firma" matematica che indica esattamente dove si trova nella frase.
Visualizzazione del Positional Encoding
Un modo intuitivo per comprendere il positional encoding è visualizzarlo come un grafico di onde sinusoidali di differenti frequenze. Queste onde formano pattern unici per ogni posizione, creando "firme" posizionali distinguibili.
Se potessimo visualizzare il positional encoding, vedremmo onde sinusoidali di diverse frequenze, dove ogni posizione nella sequenza genera un pattern unico. Zoomando all'esterno, si vedrebbe chiaramente come le onde di seno e coseno creino una "impronta digitale" matematica per ogni posizione nel testo.
Questa visualizzazione mostra come le funzioni seno e coseno di diverse frequenze si combinino per creare rappresentazioni uniche per ogni posizione nella sequenza.
Token Speciali: CLS e SEP
Nei modelli come BERT, vengono utilizzati token speciali che svolgono funzioni importanti:
[CLS] (Classification): posto all'inizio della sequenza, questo token viene utilizzato per classificare l'intera frase in task come l'analisi del sentimento o la classificazione del testo.
`[SEP]` (Separator): utilizzato per separare segmenti di testo, come domande e risposte o per marcare la fine di una sequenza.
Questi token speciali aiutano il modello a comprendere la struttura del testo e fungono da punti di riferimento nei task di comprensione del linguaggio. Quando il modello elabora una frase come "The bank of the river was flooded", questi token vengono aggiunti automaticamente per fornire informazioni strutturali aggiuntive.
Il Cuore del Transformer: Il Meccanismo di Attention
Dopo aver tokenizzato il testo e applicato il positional encoding, i dati sono pronti per essere processati dal primo transformer layer. Qui entra in gioco il meccanismo di attention, l'innovazione cruciale che ha reso possibili i moderni LLM.
Query, Key e Value: I Tre Pilastri dell'Attention
Per ogni token nel testo, vengono generate tre diverse rappresentazioni attraverso la moltiplicazione del vettore di embedding per tre matrici diverse:
Query (Q): Rappresenta "ciò che stiamo cercando" - interroga gli altri token per trovare informazioni rilevanti
Key (K): Descrive "ciò che ogni token offre" - indica quanto un token è rilevante rispetto a una certa query
Value (V): Contiene l'informazione effettiva che verrà utilizzata nell'output
Queste matrici (Wq, Wk, Wv) sono parametri del modello che vengono ottimizzati durante l'addestramento.
In termini semplici:
Q chiede
K risponde "ho qualcosa di utile?"
V fornisce il contenuto da utilizzare se la risposta è affermativa
Il Calcolo dell'Attention Step-by-Step
Vediamo come funziona il meccanismo in dettaglio, seguendo l'esempio di una frase come "The bank of the river was flooded":
Calcolo dei Key Vectors:
Per ogni token, il suo embedding viene moltiplicato per la Key Matrix
Questo arricchisce gli embedding con informazioni aggiuntive
I Key Vector catturano caratteristiche significative che saranno utili per calcolare l'attention score, sono rappresentazioni apprese del contenuto dei token
Calcolo dei Query Vectors:
Similmente, ogni embedding viene moltiplicato per la Query Matrix
La matrice Query apprende parametri che aiutano a proiettare gli embedding in uno spazio in cui è possibile valutare la rilevanza dei diversi elementi
Calcolo degli Attention Score Grezzi:
Per una parola specifica (ad esempio "river"), il suo Query Vector viene moltiplicato per ogni Key Vector tramite prodotto scalare
Un alto prodotto scalare indica alta correlazione semantica tra le parole
Questo prodotto aiuta il modello a capire meglio il significato contestuale di ogni parola
Applicazione del Softmax:
Gli attention score grezzi vengono trasformati in una distribuzione di probabilità usando la funzione softmax
Questo normalizza i punteggi in modo che la loro somma sia 1
Elimina anche i valori negativi
Normalizzazione:
I punteggi grezzi ottenuti dal prodotto tra Query e Key vengono divisi per √d_k (dove d_k è la dimensione delle Key) per evitare che valori troppo grandi producano gradienti instabili nel softmax
Questo aiuta a stabilizzare il training
Applicazione dei Value Vectors:
Come per Query e Key, ogni embedding viene moltiplicato per la Value Matrix per ottenere i Value Vectors
Questi vettori contengono le informazioni dettagliate di ciascun token
I Value Vectors vengono moltiplicati per i pesi softmax corrispondenti
Calcolo della Rappresentazione Finale Context-Aware:
I Value Vectors pesati vengono sommati per produrre una rappresentazione arricchita di contesto per ogni token
Questa rappresentazione cattura non solo il significato isolato del token, ma anche le sue relazioni con gli altri token nella sequenza
Un Esempio Concreto di Calcolo dell'Attention
Per illustrare concretamente come funziona l'attention, consideriamo un esempio semplificato con vettori di dimensione 4.
Se abbiamo i seguenti vettori di embedding per le parole di una frase come "I am a robot":
E_I = [1.0, 0.5, 0.3, 0.0]
E_am = [0.9, 0.8, 0.2, 1.0]
E_a = [0.7, 0.1, 0.4, 0.0]
E_robot = [1.1, 0.4, 0.3, 1.0]
Il calcolo dell'attention coinvolgerà :
La trasformazione di questi vettori attraverso le matrici Q, K, V (ad esempio, una matrice 3x3)
Il calcolo dei prodotti scalari tra il Query vector di una parola e i Key vector di tutte le altre
L'applicazione del softmax per ottenere i pesi di attenzione
La somma pesata dei Value vector per ottenere la rappresentazione finale
Prendiamo ad esempio la parola "river" in una frase. Dopo aver calcolato il suo Query vector e confrontato con i Key vector di tutte le altre parole, potremmo ottenere dei pesi di attenzione come:
Questi pesi vengono poi utilizzati per calcolare una somma pesata dei Value vector, producendo una rappresentazione contestuale ricca per "river" che incorpora informazioni rilevanti dalle altre parole della frase, specialmente "bank" e se stessa.
L'Esempio Pratico: Disambiguazione di Parole Polisemiche
Prendiamo la parola "bank" in inglese, che può riferirsi sia a un'istituzione finanziaria che alla sponda di un fiume. Il meccanismo di attention permette al modello di disambiguare correttamente:
In "I deposited money in the bank", l'attention si concentrerà su "deposited" e "money"
In "The bank of the river was flooded", l'attention si concentrerà su "river" e "flooded"
Questa capacità di determinare il contesto è ciò che rende i transformer così potenti nella comprensione del linguaggio naturale.
Multi-Head Attention: Moltiplicare le Prospettive
Nella pratica, i modelli come BERT non utilizzano una singola "testa" di attention, ma più teste in parallelo (tipicamente 12). Questo approccio multi-head è fondamentale per la qualità dei risultati.
Ogni attention head è come un'area di focus diversa, simile a come nelle reti convoluzionali alcuni layer guardano alle forme, altri ai bordi, e così via. Ad esempio (usando distilBert con 6 transformer layer):
Heads 1-12 (Livello 1): Si concentrano sulla sintassi e grammatica di base
Heads 13-24 (Livello 2): Affrontano le relazioni lessicali
Heads 25-36 (Livello 3): Migliorano la comprensione contestuale
Heads 37-48 (Livello 4): Elaborano ruoli semantici e dipendenze
Heads 49-60 (Livello 5): Gestiscono il flusso del discorso e della narrazione
Heads 61-72 (Livello 6): Effettuano analisi specializzata e integrazione
Come Funziona in Pratica il Masked Language Learning
Ad esempio, data una frase come "Il gatto dorme sul divano", il modello potrebbe riceverla come "Il [MASK] dorme sul divano" durante l'addestramento. Il suo compito sarebbe quello di prevedere che la parola mascherata è "gatto", utilizzando le informazioni contestuali delle altre parole.
Questo processo di mascheramento e predizione consente al modello di sviluppare una comprensione profonda delle relazioni semantiche e sintattiche tra le parole, imparando a:
Riconoscere le associazioni probabilistiche tra parole
Comprendere le strutture grammaticali
Dedurre informazioni mancanti dal contesto
Costruire rappresentazioni vettoriali ricche di significato
Questa tecnica è fondamentale per far sì che il modello sviluppi una comprensione profonda delle relazioni linguistiche e semantiche.
Conclusione: La Bellezza Matematica dei LLM
I Large Language Models e i Transformer rappresentano una straordinaria fusione di linguistica, matematica e informatica. La loro architettura, basata su principi matematici eleganti come i prodotti scalari, le funzioni trigonometriche e le trasformazioni lineari, permette loro di catturare le sottigliezze del linguaggio umano in modo sorprendentemente accurato.
Questa comprensione matematica non solo aiuta a demistificare il funzionamento di questi potenti strumenti, ma fornisce anche la base per futuri miglioramenti e innovazioni nel campo dell'intelligenza artificiale per il linguaggio naturale.
La prossima volta che interagite con un assistente AI o utilizzate un servizio di traduzione automatica, potrete apprezzare la complessa danza matematica che si cela dietro ogni risposta generata.
Per concludere, ricordando il famoso cartone "Paperino nel mondo della Matemagica", potremmo dire che, proprio come Paperino scopriva l'affascinante universo della matematica nascosto dietro oggetti quotidiani, anche noi oggi possiamo ammirare il "Matemagico" mondo dei Transformer che si cela dietro una semplice conversazione con un'intelligenza artificiale. E come diceva la voce narrante: "La matematica è la lingua con cui è scritto il libro della natura" — o in questo caso, il codice con cui è scritta l'intelligenza artificiale!
Ricordate il povero maggiordomo di Lara Croft? Quello che tutti noi abbiamo tristemente rinchiuso nella cella frigorifera? È ora di liberarlo... digitalmente parlando! Il Maggiordomo che Cambiò Tutto (Senza Volerlo) Chi ha giocato ai primi Tomb Raider ricorda sicuramente il maggiordomo di casa Croft: quell'adorabile (e fastidioso) NPC che ci seguiva ovunque nella villa, spesso […]
🚂 Tornando da Catania, con la mente piena di AI e possibilità Appena rientrata da due eventi intensi e stimolanti a Catania — Green Mind AI e Catan.IA — mi porto a casa molto più di una valigia piena: mi porto idee, connessioni, contaminazioni. Mi porto a casa l’energia delle realtà come Aitho e Datapizza, […]