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
E un'equazione aritmetica, come 5 − 2 + 4 = 7. Solo che riguarda parole.
E funziona. Non perche qualcuno abbia programmato "re" e "regina" per assomigliarsi. Ma perche ogni parola e stata trasformata in una lista di numeri — un vettore — e l'algebra del significato diventa algebra e basta.
E l'idea piu controintuitiva degli LLM, e anche la piu 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 e "vicino" ne "lontano" dal token 5235. Sono solo numerati.
Perche un modello possa calcolare con le parole, serve una rappresentazione piu ricca. La soluzione: associare a ogni token un vettore di circa 768, 1024 o 4096 numeri reali. E cio 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.
Perche 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 piu economico per memorizzare questa equivalenza, quando hai miliardi di parametri e miliardi di frasi, e 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 e una caricatura a due dimensioni — i veri embeddings ne hanno centinaia. Ma le proprieta 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
uomoadonnae piu o meno lo stesso che va darearegina, o dapadreamadre. E questa regolarita che fa funzionare l'aritmetica. - Le distanze sono relative, non assolute. Che
gattosia a distanza 0.32 dacanenon significa nulla di per se. Cio che conta e che sia piu vicino acaneche apaneorabbia.
L'illusione 2D
Nei veri modelli, un embedding ha tipicamente tra 768 e 4096 dimensioni. Perche cosi tante?
Perche 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 "prossimita" tirano in direzioni diverse — e in 2D entrano in conflitto.
A 768 dimensioni, ogni faccetta del significato puo avere la propria direzione. La parola gatto puo 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 e 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 similarita coseno
Quando diciamo che due parole sono "vicine" nello spazio degli embeddings, come lo misuriamo concretamente? Non con la distanza euclidea classica. Con la similarita coseno.
L'idea: si guarda l'angolo tra i due vettori, non la loro lunghezza. Due vettori che puntano nella stessa direzione hanno similarita 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||)
Perche questa misura e non un'altra? Perche la norma di un embedding (la sua lunghezza) varia per ragioni che non hanno a che fare con il significato — frequenza della parola, profondita del layer. La direzione, invece, codifica il significato. La similarita coseno isola cio che conta.
E anche la misura che alimenta tutta la ricerca semantica moderna: i database vettoriali (Pinecone, pgvector, Chroma…) indicizzano milioni di vettori e trovano i piu vicini a una query in un attimo. Ne riparleremo al capitolo 10 (RAG).
Conseguenze
Questa rappresentazione geometrica ha effetti sorprendenti:
- Gli errori ortografici sono robusti.
buongiornoebuongirnohanno embeddings molto vicini, quindi il modello li "capisce" quasi allo stesso modo — mentre a livello di token sono totalmente diversi. - I bias si incastrano. Se nel corpus di addestramento
infermiereappare piu spesso al femminile emedicoal maschile, l'aritmetica degli embeddings lo riflettera. medico − uomo + donna puo dare infermiera. Molto lavoro va nella correzione di questi bias — ne riparleremo al capitolo 8. - Tutto diventa calcolabile. Una volta che il significato e diventato un vettore, possiamo sommare, proiettare, misurare angoli. E esattamente cio che fa il meccanismo successivo.
Il seguito
La tua parola e 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 perche **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 e.
Aggiornato il