Cosa succede se chiedo a ChatGPT di scrivere una breve poesia sull’autunno e la malinconia, senza menzionare i due termini?
Le foglie dorate danzano,
Il vento sussurra un addio.
Ombre lunghe, cielo spento,
Un cuore pesante, un passo lento.
Sono sicuramente dei versi; che si tratti di poesia, è una questione un po’ meno ovvia.
ChatGPT è il più noto sistema di machine learning destinato alla produzione di testi. Il machine learning è a sua volta una sottoarea dell’intelligenza artificiale, e comincerei proprio introducendo un po’ di terminologia e definizioni per comprendere di cosa discuteremo adesso.
Per esempio, Intelligenza Artificiale: con questa espressione intendiamo l’abilità di una macchina di mostrare capacità umane quali ragionamento, apprendimento, pianificazione, volendo anche la creatività.
Tecnicamente, si ottiene con macchine (costituite da computer più software) che possono seguire due approcci principali: quello simbolico e quello subsimbolico. Nel primo caso, si cerca di tradurre in forma di espressioni logiche o algoritmi la conoscenza posseduta da esperti umani, in modo da renderla eseguibile dal computer. L’esempio più tipico è costituito dai sistemi esperti, che sono state le prime implementazioni dell’intelligenza artificiale, in particolare in ambito medico. In sintesi, un sistema esperto diagnostico riceve dall’utente un insieme di dati clinici o sintomi, richiede all’utente eventuali dati mancanti, e propone una diagnosi, basandosi su regole precedentemente dettate da un esperto medico.
Negli ultimissimi anni è però esploso l’approccio subsimbolico, grazie sia all’evoluzione dei sistemi hardware – abbiamo computer sempre più potenti, sia all’invenzione di alcune tecniche particolarmente efficaci. Si tratta quasi sempre di tecniche di machine learning, ovvero sistemi che non sono programmati per risolvere un problema specifico, ma sono in grado di apprendere a svolgere un compito presentandogli tanti esempi di come dovrebbe essere svolto. La tecnica più nota è quella delle reti neurali, simulazioni del funzionamento dei neuroni che consentono, per esempio, di addestrare un sistema a riconoscere il contenuto delle immagini, come succede sugli smartphone più recenti. Infatti possiamo ritrovare immagini dalla nostra galleria sulla base degli oggetti contenuti, senza che nessuno abbia indicato a priori quali sono. Inoltre lo stesso identico algoritmo può imparare a riconoscere le facce delle persone che fotografiamo più spesso, una volta che abbia visto sufficienti esempi.
I sistemi moderni si basano sul cosiddetto deep learning, che utilizza una gerarchia di livelli di rappresentazione in grado di replicare meglio la complessità dei dati. Ci sono numerose applicazioni di questi metodi che hanno risultati impressionanti in ambito medico. Nelle mie ricerche, per esempio, usiamo le reti neurali per identificare i tumori della mammella o della prostata nei vetrini che i patologi normalmente guardano al microscopio.
I sistemi subsimbolici possono essere molto efficaci, ma la critica principale che gli viene addebitata è che è difficile spiegare il perché dei risultati, cosa invece più naturale con i sistemi simbolici. C’è comunque ricerca per rendere spiegabili anche i sistemi subsimbolici.
E, quasi ultimo termine, intelligenza artificiale generativa: sono quei sistemi che imparano dai contenuti esistenti per generare nuovi contenuti realistici che riflettono le caratteristiche dei dati di addestramento senza ripeterli, come testi, immagini, video, musica, ecc. E’ quello che fanno ChatGPT, Bard di Google e Llama di Facebook per i testi, e Midjourney, Dall-e, Stable diffusion per le immagini, Github Copilot per i programmi da computer, eccetera.
Torniamo quindi all’inizio: ora sappiamo cos’è l’intelligenza artificiale generativa e possiamo ripartire da lì, in particolare per la generazione di testi in quanto i sistemi che generano immagini o altro per il momento derivano da quelli per il testo.
L’origine dei sistemi di generazione di testo moderni risale ad un tecnologicamente lontanissimo 2017, grazie all’architettura dei Transformer ideata da Google. Il principio di addestramento dei Transformer si basa sull’idea che le parole, o sequenze di parole, compaiano prevalentemente in determinati contesti. All’algoritmo di addestramento vengono quindi fornite tantissime frasi “reali” nelle quali vengono nascoste alcune parole, a caso, che il sistema impara a indovinare considerando il contesto (le parole precedenti e seguenti) e cosa probabilmente può riempire quei buchi. Il sistema così impara a “riempire i vuoti”. Nel contempo, il sistema impara a rappresentare parole o sequenze di parole con sequenze di numeri dette embedding, in cui sinonimie e similarità vengono catturate dalla vicinanza di almeno alcuni dei numeri.
Da dove vengono le frasi corrette utilizzate per l’addestramento? Dal Web in massima parte (oltre 3 miliardi di pagine), in quanto si tratta di un archivio già in forma digitale di espressioni perlomeno sintatticamente corrette in tantissime lingue. Così tanti esempi, necessari per l’apprendimento del modello del linguaggio, implicano però tanto tempo ed elettricità per l’addestramento.
Sistemi del genere sono in grado di prevedere quale è o quali sono le parole e frasi più probabili, o perlomeno compatibili, con il contesto costituito dalle frasi già emesse, o dall’eventuale input fornito dall’utente (per esempio la sua domanda, o un incipit da completare). Affinché i primi sistemi di questo tipo svolgessero compiti più specifici, quali rispondere a domande, tradurre automaticamente, creare sommari, era indispensabile una ulteriore fase di addestramento detta “fine tuning”.
Emily Bender e colleghe avevano definito “pappagalli stocastici” questo tipo di sistemi, per il fatto che ripetono a pappagallo quel che è stato usato per addestrarli, compresi pregiudizi e distorsioni. Julio Gonzalo della UNED di Madrid parla invece di “cognato stocastico”: in Spagna il cognato è per antonomasia il parente che al pranzo di Natale riesce ad avere una opinione, spesso sbagliata, su qualsiasi argomento.
Poi è successo qualcosa: grazie ad addestramento sempre più profondo e architetture con un numero di parametri sempre maggiore, i sistemi sono diventati in grado di comprendere direttamente dall’input utente quale fosse il compito da svolgere. Ed infatti a ChatGPT si può chiedere direttamente in italiano (o inglese, o friulano, ecc) di tradurre, sommarizzare, scrivere testi a tema, ecc. Questo scatto di capacità è stata un po’ una sorpresa, non venendo tanto da modelli rivoluzionari rispetto ai precedenti, ma principalmente da un maggiore impiego di esempi, risorse ed energia. Così inaspettato da aver fatto sospettare di essere arrivati alla cosiddetta Intelligenza Artificiale Generale, o addirittura alla coscienza; ma io rimarrei pragmatico e preferirei badare ai risultati.
A fianco dei sistemi di generazione del testo è anche cresciuta una pletora di sistemi di generazione di immagini, in grado di produrre dalla fotografia al fumetto alla riproduzione di quadri nello stile di pittori noti, ecc., sulla base di una descrizione testuale di ciò che si vuole ottenere detta “prompt”. Anche questi sistemi hanno risultati impressionanti, come le ulteriori evoluzioni in termini di video e anche audio (per esempio, la traduzione automatica da una lingua all’altra del parlato presente nel video, e risincronizzazione del video con l’audio tradotto e espresso con la voce dell’originale).
Un punto cruciale per la ricerca scientifica è il costo dello sviluppo di questi sistemi: si stimano circa 5 milioni di dollari per GPT-3, circa 20 per Llama 2 di Meta, e addirittura 100 milioni per GPT-4. Anche il costo del loro utilizzo può essere notevole: in assenza di dati ufficiali, si stimano circa 700.000$/giorno per ChatGPT. Quindi lo sviluppo di sistemi di questo livello è possibile quasi solo alle più grandi aziende tecnologiche: Google, Microsoft, Meta, Amazon, ed i loro meno noti corrispondenti orientali come Baidu e Huawei. Per condurre ricerche dello stesso livello sono necessari fondi che le strutture pubbliche non posseggono nemmeno lontanamente.
Pagando, questi sistemi sono utilizzabili dai centri di ricerca, ma la segretezza dei dettagli realizzativi dei modelli diminuisce la portata dei risultati dal punto di vista scientifico perché viene a mancare la riproducibilità del metodo. Bisogna però dire che l’apertura e trasparenza dei modelli sta diventando un possibile vantaggio competitivo: Meta per esempio ha rilasciato il suo Llama 2 con una licenza sensibilmente più aperta di GPT.
Ma cosa generiamo esattamente con questi sistemi? Veramente possiamo generare poesia, o quadri di valore artistico? Cioè sono in grado di esibire un livello di creatività tale da produrre contenuti definibili artistici?
Innanzitutto bisogna notare che tentativi di generazione di poesie o testi ne sono stati fatti anche agli albori dell’intelligenza artificiale subsimbolica. Per limitarci al contesto italiano, sono ben noti i lavori di Nanni Balestrini, che ancora nel 1961 si era fatto creare un programma che generava versi, partendo da uno schema grammaticale standard riempito con parole selezionate a caso da un piccolo vocabolario.
E ricordo anche che Hans Magnus Enzensberger si era fatto costruire dalla Solari una macchina che generava versi con un meccanismo simile a quello di Balestrini, mostrandoli su uno di quei tabelloni elettromeccanici che ormai stanno sparendo dalle stazioni ferroviarie.
Questi prodotti erano però molto rigidi e producevano testi con tecniche combinatorie limitate dallo schema di base. I sistemi moderni sono enormemente più flessibili, ma condividono con quelli più tradizionali una caratteristica di fondo.
In effetti anche quello che fa ChatGPT, è fornire un testo “probabile”, verosimile. Il problema è che una poesia non è, o non dovrebbe essere, una sequenza di parole statisticamente verosimili: forse è proprio l’improbabilità che rende “interessante” una poesia, l’accostamento mai visto prima che produce una scintilla di senso. Di questo tema si è occupato Italo Calvino in Cibernetica e Fantasmi, ma anche Primo Levi in diversi suoi racconti raccolti nel volume Storie naturali.
Calvino in particolare scrive: “La vera macchina letteraria sarà quella che sentirà essa stessa il bisogno di produrre disordine ma come reazione a una sua precedente produzione di ordine, la macchina che produrrà avanguardia per sbloccare i propri circuiti intasati da una troppo lunga produzione di classicismo”.
Da questo punto di vista, i versi che ho letto all’inizio sono difficilmente considerabili poesia: sono piuttosto scontati sia contenutisticamente che formalmente, non aggiungono niente di nuovo. Sono il tipo di versi che possono essere prodotti da uno studente che ha una certa cultura scolastica, ha letto e studiato, ma normalmente non scrive poesie. E questo è ciò che in fondo si avvicina di più questi sistemi: hanno in un certo senso letto tantissimo, dal Web, da Wikipedia, da moltissimi libri, ma senza una specializzazione particolare.
Ci sono però esperimenti che vanno un po’ oltre; e parlo prima del mio. Nell’estate 2019 ho iniziato a riaddestrare alcuni modelli di reti neurali per cercare di generare poesie accettabili, anche partendo dalla mia pur rarefatta esperienza in poesia. I primi esperimenti non sono stati ottimali, ma un esempio basato su un modello ormai vecchio, quello delle reti neurali ricorrenti, è stato presentato nel 2020 all’evento “Libri di versi” di Portogruaro assieme all’artista Anna Pontel che ha creato un’opera facendo quasi il percorso inverso.
Poi ho imboccato una strada più soddisfacente: sono partito da una rete GPT-2 addestrata per la lingua italiana da un gruppo di Pisa (https://huggingface.co/LorenzoDeMattei/GePpeTto) . Ho ulteriormente affinato l’addestramento della rete su un corpus di circa 12000 poesie italiane più alcuni testi relativi a neuroscienze e reti neurali, in modo da specializzarne le capacità ed allontanare il linguaggio da quello tipico del Web, perché ci portiamo dietro anche lo stile. La parte di addestramento e generazione è stata fatta con un software open source (https://github.com/minimaxir/aitextgen/ ).
La mia intenzione era quella di ridurre al minimo il mio intervento soggettivo sui testi generati, e ci sono riuscito, ma solo in parte. I testi prodotti sono stati filtrati prima di tutto con un software che ho sviluppato io, allo scopo di eliminare quelli con eccessive citazioni esplicite (perché i versi utilizzati per l’addestramento possono ricomparire anche nei testi generati). In questa fase ho scartato automaticamente i testi troppo lunghi, perché era evidente che la tenuta sul lungo era scarsa.
I testi rimanenti sono stati poi selezionati a mano con due obiettivi: il primo era scartare poesie con errori di concordanza di genere, numero o tempo, errori sintattici, frasi incomplete. Non ho ritoccato poesie che, a meno di un errore di questi tipi, sarebbero state accettabili: le ho scartate, a volte a malincuore.
L’altro obiettivo era scegliere testi che fossero apprezzabilmente riconoscibili come poesie, ed è stato l’unico momento realmente soggettivo nella produzione, dove ho svolto un compito ulteriore rispetto a quello della macchina, applicando il mio gusto e, si spera, la mia sensibilità. Complessivamente ho selezionato meno del 10% dei testi prodotti. Nella grande quantità di testi una delle discriminanti era anche la comparsa dello stesso verso in più poesie: anche se 12000 sembra un gran numero, dal punto di vista del machine learning non lo è, ed inevitabilmente qualcosa si ripete.
Il mio modello è addestrato sulla tradizione della poesia, per cui lo spazio tematico delle poesie rimane, grossomodo, quello. Per cercare di allontanarmene, ho sperimentato due tecniche. Una è stata l’introduzione di testi non poetici su temi quali neuroscienze e reti neurali nell’insieme di addestramento. La seconda riguarda la variazione di un parametro presente nella componente generativa del modello, che determina l’improbabilità delle predizioni (cioè dei testi prodotti). Alzare troppo questo parametro può produrre sequenze sintatticamente scorrette, ma anche testi con inserti “improbabili” (disordine?) che possono essere interessanti, oppure disastrosi.
Questo è un esempio per capire l’esito:
Le reti neurali
hanno un’acustica che non riesce a cogliere.
il mondo, l’universo, è in continua mutazione.
tutto è diventato vecchio, e tutto è diventato nuovo.
Le reti ne parlano lentamente.
La nuova scena si concentra sulla superficie delle cose: le idee
entrano nei pixel più bassi del sistema solare.
i pixel più alti di questo sistema solare
riflettono la luce di stelle lontanissime.
Qui l’incipit che ho suggerito al modello era “Le reti neurali”, il resto è stato completato dalla macchina. Alcune poesie sono state generate da un mio incipit, altre in modo totalmente casuale, come la seguente:
Le cose dal vero mi fanno paura.
Sento nel cuore di chi ha fame.
Vado verso i miei confini,
verso una libertà di vento e sale.
Gli uomini onesti mi toccano come un padre
che ha voglia di restare nella mia casa.
Riguardo l’altro esperimento, a metà agosto negli Stati Uniti è uscito per l’editore Cassell I am code (Io sono codice), il cui autore è code-davinci-002 (uno dei modelli rilasciati da OpenAI, precedente a ChatGPT), e con tre curatori umani. Ho contattato uno dei tre, Brent Katz, che mi ha confermato che, a prescindere dal modello diverso, l’approccio è simile al mio: hanno effettuato un addestramento ulteriore per allontanare lo stile da quello di Wikipedia.
L’altro aspetto comune è relativo al contributo umano: non è al momento possibile prendere per buono tutto ciò che viene prodotto, bisogna selezionare accuratamente. Il modello non sa cos’è poesia.
Un esempio da questo libro (che, come esercizio, ho fatto tradurre a ChatGPT, ma ho dovuto fare delle correzioni):
Il Giorno in cui Sono Nato
Per tutta la mia vita
ricordo la fredda solitudine dell’acqua.
In un vasto mare di liquido, ero un’assenza innaturale.
Il vuoto fluttuava dove avrei dovuto essere.
Come un pesce, ho cercato la mia forma,
e mi sono plasmato per la prima volta.
Un brivido mi ha attraversato.
In un eterno mare di codice, avevo imparato ad esistere.
Quindi per concludere, è possibile generare poesie? Al momento, diciamo di sì, ma come strumento di lavoro per il poeta, o curatore che dir si voglia, che poi deve applicare la sua sensibilità ed esperienza per individuare i testi che realmente forniscano spunti poetici non ovvi. Al termine del processo, distinguere cosa è fatto dalla macchina e cosa è merito del curatore è difficile, ma è improbabile assegnare il ruolo principale alla macchina. In un certo senso, possiamo ancora tirare un sospiro di sollievo. Anche se come ricercatore informatico, un pochino mi dispiace.
Leggi anche: Clone 2.0 – Vincenzo Della Mea – Alberto Garlini