08.04.2024 Roberto Battiston

Un anno con ChatGPT, com'è cambiata la nostra vita (ed è solo l'inizio...)

L’interazione con ChatGPT e le sue sorelle (le chat si sa sono delle chiacchere digitali) è diventata quotidianità e abitudine

«Today, I learned, the comma, this is, a, comma (,) a period, with, a tail, Miss Kinnian, says its, importent, because, it makes writing, better, she said, somebody, could lose, a lot, of money, if a comma, isnt in, the right, place, I got, some money, that I, saved from, my job, and what, the foundation, pays me, but not, much and, I dont, see how, a comma, keeps, you from, losing it, But, she says, everybody, uses commas, so Ill, use them, too».

Daniel Keyes, Fiori per Algernon, 1959

Mi sveglio e mi faccio un caffè. Sento la radio. Sullo sfondo un rumore come di respiro in affanno, discreto: non umano, ma nemmeno animale. Ah sì, sono le piccole ventole del portatile nel mio studio, che da giorni sta calcolando per realizzare una complessa analisi dati eseguendo un codice di 2500 linee di Python, leggendo e scrivendo centinaia di megabyte di file su server da qualche parte nel cloud. Sono mesi che va avanti così. Il mio lavoro di fisico si basa sull’analisi di dati sperimentali, raccolti da computer e accumulati su sistemi magnetici in grandi, enormi quantità. Per produrre questi dati occorre talvolta realizzare esperimenti grandi come un condominio, come quelli del CERN, o satelliti che volano nello spazio profondo per anni o addirittura per decenni. Ma poi occorre uno sforzo altrettanto intenso e lungo per analizzare la mole di dati prodotti da questi sofisticati strumenti. Anni di lavoro, team di ricerca internazionali, riunioni, discussioni e confronti senza fine.

Li ho visti tutti gli strumenti digitali nella mia vita: ho iniziato con le schede bucherellate dei mainframe dell’IBM 360 a Pisa. Per consumare un secondo macchina servivano sei mesi di tempo umano, scrivere programmi con le schede di cartoncino giallo oggi sembra il parossismo dell’inefficienza. Ho scritto la mia tesi con i primi terminali elettronici al CERN: per farla ho usato quintali di carta, istogrammi fatti con le X da stampanti che mitragliavano come veloci macchine da scrivere.

Lenzuolate di carta per cercare e correggere gli errori nel codice. Mi domando ancora se i risultati che ho ottenuto valessero il pezzo di foresta che è stato necessario abbattere per produrli. Con l’avvento dei personal computer, ho iniziato con il leggendario portatile Osborne, schermo da 5 pollici monocromatico, teoricamente portatile, ma pesantissimo, in una custodia che sembrava quella di una macchina da cucire. La carta stampata è un po’ diminuita, ma lentamente, perché la generazione di persone abituate a scrivere su carta, a leggere su carta, a fotocopiare su carta, faticava a leggere le stesse cose su uno schermo con colori noiosamente artificiali. Negli anni seguenti centinaia, poi migliaia e poi milioni di persone hanno lavorato per scrivere miliardi e miliardi di linee di codice: si calcola che ogni anno, solo di Python, si scrivano 150 miliardi di righe di codice.

Una parte strabordante del lavoro di codifica ha sempre riguardato la ricerca degli errori, che per qualche motivo si chiamano bugs, bachi, che hanno fatto venire mal di fegato a generazioni di programmatori. Perché i calcolatori sono affidabilmente stupidi, iterativamente banali: eseguono quello che gli chiedi e si fermano non appena manca una virgola al posto giusto. Vi ricordate il memorabile passaggio di “Fiori per Algernon”, quando Charlie Gordon, un quasi analfabeta che per un po’ diventa genio, scrive nel suo diario: «Oggi, io, ho, imparato, virgola, la, virgola»? Si tratta di un livello di autocoscienza che i supercomputer non hanno mai raggiunto.

«C’è un errore nel codice che hai scritto, gli ultimi sette grafici li devi calcolare considerando la media geometrica del 10% dei dati che ti ho fornito: le distribuzioni di probabilità altrimenti vengono sbagliate», dico mentre spalmo la marmellata sul pane, dopo aver dato una rapida occhiata alle 30 pagine di risultati che mi sono apparse sullo schermo. «Grazie per avermelo segnalato, hai ragione, occorre correggere la matrice di covarianza, preparo subito il codice», dice il messaggio che spunta dopo pochi istanti. Il codice arriva immediatamente, basta modificare la linea 2342 e le ventole riprendono il loro ron ron per fare fronte all’oceano di conti che il computer deve rifare, instancabile, nelle prossime ore.

Mentre pedalo per andare al lavoro con il laptop che sonnecchia nello zaino, penso a quello che è successo in questi ultimi 15 mesi, da quando, il 30 novembre 2022, OpenAI ha reso disponibile prima la versione 3.5 e poi la versione 4.0 di ChatGPT. Quello che sto facendo oggi, un anno fa era semplicemente impossibile. In questi mesi, la velocità di programmazione, in settori che vanno dalla ricerca all’industria, è aumentata anche più di dieci volte. Ma non solo la velocità, anche la qualità e l’affidabilità dei software prodotti: commenti presenti in abbondanza nel codice garantiscono una buona lettura a chiunque lo legga, il potenziale dei linguaggi di programmazione più diffusi è sfruttato in modo professionale grazie agli innumerevoli esempi presenti nel web.

Ma da dove viene tutto questo ben di dio? Cosa c’entra l’intelligenza? A chi, a cosa si deve questo salto di qualità, almeno in alcuni settori del coding, quelli più diffusi? Nonostante conosca la risposta, per certi versi lapalissiana, mi trovo spesso a ripeterla a me stesso tanto è sorprendente nella sua semplicità. Per ribadire come questa non sia “intelligenza artificiale” bensì “intelligenza naturale”, quella dei milioni di programmatori umani che hanno messo a disposizione sul web miliardi di linee di codice, esempi, manuali, correzioni. E di come ChatGPT, un algoritmo basato su un Large Language Model, allo stesso tempo potente e stupido come solo un “rastrello” digitale può esserlo, renda disponibili con una interfaccia in linguaggio naturale una frazione significativa del pensiero umano, in questo come in altri campi. Con effetti che ci stanno interrogando sulla ridefinizione di concetti come affidabilità, creatività, produttività, valore, velocità, veridicità, responsabilità, solo per citarne alcuni.

Nell’anno che è passato si è detto tutto e il contrario di tutto sull’IA generativa. Ma per un numero crescente di persone l’interazione con ChatGPT e le sue sorelle (le chat si sa sono delle chiacchere digitali) è diventata quotidianità e abitudine.

Ed è così che ha luogo il cambiamento di comportamenti che modifica la società giorno dopo giorno. L’umanità evolve verso un futuro in cui la presenza dell’IA sarà pervasiva e che potrà essere descritto solo passandoci attraverso.

L’esperienza di codificare in Python con ChatGPT è molto istruttiva e non banale. Tutto sta nell’avere chiaro in mente cosa si vuole ottenere e di saperlo esprimere con altrettanta chiarezza, nel maggior dettaglio possibile, nelle domande che si pongono alla chat. L’intensità dell’interazione con la macchina cresce rapidamente con l’aumentare delle linee di codice: perché mano a mano che si entra nei dettagli del programma cresce anche la necessità di riuscire ad avere la profondità e sinteticità di visione necessaria per continuare a guidare il processo di programmazione verso il risultato finale. È un corpo a corpo, come il cowboy che cavalca un cavallo nel rodeo: la bestia ha una forza straordinaria e ti può portare lontano o buttare rovinosamente a terra. Fortunatamente si tratta di bit, e non ci si fa poi tanto male, ma l’interazione è intensa. Ci sono giornate in cui ti poni un obiettivo che in condizioni normali ti avrebbe richiesto mesi di programmazione: quando sei fresco e riposato, il processo si sviluppa rapidamente e dopo poco raggiungi i primi risultati, le prime centinaia di linee di codice che funzionano senza problemi. Con il trascorrere del tempo possono venire a galla aspetti secondari, oppure, e questo è il caso peggiore, emerge il fatto che ti sei dimenticato di specificare un aspetto che poi risulta essere importante. È un po’ come giocare a scacchi, una mossa sbagliata si può rivelare fatale venti mosse dopo. Se ti trovi con la struttura del programma già impostata e vuoi aggiungere qualcosa di importante, allora rischi di entrare in un tunnel senza uscita.

In questi casi emergono i limiti dell’algoritmo generativo, i suoi punti ciechi, la sua assoluta incapacità di guardare avanti, ed è quindi molto meglio buttare tutto e ricominciare da capo, con le idee più chiare. Tanto non conta il numero di righe scritte, la macchina può gestire un buffer lungo come un libro, bensì è importante la struttura logica da capo a fondo e quella solo l’essere umano può suggerirla, in quanto è l’unico a essere dotato dell’intenzionalità necessaria per definire gli obiettivi. Quando poi la stanchezza mentale ti assale, te ne accorgi subito perché sembra di guidare come un ubriaco: è preferibile smettere altrimenti fai la fine di quei ricchissimi idioti a cui hanno messo in mano una Ferrari e che vanno a sbattere alla prima curva nel parcheggio.

Intenzionalità, scopi, obiettivi. È questo il confine, il vero limite attuale dell’intelligenza artificiale. Fino a che alla macchina verrà richiesto di rispondere a test di Turing sempre più sofisticati oppure alle domande di utenti a cui essa può rispondere mescolando risposte già date da altri utenti umani e disponibili nel gigantesco database del world wide web, i risultati possono sorprendere o divertire, ma ricadono nella categoria di quello che io chiamo “rastrelli digitali”. L’algoritmo si può allenare per imitare bene ciò che già esiste: le reti neurali e le varie forme di deep learning fanno sostanzialmente questo. Quando sono istruite ad autoimparare lo fanno spesso più liberamente ed efficacemente di quando vengono supervisionate dall’uomo. È comprensibile, si tratta della differenza tra una cascata e una condotta forzata, l’acqua scende comunque a valle ma la variabilità della cascata è molto più ricca di possibili configurazioni.

Quando però leggo che il Pentagono si aspetta a breve scontri tra IA contrapposte, come ha dichiarato all’inizio di febbraio 2024 Jude Sunderbruch del DC3 (Department of Defense Cyber Crime Center), oppure assisto allo sviluppo sulle armi intelligenti “autonome”, mi viene da pensare che stiamo entrando in una terra di nessuno, in cui l’allenamento dell’algoritmo di intelligenza artificiale viene farcito di obiettivi umani per farlo agire contro un altro analogo algoritmo allenato con obiettivi umani contrapposti. Nulla di nuovo, direte, nella millenaria storia dell’arte della guerra: certo, purché questo non porti alla perdita della capacità di tracciare chi è responsabile per l’allenamento dell’intenzionalità.

Talvolta sembra che il successo dell’intelligenza artificiale si basi sull’“illusione” indotta dagli algoritmi generativi, sulla “segretezza” delle strategie militari o sulla “rinuncia” al controllo sulle armi intelligenti autonome. Che sia basato quindi non sull’avvento di tecnologie straordinarie in grado di imitare in profondità le capacità intellettive della nostra specie. Ma che sia piuttosto collegabile a limiti legati alla scarsa determinazione con cui, troppo spesso, la nostra specie difende un ruolo di attore centrale sulla scena, preferendo invece trasferire questo ruolo ad algoritmi il cui controllo diventa talmente difficile o inefficiente da farli sembrare autonomi anche se sono rimasti, come all’inizio, completamente privi di quel tipo di autonomia che associamo all’agire umano.

«Questo grafico rappresenta tre anni di osservazioni da satellite, 60.000 orbite corrispondenti a più di 320 terabyte di dati filtrati e analizzati in modo comparativo: questa analisi avrebbe preso un paio d’anni in condizioni normali, me la sono cavata con un paio di mesi» penso mentre faccio scorrere un grafico colorato lungo come un lenzuolo: da questi grafici estrarrò le prossime domande per approfondire la ricerca che sto svolgendo, preparandomi alla successiva intensa sessione di programmazione avanzata con ChatGPT. Sono proprio curioso di vedere cosa ne verrà fuori.