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 gatto e vedrai cane, topo, leone. Passa sopra gioia e vedrai amore, paura, tristezza. Le categorie non esistono nei dati — esistono nella geometria.
  • Alcune direzioni hanno un senso. Il vettore che va da uomo a donna e piu o meno lo stesso che va da re a regina, o da padre a madre. E questa regolarita che fa funzionare l'aritmetica.
  • Le distanze sono relative, non assolute. Che gatto sia a distanza 0.32 da cane non significa nulla di per se. Cio che conta e che sia piu vicino a cane che a pane o rabbia.

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. buongiorno e buongirno hanno 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 infermiere appare piu spesso al femminile e medico al 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

Embeddings: lo spazio geometrico del significato · Step by Token