intelligenza artificiale

Sotto il cofano dei sistemi GPT: ecco come fanno a capire cosa chiediamo

I sistemi come ChatGPT trattano il linguaggio come una vastissima rete di simboli correlati, senza nessuna semantica intrinseca. Nonostante questo approccio in apparenza privo di “comprensione” riescono a fornire risposte che mostrano un’intelligenza umana o, a tratti, sovra-umana. Togliamo il velo al loro funzionamento

Pubblicato il 26 Apr 2023

Danilo Benedetti

Docente di tecnologie avanzate presso LUMSA

chatgpt 4 stupido

Come riesce ChatGPT a produrre testi quasi indistinguibili da quelli scritti da una persona, su praticamente qualsiasi argomento? Capisce davvero quello che chiediamo? La sua capacità di risolvere problemi è un indizio di intelligenza o di creatività? Probabilmente molti di quelli che l’hanno usata si sono posti queste domande.

Per capire meglio, gettiamo  un occhio “sotto il cofano” dei sistemi GPT per mostrare il loro funzionamento.

L’AI generativa deve essere aperta o chiusa? Ecco perché non è una scelta facile

Qual è la prossima parola?

Il primo elemento da comprendere è il meccanismo con cui i sistemi tipo GPT creano il testo in uscita. GPT riceve in input una frase, nel caso di GPT-3 limitata a un massimo di 2048 token (un token è una sequenza di 4 caratteri, nel caso del sistema di OpenAI[2]). L’output è la parola più probabile che possa completare il testo d’ingresso, come mostrato nella figura.

Immagine che contiene tavolo Descrizione generata automaticamente

Figura 1 – Previsione della prossima parola

Il passo successivo è prendere la sequenza di uscita e riproporla come ingresso, ripetendo lo stesso processo – solo con una sequenza che stavolta contiene la nuova parola trovata – e lasciando che GPT generi ancora una nuova parola[3].

IngressoUscita
Tanto va la gattaTanto va la gatta al
Tanto va la gatta alTanto va la gatta al lardo
Tanto va la gatta al lardoTanto va la gatta al lardo che
Tanto va la gatta al lardo cheTanto va la gatta al lardo che ci

Il processo si ripete finché non viene generata una speciale sequenza di fine.

Però una rete neurale, per quanto sofisticata come GPT-3, non è altro che un software eseguito da dei computer e, come sa chiunque abbia conoscenze anche minime di informatica, i computer non capiscono le parole, ma al più trattano numeri. Come può quindi un sistema NLP lavorare con le parole? Il primo passo consiste in un processo detto di “tokenizzazione”, in cui ognuna delle parole di ingresso viene codificata in un numero univoco, usando un vocabolario di “token” appreso da GPT durante la fase di training.

Immagine che contiene tavolo Descrizione generata automaticamente

Figura 2 – Tokenizzazione

I modelli GPT usano la tokenizzazione BPE (Byte Pair Encoding), che si traduce in un vocabolario costituito da una combinazione di parole intere, elementi di parola e token speciali.

Una volta individuata la codifica di ciascuna parola presente nella frase, questo valore viene utilizzato per selezionare il corrispondente “token embedding”, ovvero un vettore univoco per ciascuna parola, che ne fornisce una rappresentazione in uno spazio multidimensionale. Se la codifica posizionale fosse limitata a due sole dimensioni, potremmo avere una situazione come quella di figura, che mostra come la funzione di token embedding associ ogni parola ad un punto in uno spazio multidimensionale.

Immagine che contiene diagramma Descrizione generata automaticamente

Figura 3 – Token embedding con un esempio di embedding bidimensionale

La dimensione del vocabolario e la dimensione delle righe della matrice di token embedding dipendono dalla versione specifica del modello GPT:

  • GPT-2:
    • Dimensione del vocabolario: ~ 50.000 token.
    • Dimensione del token embedding: può variare da 768 dimensioni a 1,548, a seconda della versione.
  • GPT-3:
    • Dimensione del vocabolario: ~ 50.000 token
    • Dimensione del token embedding: fino a 12.288 dimensioni.

Si noti che la codifica con il token emebedding dipende solo dalla parola: nella frase “il gatto mangia il topo” e nella frase “il topo sfugge al gatto”, la codifica della parola “gatto” è rappresentata sempre dallo stesso vettore di 12.288 dimensioni (per GPT-3), anche se la sua posizione nella parola è diversa. Per aggiungere l’informazione sulla posizione che la parola occupa nella frase, GPT usa la codifica posizionale. Le codifiche posizionali “modificano” la rappresentazione vettoriale della parola in funzione della sua posizione nella frase originale, sommandole ai valori del token embedding. GPT e altri modelli di Transformer utilizzano codifiche posizionali sinusoidali, calcolate usando funzioni seno e coseno con frequenze variabili. Per ogni indice di posizione (i) della parola nella frase e ogni dimensione dello spazio di codifica (j), i valori della codifica posizionale sono calcolati come segue:

dove PE(i, j) è il valore della codifica posizionale calcolato per la posizione i e la dimensione j, mentre d è la dimensione dello spazio di embedding, pari a 12.288 nel modello GPT-3 più avanzato.

L’ultimo passo consiste nel sommare i vettori di embedding (2048 x 12288 dimensioni) con la codifica posizionale, generando una nuova matrice 2048 x 12288 da usare nelle fasi successive.

Immagine che contiene tavolo Descrizione generata automaticamente

Figura 4 – Elaborazione dell’input in una rete transformer

Il meccanismo dell’attenzione

Nel 2017, un gruppo di studiosi che lavoravano su sistemi NLP propongono l’architettura Transformer, in un già classico articolo “Attention is All you Need”[4].

Il meccanismo dell’attenzione, introdotto nelle architetture Transformer delle quali costituisce un componente chiave, permette al modello di pesare l’importanza relativa delle parole all’interno di una sequenza durante il processo di elaborazione. In GPT, viene utilizzata la “self attention”, dove modello calcola i pesi di attenzione tra tutte le parole di una sequenza e la sequenza stessa.

Immagine che contiene diagramma Descrizione generata automaticamente

Figura 5 – L’attenzione nelle reti transformer

L’attenzione viene determinata utilizzando tre proiezioni lineari a partire dalla matrice di embedding ottenuta dalla fase precedente, le proiezioni sono chiamate: chiave (Key), valore (Value) e query (Query). I tre elementi N1, N2 e N3 della figura sono reti neurali i cui pesi sono stati determinati durante la fase di addestramento.

Il risultato è una ulteriore trasformazione lineare dei 2048 token d’ingresso in tre matrici distinte di dimensione 2048 x 128 (mentre il numero di righe è sempre pari al numero di token, la dimensione orizzontale può variare in funzione della ricchezza del modello e del numero di “teste” di attenzione che lavorano in parallelo, ad esempio GPT-3 usa 96 “teste”, e 12288 diviso 96 è proprio 128. Vedremo più avanti il perché di questa divisione).

  • Key (K): una rappresentazione delle parole in funzione delle quali il modello determina l’importanza relativa.
  • Query (Q): una rappresentazione delle parole su cui il modello si sta concentrando al momento.
  • Value (V): una rappresentazione delle parole che il modello utilizza per produrre l’output.

Dopo aver calcolato K, Q e V, il meccanismo di attenzione calcola i pesi della matrice di attenzione utilizzando la seguente formula:

Dove QKT è il prodotto scalare tra le matrici delle query e quella delle chiavi trasposta[5], e dkè la dimensione delle chiavi. Il termine serve a normalizzare il prodotto scalare e prevenire gradienti troppo grandi. Per chi non è familiare con l’algebra delle matrici, il risultato è una nuova matrice, ancora di dimensione pari a 2048 righe per 128 colonne.

La funzione softmax, applicata lungo l’asse delle chiavi, converte i prodotti scalari in una distribuzione di probabilità che somma a 1. In questo modo, il modello assegna un peso a ciascuna parola della sequenza in base alla sua importanza relativa.

Il meccanismo dell’attenzione è l’unico punto in cui le parole che compongono l’input – i famosi 2048 token di ingresso – interagiscono tra loro grazie al prodotto di matrici QKT. A livello intuitivo, in GPT e nelle reti Transformer il meccanismo di attenzione aiuta il modello a determinare l’importanza relativa delle parole all’interno di una sequenza di testo. K (chiave), Q (query) e V (valore) sono rappresentazioni diverse delle parole nel testo che il modello usa per calcolare i pesi di attenzione.

  • Query (Q): La query rappresenta il punto di vista corrente del modello all’interno della sequenza. Si può immaginare la query come un cursore che si sposta lungo la sequenza di testo, cercando di capire il contesto di ogni parola e il suo ruolo nella frase.
  • Chiave (K): La chiave rappresenta un’etichetta o un’identificazione di ogni parola nella sequenza, consentendo al modello di valutare quanto ogni parola sia rilevante rispetto alla query corrente. Confrontando la query con le chiavi, il modello determina quali parole sono importanti nel contesto attuale.
  • Valore (V): Il valore rappresenta il contenuto effettivo o le informazioni associate a ciascuna parola nella sequenza. Dopo aver calcolato i pesi di attenzione confrontando la query con le chiavi, il modello utilizza questi pesi per estrarre e combinare le informazioni dai valori in modo ponderato.

GPT-3 usa 96 “teste” di attenzione. La suddivisione in più elementi comporta diversi vantaggi: consente al modello di apprendere e catturare contemporaneamente diversi tipi di relazioni tra le parole in una sequenza, ad esempio relazioni grammaticali, semantiche, di assonanza eccetera, e questo aumenta la possibilità per il modello di individuare le sfumature del testo. L’uso di sistemi in parallelo inoltre comporta una più elevata velocità di elaborazione ed infine una maggiore robustezza, ad esempio rispetto a errori di battitura o grammaticali, perché se una delle teste è sviata dall’errore, le altre possono comunque produrre informazioni utili concentrandosi su aspetti diversi della frase.

Le 96 matrici di uscita di dimensione 2048 x 128, vengono composte semplicemente unendole, dando di nuovo luogo ad una matrice 2048 x 12288 (si ricordi quanto detto più sopra: 12288 / 96 = 128). Questa matrice viene passata attraverso fasi di normalizzazione e aggiustamenti e poi inviata allo strato di output.

Lo strato di output in un modello Transformer come GPT è responsabile della generazione dei token successivi in base alle rappresentazioni contestuali ottenute dai livelli precedenti. Lo strato di output è costituito dai seguenti componenti:

  • Elemento linearizzatore: le rappresentazioni contestuali dal livello finale del trasformatore attraversano uno strato di linearizzazione il cui compito è riportare la matrice alla dimensione del vocabolario (numero di token univoci) utilizzato nel modello.
  • Softmax: L’output dal livello lineare viene passato attraverso una funzione softmax, che converte i punteggi grezzi in una distribuzione di probabilità sul vocabolario. La funzione softmax assicura che la somma delle probabilità per tutti i token nel vocabolario sia uguale a 1.
  • L’output finale del modello è una distribuzione di probabilità sul vocabolario, che può essere utilizzata per selezionare il token più probabile. In un’attività di modellazione del linguaggio, ad esempio, il token con la probabilità più elevata viene scelto come parola successiva nella sequenza generata.
Immagine che contiene diagramma Descrizione generata automaticamente

Figura 6 – Output finale

Quindi, supponiamo di aver inserito una query di 10 parole. La matrice finale riporterà nell’undicesima linea, corrispondente appunto alla prima parola che segue la nostra richiesta, una distribuzione di probabilità rispetto a tutte le possibili parole seguenti presenti nel vocabolario. L’output sarà costituito dalla parola con probabilità maggiore.

Nel caso di GPT, che è un modello detto autoregressivo, il processo di generazione del token è sequenziale. Una volta generato il nuovo token, questo viene aggiunto alla sequenza di input e la sequenza aggiornata viene reinserita nel modello per generare il token successivo e così via. Questo processo continua fino a quando non viene soddisfatto un criterio di interruzione predefinito, ad esempio il raggiungimento di una lunghezza massima della sequenza o la generazione di un token di fine sequenza speciale. Non solo, ma durante una conversazione con ChatGPT, il nuovo input non è costituito solo dalla nostra domanda o richiesta, ma da tutto il dialogo precedente, fino al limite dei 2048 token di GPT-3. In questo modo ChatGPT da all’utente l’impressione di “seguire il discorso”.

Riassumendo tutti gli step visti fin qui:

  1. Tokenizzazione: converte il testo di input in token.
  2. Token embedding: mappa i token in uno spazio di 12.288 dimensioni (eseguito da una rete neurale addestrabile).
  3. Codifica posizionale: consente di aggiungere informazioni posizionali al token embedding.
  4. Meccanismo di attenzione: calcola pesi e valori di attenzione (eseguito da reti neurali addestrabili).
  5. Post-attenzione: una serie di passaggi fra cui concatenazione, proiezione, connessione residua, normalizzazione dei livelli, avanzamento in posizione proporzionale e ulteriore normalizzazione (tutti con pesi addestrabili, eccetto la concatenazione e la connessione residua).
  6. Ciclo: i passaggi 4 e 5 possono essere ripetuti più volte.
  7. Strato lineare: passa l’output del livello finale attraverso lo strato lineare (eseguito da una rete neurale addestrabile).
  8. Softmax: Applica softmax per ottenere la distribuzione di probabilità sul vocabolario.

I passaggi da 1 a 3 sono passaggi di pre-elaborazione e i passaggi 7 e 8 formano il livello di output. Tutti gli altri passaggi fanno parte dell’architettura GPT principale.

La descrizione dei singoli passi di un algoritmo quale GPT mostra chiaramente che questi sistemi trattano il linguaggio come una vastissima rete di simboli correlati, senza nessuna semantica intrinseca – il vocabolario menzionato nella fase iniziale si limita a tradurre una parola, anzi un token, in un numero univoco, non fornisce nessun “significato” della stessa.

Ciononostante, attraverso un processo matematico di apprendimento che, ricordiamo, non è altro che un metodo per cambiare attraverso un algoritmo il valore dei pesi dei vari elementi neurali che compongono tutta la catena di elaborazione, i sistemi come GPT sono in qualche modo in grado di codificare la semantica del linguaggio. Il processo di apprendimento nelle reti che producono la prossima parola più probabile, consiste nel presentare la parte iniziale di una frase, tratta da uno dei milioni di documenti disponibili in rete, e lasciare che la rete cerchi di indovinare il seguito. Sulla base della distanza fra quanto GPT ha ipotizzato e il vero seguito della frase, ovvero quello presente nel documento originale, i pesi dei vari elementi neurali vengono aggiustati in modo che in un successivo tentativo la differenza tra il seguito “vero” e quello generato dal sistema sia ridotta. Si tratta di un processo computazionalmente molto costoso, che va ripetuto milioni di volte su milioni di testi, fino ad arrivare ad un insieme di parametri (ricordo che quelli di GPT-3 sono 150 miliardi) che rende questo errore accettabile.

Ciononostante, questo approccio apparentemente così privo di “comprensione” permette comunque a Chat GPT fornire risposte che mostrano un’intelligenza umana o, su alcuni tipi di problemi, sovra-umana[6]. Nel paper appena citato (ancora in preprint), un gruppo di ricercatori di OpenAI sottopone una versione in fase di sviluppo di GPT-4 ad un insieme di problemi matematici, geometrici, di logica, di programmazione, di ragionamento sulla realtà esterna e così via, ottenendo risposte spesso sorprendenti (ma anche risposte sbagliate, ovviamente) che non è possibile considerare semplicemente come già presenti nei testi usati per l’addestramento. Non si tratterebbe insomma di una memoria sovrumana, in grado di richiamare risposte a migliaia di problemi già visti, ma di una genuina capacità di ragionamento.

Conclusioni

Chi ha usato Chat GPT (ovvero GPT 3.5), è sicuramente rimasto sorpreso dalla sua capacità linguistica; con l’uso di GPT-4 si nota una ulteriore crescita delle capacità linguistiche e di ragionamento del sistema. Visto il successo globale è certo che assisteremo a una corsa a produrre modelli sempre più efficienti e capaci, aggiungendo nuove funzionalità, come ad esempio la possibilità di dialogare usando il linguaggio parlato invece del testo scritto, oppure collegando questi sistemi ad oggetti esterni: motori di ricerca, agende personali, e-mail ecc. Il famoso concetto di assistente virtuale, che è stato incarnato in maniera così limitata e deludente da tool quali Siri, Alexa oppure Ehi Google, ha adesso la possibilità eseguire azioni più utili della semplice selezione di brani musicali o la compilazione della lista della spesa, diventando davvero un assistente tuttofare in grado di prenotare viaggi, ristoranti, riassumere le notizie del giorno, individuare le e-mail importanti e preparare una risposta.

Altre applicazioni specialistiche sono destinate ad apparire, ad esempio il supporto legale[7], consigli su diagnosi mediche, disbrigo di pratiche, rassegne stampa automatizzate e altre ancora che magari oggi non riusciamo ad immaginare. Cercare di anticipare gli impatti che questa tecnologia potrà avere è necessario per prepararci a limitarne i potenziali rischi.

Al di là dei possibili vantaggi per le persone, sistemi come questo richiederanno a molte professioni, fin qui considerate al riparo dai progressi dell’automazione, di ripensarsi e adattarsi. Un secondo aspetto da considerare è relativo al digital divide: ChatGPT, con mossa sorprendente, è stata resa ad accesso libero, mentre GPT-4 è fin da subito accessibile solo a pagamento. Viste le potenzialità del sistema c’è il rischio che chi potrà permettersi di pagare i costi di accesso a questa tecnologia avrà un enorme vantaggio competitivo rispetto a chi non può. Ultimo è importante tema è quello del controllo.

Per questioni di sicurezza e per evitare polemiche,  ChatGPT è dotato di filtri che gli impediscono di produrre risposte offensive o pericolose. GPT, ad esempio, si rifiuta di comporre odi al nazismo o di guidare l’utente nella produzione di esplosivi, ma presenta anche aspetti meno condivisibili, mostrando in qualche caso risposte che sembrano allineate a una precisa agenda politica. Trattandosi di un sistema che finirà per fornirci informazioni elaborate, ad esempio riassunti delle notizie, consigli sulle cose da fare eccetera, è bene iniziare a riflettere sul modo in cui i cittadini potranno essere garantiti circa l’assenza di polarizzazione in queste risposte.

Note

  1. Garfinkle A., “ChatGPT on track to surpass 100 million users faster than TikTok or Instagram: UBS”, Yahoo!Finance, Febbraio 2023
  2. Nel seguito si userà in maniera intercambiabile il termine token o parola
  3. Ad essere precisi, GPT genera un’intera sequenza di successive parole possibili, corredata da una misura della loro probabilità relativa, ma di norma si seleziona solo quella più probabile. Però sarebbe possibile per un sistema simile generare più risposte possibili.
  4. Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., … & Polosukhin, I. “Attention is all you need”. Advances in neural information processing systems, 30, 2017.
  5. La Trasposta di una matrice, ad esempio 3 x 2 (3 righe e 2 colonne), è costituita da una matrice 2 x 3 in cui le righe sono diventate colonne e viceversa:
  6. Bubeck, S., Chandrasekaran, V., Eldan, R., Gehrke, J., Horvitz, E., Kamar, E., Lee, P., Lee, Y.T., Li, Y., Lundberg, S. and Nori, H., 2023. Sparks of Artificial General Intelligence: Early experiments with GPT-4. arXiv preprint arXiv:2303.12712.
  7. Idea questa già avviata: il sito DoNotPay si annucia così: “Il primo avvocato robot al mondo. L’app DoNotPay è la casa del primo avvocato robot al mondo. Combatti le corporazioni, batti la burocrazia e fai causa a chiunque con la semplice pressione di un pulsante.”

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

EU Stories - La coesione innova l'Italia

Tutti
Iniziative
Analisi
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia

Articoli correlati

Articolo 1 di 2