Capitolo 03 · Embeddings · 10 min
Lo spazio del significato
Parole in uno spazio geometrico. Re − Uomo + Donna = Regina, e altri miracoli vettoriali.
Un'equazione che non dovrebbe funzionare
Considera questa operazione:
re − uomo + donna ≈ regina
È un'equazione aritmetica, come 5 − 2 + 4 = 7. Solo che riguarda parole.
E funziona. Non perché qualcuno abbia programmato "re" e "regina" per assomigliarsi. Ma perché ogni parola è stata trasformata in una lista di numeri — un vettore — e l'algebra del significato diventa algebra e basta.
È l'idea più controintuitiva degli LLM, e anche la più potente.
Dal token alla posizione
Nel capitolo precedente abbiamo visto che il testo diventa una sequenza di token IDs — interi come 5234 o 91. Ma un intero nudo non ha struttura. Il token 5234 non è "vicino" né "lontano" dal token 5235. Sono solo numerati.
Perché un modello possa calcolare con le parole, serve una rappresentazione più ricca. La soluzione: associare a ogni token un vettore da diverse centinaia a diverse migliaia di numeri reali: 768 per un modello piccolo, 4096 per un modello intermedio, 12.288 per GPT-3, 16.384 per Llama 3 405B. È ciò che chiamiamo un embedding.
All'inizio dell'addestramento, questi vettori sono casuali. Poco a poco, a forza di predire milioni di parole successive, il modello impara a disporli in modo che parole dal significato vicino abbiano vettori vicini.
Nessuno ha scritto questa regola. Emerge dal compito di predizione.
Perché funziona
Pensa a cosa significa predire bene la parola dopo "Il re ha parlato a sua…". Le buone risposte sono figlia, moglie, madre, regina — non motore o algoritmo. Un modello che predice bene queste continuazioni deve sapere che queste parole sono sostituibili in quel contesto.
Il modo più economico per memorizzare questa equivalenza, quando hai miliardi di parametri e miliardi di frasi, è raggruppare "figlia", "moglie", "madre", "regina" nella stessa regione dello spazio vettoriale. Il gradiente spinge in questa direzione a ogni iterazione, senza che nessun umano debba etichettare nulla.
Gli embeddings non sono progettati. Sono la traccia geometrica del compito di predizione.
Manipola lo spazio
Lo spazio qui sotto è una caricatura a due dimensioni — i veri embeddings ne hanno centinaia. Ma le proprietà essenziali ci sono: cluster semantici, vicinato, aritmetica vettoriale.
Ogni punto è una parola proiettata in uno spazio di significato. I vicini condividono un tema — non un'ortografia. La freccia mostra l'aritmetica vettoriale che rende possibile Re − Uomo + Donna = Regina.
Tre cose da notare:
- I cluster appaiono senza che li abbiamo nominati. Passa sopra
gattoe vedraicane,topo,leone. Passa sopragioiae vedraiamore,paura,tristezza. Le categorie non esistono nei dati — esistono nella geometria. - Alcune direzioni hanno un senso. Il vettore che va da
uomoadonnaè più o meno lo stesso che va darearegina, o dapadreamadre. È questa regolarità che fa funzionare l'aritmetica. Una precisazione onesta: questa proprietà è stata scoperta sugli embeddings statici di tipo word2vec (2013), dove una parola = un vettore fisso. Nella tabella di embeddings di un LLM esiste ancora, ma molto più rumorosa — l'intuizione resta giusta, l'uguaglianza è approssimativa. - Le distanze sono relative, non assolute. Che
gattosia a distanza 0.32 dacanenon significa nulla di per sé. Ciò che conta è che sia più vicino acaneche apaneorabbia.
L'illusione 2D
Nei veri modelli, un embedding ha tra 768 e 16.384 dimensioni a seconda della taglia del modello. Perché così tante?
Perché in 2D siamo costretti a fare compromessi. gatto deve essere vicino a cane (animali domestici), a topo (mammiferi), a tigre (felini), a uccello (animale). Tutte queste "prossimità" tirano in direzioni diverse — e in 2D entrano in conflitto.
A 768 dimensioni, ogni faccetta del significato può avere la propria direzione. La parola gatto può essere vicina a cane lungo l'asse "animale domestico", vicina a tigre lungo l'asse "felino", vicina a topo lungo l'asse "piccolo mammifero". Lo spazio è abbastanza grande per far coesistere tutte queste relazioni senza schiacciarle.
Gli umani pensano che non si possano visualizzare 768 dimensioni. Gli embeddings non chiedono tanto: le usano solo per ordinare le categorie senza collisioni.
Misurare la vicinanza: la similarità coseno
Quando diciamo che due parole sono "vicine" nello spazio degli embeddings, come lo misuriamo concretamente? Non con la distanza euclidea classica. Con la similarità coseno.
L'idea: si guarda l'angolo tra i due vettori, non la loro lunghezza. Due vettori che puntano nella stessa direzione hanno similarità coseno pari a 1, qualunque sia la loro ampiezza. Due vettori ortogonali danno 0. Due vettori opposti, −1.
cos(u, v) = (u · v) / (||u|| × ||v||)
Perché questa misura e non un'altra? Perché la norma di un embedding (la sua lunghezza) varia per ragioni che non hanno a che fare con il significato — frequenza della parola, profondità del layer. La direzione, invece, codifica il significato. La similarità coseno isola ciò che conta.
È anche la misura che alimenta tutta la ricerca semantica moderna: i database vettoriali (Pinecone, pgvector, Chroma…) indicizzano milioni di vettori e trovano i più vicini a una query in un attimo. Ne riparleremo al capitolo 10 (RAG).
Conseguenze
Questa rappresentazione geometrica ha effetti sorprendenti:
- Gli errori ortografici spesso passano. Scrivi
buongirnoinvece dibuongiornoe il modello capisce lo stesso. Attenzione alla spiegazione, è controintuitiva: non è perché i due embeddings di partenza si assomigliano. Il tokenizer tagliabuongirnoin pezzi che non hanno nulla a che vedere con quelli dibuongiorno, e i loro vettori d'ingresso non sono correlati. È attraversando gli strati, guardando il contesto attorno, che il modello avvicina progressivamente le due rappresentazioni. La robustezza non viene dalla tabella degli embeddings: viene ricostruita strada facendo. - I bias si incastrano. Se nel corpus di addestramento
infermiereappare più spesso al femminile emedicoal maschile, l'aritmetica degli embeddings lo rifletterà. medico − uomo + donna può dare infermiera. Molto lavoro va nella correzione di questi bias — ne riparleremo al capitolo 8. - Tutto diventa calcolabile. Una volta che il significato è diventato un vettore, possiamo sommare, proiettare, misurare angoli. È esattamente ciò che fa il meccanismo successivo.
Il seguito
La tua parola è diventata un vettore. Anche quella accanto. E quella prima. Come fa il modello, a partire da questa sequenza di vettori, a decidere che in "Il medico ha rimandato l'infermiera a casa sua perché **lei**…", il pronome lei si riferisce all'infermiera e non al medico?
Risposta nel prossimo capitolo: l'attenzione, il meccanismo che permette a ogni token di guardare tutti gli altri prima di decidere chi è.
Aggiornato il