Che succede alle parole nell’AI?

Questo articolo fa parte di una serie di approfondimenti sull’AI — il link conduce a un indice aggiornato.


In GPT-4 ogni parola viene trasformata in un insieme di 16’384 numeri.

Strano perché 16’384 numeri sono davvero tanti. Perché complicarsi così la vita?

Quanto segue potrà parere un po’ noioso ma è di fondamentale importanza per iniziare a capire qualcosa di AI. Quindi armiamoci di un poco di pazienza.

Prendiamo per esempio la parola “gatto”: cinque lettere, ovvero cinque simboli che nel computer vengono codificati con 5 numeri (5 byte, ciascuno fatto di 8 bit). Una piccolezza in confronto a 16384! Ma non è finita qua perché c’è numero e numero. Nell’AI si usa quasi sempre una delle rappresentazioni più comuni, che richiede 32 bit (float32 in gergo). Con 32 bit si possono codificare 232 = 4’294’967’296 oggetti, più di 4 miliardi. Si stima che la lingua con il maggior numero di vocaboli, l’inglese, ne abbia circa mezzo milione, l’italiano 150’000, e così molte altre lingue. Insomma con un numero di 32 bit potremmo codificare comodamente tutte le parole di tutte le lingue. Perché allora ricorrere alla bellezza di 16’384 numeri, ciascuno capace a sua volta di rappresentare 232 oggetti?

Se identifichiamo un oggetto con una serie di numeri è utile riferirsi ad una rappresentazione geometrica. Per venire incontro alla nostra limitata immaginazione scendiamo da 16384 a due dimensioni. Ragionando di matrici e vettori avevamo raffigurato un vettore in uno spazio bidimensionale nel modo seguente:

Questa è l’immagine che ci consente di associare ad un insieme di due numeri un vettore nel piano. Quindi se la coppia di numeri (x, y) rappresenta la parola “gatto”, allora “gatto” sta in corrispondenza della punta del vettore v in figura. La parola “gatto” È quel punto di coordinate (x, y). In AI l’operazione di trasformare parole in insieme di numeri (solo due in questo esempio) si chiama embedding (incorporazione). Quindi i primi due passi nell’introduzione delle parole in un sistema di AI sono 1) la trasformazione in token e 2) l’embedding, con il risultato che ogni parola, espressa da uno o più token, risulta espressa da un mero insieme di numeri.

Fin qui continua a parere solo una questione di codifica, una come un’altra. Invece c’è del nuovo, qualcosa che interessa molto i linguisti, i linguisti computazionali per la precisione. C’è un campo della linguistica che studia la cosiddetta ipotesi distributiva, in base alla quale parole utilizzate in contesti simili tendono ad avere significati simili. Gira una sorta di slogan in proposito: dimmi con chi vai e ti dirò chi sei. L’ipotesi è prettamente linguistica ed è nata indipendentemente e prima che il mondo dell’AI fosse pronto a servirsene, diciamo da circa un lustro a questa parte. Si parla giustamente di ipotesi, in quanto controversa e contrapposta ad altre visioni, in particolare ad un’altra ipotesi, quella dell’embodied cognition, secondo la quale nella creazione dei significati sarebbe prevalenti matrici di origine sensoriale e motoria. Come spesso succede, ci sono poi coloro che ritengono in qualche misura valide ambedue le ipotesi e che occorra piuttosto capire come possano andare a braccetto.

Ma qui ci interessa sapere come l’ipotesi distributiva si realizzi nell’AI. Ebbene, il collegamento sta nel concetto di vicinanza. Se l’ipotesi distributiva enfatizza il ruolo della vicinanza fra parole nella costruzione del discorso come indicatore di affinità semantica, una volta immaginata la rappresentazione geometrica di esse, è immediato pensare alla vicinanza geometrica fra vettori. Il gatto è un animale domestico quindi apparirà in innumerevoli discorsi intorno al tema degli animali domestici. Lo stesso accadrà ad esempio per la parola “cane”. Probabile dunque che le due parole siano “vicine”, anche nella loro versione embedded:

Questa figura rappresenta lo stesso spazio bidimensionale della precedente. Vi abbiamo tuttavia disegnato un cerchio sul quale immaginiamo vadano a terminare i tanti vettori-parola che hanno in comune qualcosa, la domesticità degli animali in questo caso. Ecco, questo è uno spazio semantico, concetto informatico-matematico mutuato dall’ipotesi distributiva della linguistica: dove le parole sono tanto più “vicine” quanti più contesti condividono. I vettori parola si chiamano anche vettori semantici.

Sul cerchio troveremo altri animali domestici, magari gli esotici un po’ più lontani, in quanto presumibilmente condivideranno meno contesti con quelli più comuni, altri sebbene diversi da cani e gatti, più vicini in quanto più diffusi:

Stiamo appena muovendo i primi passi e già la complessità dei significati ci pone problemi: il canarino è un animale domestico molto comune, come il gatto e il cane, ma assai diverso da questi: il canarino è un uccello, gatto e cane sono mammiferi. È probabile che il canarino condivida un maggiore numero di contesti con altri uccelli rispetto al cane e al gatto, magari uccelli selvatici. Il nostro spazio bidimensionale rappresenta parole che condividono contesti inerenti la domesticità, per i contesti relativi alla natura di uccelli pare non esserci… spazio: abbiamo bisogno di un’altra dimensione!

Abbiamo così aggiunto un asse z, perpendicolare al piano (x,y). Lo spazio semantico ora ha tre dimensioni dove abbiamo trovato posto per un sottospazio dedicato agli uccelli (cerchio verde), perpendicolare a quello degli animali domestici (rosso). È bene ricordare che questa descrizione è imprecisa ma è utile per cercare di vedere il concetto. Sul “cerchio degli uccelli” probabilmente l’aquila sarà più lontana dal canarino rispetto al piccione, che in taluni contesti è domestico e in altri selvatico, mentre l’aquila apparirà molto più raramente se non in casi molto particolari, tipo la falconeria.

Forse può bastare una comprensione intuitiva dell’attributo di vicinanza/lontananza. Per coloro che non si accontentano possiamo dire che la vicinanza fra due parole, cioè due vettori semantici, è espressa dall’angolo fra i due vettori e si quantifica con il prodotto scalare fra di essi, che esprime la proiezione di un vettore sull’altro, o viceversa che è lo stesso. Questa vale zero per vettori perpendicolari fra loro (indipendenza) ed è invece prossima ad uno per vettori molto vicini (coincidenza) . Chi vuole saperne di più può andare a vedere il concetto di cosine similarity.

In questa versione tridimensionale abbiamo guadagnato non poca libertà. Potremmo ad esempio individuare altri cerchi per aprire altrettanti spazi semantici: canidi, felidi ecc. Ma non ci vuole molto ad immaginare che ci troveremmo presto nuovamente in difficoltà. Per esempio, dove potremmo trovare “spinterogeno”, termine tecnico ed anche ormai desueto 1? Comunque difficilmente potrà essere vicino a qualche animale, domestico o selvatico che sia. E siamo daccapo: ci vuole un’altra dimensione!

Inizia forse ad essere chiaro com’è che si sia arrivati a 16’384 dimensioni. Certo, pare sempre un’esagerazione ma nel mondo dell’AI tutto è esplosivo, specialmente da qualche anno a questa parte. Melanie Mitchell, ne L’intelligenza artificiale (2019), descriveva uno spazio semantico a 300 dimensioni. Ma quasi contemporaneamente il modello utilizzato da Google per affinare le ricerche, BERT, lavorava già con spazi fino a 1’024 dimensioni, GPT-3, attivo da maggio 2020 con 12’288 e GPT-4, lanciato in marzo 2023, con 16’384 dimensioni.

Possiamo farci un’idea di come siano distribuite le parole in tali iperspazi? Ci sono degli strumenti, che danno rappresentazioni come questa…

Demo di un sistema di visualizzazione dell’embedding di parole in spazi semantici ad alta dimensione. Si chiama “proiettore” perché in sostanza proietta i dati su tre dimensioni, così come si proietta una distribuzione tridimensionale su due sole dimensioni. In questo esempio i punti corrispondono a 10’000 di un vocabolario di 71’291 parole, incorporate (embedded) in uno spazio a 200 dimensioni. La demo è parte di TensorFlow, un software open source per lo studio e la sperimentazione di reti neurali profonde (deep learning).

Il gran numero di dimensioni consente di esprimere simultaneamente i molteplici legami che una parola può avere con parole facenti parte di contesti diversi. Quindi il timore che potevamo avere di veder morire i significati in brutali codifiche numeriche e fredde macchinazioni statistiche pare mutarsi in speranza quando ci pare di intuire che essi, i significati, per noi inesorabilmente associati a simboli verbali, possano esprimersi nelle miriadi di connessioni che gli spazi semantici ad alta dimensionalità possono ospitare. Senza dubbio suggestivo, ma mera intuizione.

Sono i linguisti computazionali che tentano di andare oltre l’intuizione, domandandosi quanto sia sottile la “conoscenza” che sistemi come GPT esprimono, quanto ad apparentemente irreprensibili descrizioni faccia riscontro una qualche “teoria del mondo”, quanto invece non si tratti altro che di pappagalli stocastici (stochastic parrots).

Fino a qualche anno fa, calandosi nei panni degli scettici, era relativamente facile ritenere tutto riconducibile a banali codifiche numeriche più qualche mera estrapolazione statistica o poco più. Ma ora, diciamo nel corso del passaggio di GPT dalla versione 3 a 4, è opinione abbastanza condivisa che si stia assistendo alla comparsa di una varietà di caratteristiche emergenti, cioè che non erano state né progettate né previste esplicitamente.

È estremamente interessante, ed anche un po’ esilarante, vedere come coloro che la macchina l’hanno fatta, si adoperino faticosamente a interpretarne i comportamenti, alcuni gradevoli altri meno. Vedremo degli esempi.


  1. Spinterogeno, approfittiamo per vedere cosa ne sa ChatGPT. Ho posto la domanda due volte in modi diversi per indurre qualche riflessione…
    Prima chat
    Andreas — Do you know what the italian word spinterogeno means?
    GPT-4 — The Italian word “spinterogeno” refers to a “distributor” in the context of automotive mechanics. It’s a component of an ignition system in older vehicles that directs high voltage from the ignition coil to the spark plugs in the correct firing order. This term is a bit technical and specific to automotive technology.
    Seconda chat (in modo che perda la memoria della precedente)
    Andreas — Spinterogeno
    GPT-4 — It looks like “Spinterogeno” might be a typo or a word not commonly recognized. Could you provide more context or clarify what you mean by “Spinterogeno”? This could help me assist you better.
    Andreas — Is an italian word regarding motors
    GPT-4
    The word “Spinterogeno” appears to be a variation or misspelling related to Italian terminology used in automotive contexts, possibly referring to a “spinterogeno” or something similar. However, it’s not a standard term in Italian or English automotive vocabulary. It might be a specific jargon or a colloquial term used in certain regions or contexts.
    If you’re referring to a part of an engine or a type of mechanism related to cars, the closest standard terms are “distributor” or “ignition system,” which are pivotal in managing the electrical sparking and timing for an engine’s operation. If “Spinterogeno” is meant to describe a component related to these systems, it could be a local or outdated term.
    If you have more specifics or another description of what this term relates to, I could provide more targeted information. ↩︎

4 pensieri riguardo “Che succede alle parole nell’AI?”

Vengono pubblicati solo commenti che recano nome e cognome

Scopri di più da Andreas Formiconi

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continua a leggere