Lo “spazio dei concetti”, la chiave di volta dell'intelligenza artificiale moderna
Lo spazio dei concetti, un avanzamento alla base dell'Ai del 2013, ci permette di comprendere meglio come funzionano i llm, come si possono utilizzare nei motori di ricerca e per "chiacchierare" con i documenti.
Se vi chiedessi la distanza tra Milano e Roma, non avreste difficoltà a calcolarla, come non avreste difficoltà a indicarmi che Milano e Roma sono più distanti di Pisa e Livorno, almeno geograficamente. Esistono infatti diversi tipi di distanze. Se vi chiedessi la distanza tra la parola “melo” e la parola “pero” potreste indicarla come 2 (lettere), cioè la distanza sintattica. Ma se vi chiedessi la distanza semantica? Molti riconoscerebbero intuitivamente che le parole “pero” e “melo” sono più vicine, semanticamente, di “pero” e “cero” (candela grossa da chiesa), per esempio.
Ma ha senso parlare di distanza semantica?
Uno dei grossi passi avanti dell’intelligenza artificiale è stata la scoperta che non solo si potevano associare alle parole dei vettori (cioè dei punti nello spazio), ma si poteva fare questo in maniera tale che le posizioni relative di questi vettori codificassero il significato semantico. Rileggete la frase, nel resto dell’articolo la spacchetteremo. Ancora.
Iniziamo ripetendola con alcune precisazioni: a ogni parola è possibile associare una posizione nello spazio. Non si usa uno spazio normale, a tre dimensioni, ma uno spazio a centinaia di dimensioni. Nello spazio normale (per esempio sulla superficie terreste) avete bisogno di tre numeri per identificare un luogo (latitudine, longitudine, altezza sul livello del mare). In uno spazio a 500 dimensioni avrete bisogno di 500 numeri per indicare un punto, ma a parte la complessità nel gestire 500 numeri per ogni punto, per il resto è tutto uguale: esiste una distanza tra due punti; per ogni coppia di punti passa una e una sola retta; per ogni terna di punti passa un piano. E se uno fosse interessato, scoprirebbe che vale anche il teorema di Pitagora e la geometria che abbiamo imparato alle elementari. Non potremmo sentirci più a casa.
Associare casualmente a ogni parola una posizione nello spazio è banale, basterebbe prendere i punti a caso. Ma aggiungiamo una richiesta, vogliamo che parole dal significato simile siano vicine. E più sono simili, più dovrebbero essere vicine. Diciamo che due parole (mela, pera) sono simili se ci sono più frasi in cui possiamo sostituire una parola all’altra mantenendo il senso compiuto. Per esempio in questa lista “mela” e “pera” possono essere sostituite due volte su tre:
“Dopo cena ho mangiato una [...] come frutta” [mela, pera, banana, … ]
“Ho fatto una centrifuga di [...]” [mela, pera, carota, … ]
“Una [...] al giorno leva il medico di torno” [mela]
Senza entrare nei dettagli tecnici, per questo rimandiamo agli articoli del 2013 su word2vec (Efficient Estimation of Word Representations in Vector Space, Distributed Representations of Words and Phrases and their Compositionality), se applichiamo questo principio, e se il numero di dimensioni non è né troppo alto né troppo basso, e se la nostra lista di frasi è sufficientemente completa e rappresentativa della cultura, allora scopriremo che le relative posizioni hanno codificato le relazioni tra i concetti.
Cioè possiamo sommare o sottrarre le parole tra loro sommando e sottraendo i vettori (vedi figura 1 per un esempio di somma tra vettori su un piano), e il risultato tenderà a combaciare con la nostra comprensione intuitiva di quello che dovrebbe accadere.
Qualche esempio chiarirà meglio il concetto.
Abbiamo detto che date due parole possiamo sommarle, sottrarle, trovarne la distanza. E il risultato è un altro vettore che indica un nuovo punto dello spazio. E quindi si può cercare quali parole siano in quella zona dello spazio. Se io vi dicessi le parole, “re”, “uomo”, “donna”, voi non sapreste i loro vettori. Ma se vi chiedessi, a quale parola corrisponde “re-uomo+donna” ci potreste arrivare intuitivamente, o con il ragionamento. Che cosa è che è un re che non è un uomo (-uomo), ma è una donna(+donna)? Esatto, una regina. E questa relazione è generale, evidentemente l’algoritmo codifica il femminile di ogni concetto nella direzione (“-uomo+donna”): “studente-uomo+donna=studentessa”.
Queste relazioni sono vere anche per altri concetti. Per esempio Roma-Italia+Francia=Parigi. O si può anche dire che Roma sta all’Italia, come Parigi sta alla Francia, ovvero Roma-Italia=Parigi-Francia.
Questa possibilità di assegnare una posizione nello spazio che codifichi il significato semantico è stata scoperta nel 2013 attraverso un algoritmo chiamato word2vec (vedi i link agli articoli precedenti).
In realtà le relazioni scoperte da word2vec sono tutt’altro che limpide. La stessa parola vuole spesso indicare concetti diversi. A volte è un verbo, a volte un nome, a volte un altro nome, a volte addirittura una metafora.
Se parlo di Roma sto parlando della capitale d’Italia, la squadra di calcio, un’altra cittadina dallo stesso nome nel mondo, o il concetto di amore (“Roma è Amor” Ovidio), o di dovere (per esempio nella frase “scegliere tra Roma e Amor”).
Ciascuno di questi significati merita una posizione diversa nel nostro spazio, ma non potendogliela dare i punti si spostano, si tirano, si spingono, e perdono parte delle loro relazioni.
Nei moderni Large Language Models, invece si associa a ogni concetto una posizione. Non si usano poche centinaia di dimensioni. Ma per Gpt di OpenAi ben 1500. Questo permette una relazione, concetto-posizione, molto più precisa.
Nota che queste posizioni non sono solo teoriche. Dato un testo, si può chiedere a Gpt di dirci la posizione del vettore equivalente a quel testo. Quello che in temine tecnico si chiama il suo “embedding”. È così che ChatGpt comprende quello che scriviamo, associa al testo il suo vettore. E se necessario lo sintetizza cercando un testo più breve che lo rappresenti.
Quando chiesi a ChatGpt quali emoticon usare per dire “in bocca al lupo” mi ha risposto con uno solo, il quadrifoglio. Non ha tradotto le parole, bocca, lupo, ma il concetto: buona fortuna.
Questi vettori hanno moltissimi utilizzi. Uno di questi consiste nell’analizzare un testo molto vasto e associare a ogni paragrafo, sottocapitolo, capitolo o sezione un vettore. Memorizzare in un archivio questi vettori. Quando poi una persona compie una ricerca sul testo si codifica il vettore della domanda e si cerca quali vettori del testo sono in quella zona. Questo ci indicherà quali zone del testo riguardano quell’argomento. Insomma permette una ricerca semantica. Questa è molto diversa da una ricerca sintattica.
I sistemi di ricerca moderni usano questo sistema. Posso fare una ricerca sull’ “animale verde che vive negli stagni e salta” senza nominare mai la parola rana, ma i motori di ricerca moderni troverebbero lo stesso quello che mi interessa.
Se abbiamo analizzato un testo o una serie di testi, estraendone i vettori, possiamo poi fare delle domande, l’intelligenza artificiale leggerà le pagine dei testi relative alla domanda e ci risponderà.
Qui nascono tutte le applicazioni in cui si chiacchiera con un testo, una pagina internet, gli si fanno domande in italiano o inglese e ci risponde. O si parla, per esempio, con un autore. Insomma si trasforma in dialogo la conoscenza.
Lo spazio dei concetti è prima di tutto una rivoluzione filosofica che riprende l'intuizione di Leibniz che esistesse un calcolo universale che potesse rappresentare una matematica dei concetti. Non abbiamo ancora assorbito appieno le conseguenze di questa comprensione. Né le intelligenze artificiali sono al momento in grado di estrapolare le conseguenze dei vettori (concetti) presenti in un testo. Ma è la frontiera della ricerca, e quando arriverà lo racconteremo.