La matematica non è solo una disciplina scientifica, ma anche un modo di guardare in modo diverso quello che è accanto a noi… compresa la matematica stessa, se serve. Maurizio Codogno, meglio noto in rete come .mau., racconta come lui vede la matematica, con la scusa di non doverla insegnare né crearne di nuova. Il tema di oggi è l’intelligenza artificiale come vista da Alan Turing.
In questi ultimi anni l’intelligenza artificiale è tornata di moda. Ok, restano le mani con sei dita quando si chiede loro di fare un disegno, ma non si può pretendere troppo: come disse Terry Pratchett in uno dei libri del Discworld, Nanny Ogg sapeva come cominciare a scrivere “banana”, ma non sapeva quando fermarsi… Limitandoci alla produzione di testi, i chatbot sono sempre più bravi a rispondere alle nostre domande – non necessariamente risposte corrette, ma tanto l’esattezza delle risposte degli esseri umani è calata anch’essa. Certo, se quando contattiamo l’assistenza per un servizio ci tocca interagire con un sistema automatico queste nostre convinzioni subiscono un duro colpo, ma la speranza è l’ultima a morire e non possiamo andare contro le magnifiche sorti e progressive.
Ma esattamente cos’è l’intelligenza artificiale? Boh. Non vi tedio con tutte le storie del lontano passato, dagli automi ai golem, e parto da colui che è quasi unanimemente definito il padre – o il nonno, se volete – dell’IA: Alan Turing. Il suo saggio del 1950 “Computing Machinery and Intelligence” è il punto di partenza filosofico a cui implicitamente si rifarà nel 1956 il manifesto della conferenza di Dartmouth di John McCarthy, Marvin Minsky, Nathaniel Rochester e Claude Shannon e l’inizio della ricerca vera e propria nel campo, con tutti gli alti e bassi.
Quale è stata l’intuizione di Turing per definire cos’è l’intelligenza artificiale? Semplice: ha evitato di definirla! Se leggete l’articolo originale – trovate qui una traduzione in italiano – vedrete come l’Imitation Game nasce come test per cercare di capire se l’interlocutore è un uomo oppure una donna, e poi viene trasportato nella distinzione tra uomo e macchina. In pratica Turing fa un duck test: se qualcosa assomiglia a un’anatra, nuota come un’anatra e starnazza come un’anatra, allora probabilmente è un’anatra. Tutto questo può sembrare a prima vista un bieco trucco, ma non lo è affatto. Pensateci un attimo: non sappiamo nemmeno definire cos’è l’intelligenza umana, come possiamo sperare di avere una definizione per l’intelligenza artificiale? Non per nulla continuiamo a usare il test di Turing, anche se informalmente, per valutare le capacità di un chatbot.
Vi invito a leggere le domande e risposte proposte da Turing nel suo articolo, perché mostrano come il grande matematico abbia posto una grande cura nel definirle. Ricordate che nel test non c’è solamente una macchina che risponde, ma c’è anche un essere umano che deve farsi riconoscere. Ecco qua le domande:
Domanda: Mi scriva, per favore, un sonetto sul tema Forth Bridge.
Risposta: Non faccia affidamento su di me per questo. Non ho mai saputo scrivere poesie.
Domanda: Sommi 34957 a 70764.
Risposta: (pausa di circa trenta secondi e poi la risposta): 105721.
Domanda: Gioca a scacchi?
Risposta: Si.
Domanda: Ho il Re in e1 e nessun altro pezzo. Lei ha solo il Re in c3 ed una Torre in h8. Tocca a lei. Che mossa gioca?
Risposta (dopo una pausa di quindici secondi ): Torre in h1, matto.
Lasciamo da parte il problema di scacchi e guardiamo le altre due domande. La prima ha un suo interesse perché in questi 75 anni si è ribaltato tutto. Nel 1950 probabilmente l’essere umano sarebbe stato in grado di scrivere una poesia per quanto pessima, la macchina no e così se ne sarebbe potuta uscire con una risposta così; oggi dovremmo addestrare apposta il chatbot per non snocciolare una risposta magari noiosa ma tecnicamente corretta. Lo stesso valeva già allora per la seconda domanda: la macchina avrebbe aspettato apposta per non far capire che aveva trovato subito la risposta.
Il punto di questo test è che Turing non vuole definire un’intelligenza umanocentrica. Lui lo dice esplicitamente, tra l’altro; la parte prettamente umana è stata eliminata. Per dirla con le sue parole, «Non desideriamo penalizzare la macchina per la sua incapacità di brillare in un concorso di bellezza, né penalizzare un uomo perché perde una corsa contro un aeroplano.». Quello che però serve alla macchina per avere una qualche speranza di superare il test di Turing è la possibilità di fuggire dagli schemi. Sistemi come AlphaZero e simili non hanno nulla del genere: seguono una funzione di massimizzazione, possono trovare strade che noi non abbiamo mai pensato ma sempre secondo le quelle regole. Gli LLM hanno invece il vantaggio di avere una componente aleatoria che fa sì che la stessa domanda con le stesse condizioni di partenza darà risposte sempre leggermente diverse.
Come si può ottenere questo? Di base viene usata l’euristica di Good-Turing. Irving John Good è stato uno dei principali collaboratori di Turing, e nel 1953 scrisse un articolo in cui definì un modo per riuscire a uscire dalla gabbia del materiale di addestramento e generare testi “nuovi”. Quando più di trent’anni fa Roberto Pieraccini e il sottoscritto provammo a implementarla – senza grandi risultati, ma non avevamo né la potenza di calcolo né la quantità di dati di addestramento attuali – la chiamavamo “Einmal ist keinmal” in finto tedesco: una volta non è nessuna volta. Avevamo una base dati di triplette di parole consecutive prese da una base dati che usavamo per calcolare la probabilità che una pronunciata da un parlante fosse quella riconosciuta dai nostri computer. Se avessimo avuto tutte le possibili triplette, la cosa sarebbe stata semplice: magari dopo “presidente del” avremmo avuto il 50% di avere “Consiglio”, il 5% “consorzio”, il 15% “Milan” e così via, perché nel corpus c’erano 20 triplette, e di queste 10 erano “presidente del Consiglio”, una “presidente del consorzio” e così via. Ma se la frase fosse stata invece “presidente del Circolo” (degli artisti, o magari degli amici del punto croce) e nel corpus non c’era nessuna occorrenza, non potremmo mai trovarla. Good pensò “bene, togliamo un’occorrenza da tutte le triplette – einmal ist keinmal! – e la percentuale di occorrenze tolte sarà assegnata a una parola a caso, con la frequenza relativa nel corpus”.
Questo metodo può essere considerato “intelligenza”? No, non foss’altro che perché applicandolo puoi comunque prendere granchi. Può essere una base per costruire un sistema intelligente? Non lo so, ma non lo sapeva nemmeno Turing e a dire il vero non lo sa nessuno. Ma come scrivevo sopra, nessuno ci assicura che l’intelligenza debba essere umanocentrica: quindi un modo per arrivare a una soluzione inaspettata può andare perfettamente bene anche se non è quella che ci saremmo aspettati. L’intelligenza può essere di un qualunque tipo, almeno a priori!
Se siete arrivati fino a qua, meritate di scoprire una chicca. Il testo originale dell’articolo di Turing si trova qui. La seconda domanda nel testo originale era questa.
Q: Add 34957 to 70764.
A: (Pause about 30 seconds and then give as answer) 105621.
Notato nulla di strano? Il risultato della somma è sbagliato! Non penso proprio che l’errore gli fosse scappato: secondo me è stato un tocco di classe. L’umano avrebbe potuto inserirlo apposta per dare un indizio all’interrogante; la macchina avrebbe potuto farlo proprio per confondere l’intervistatore. Quello che è certo è che almeno a oggi gli LLM non fanno di questi errori volontari, possono avere al più le cosiddette “allucinazioni” quando si inventano le cose. Ma la mia domanda è un’altra: come mai chi ha tradotto l’articolo ha corretto il risultato, rovinando del tutto la logica di Turing?
Guarda la pagina di questa rubrica
Hai detto “lasciamo perdere il problema di scacchi” e quindi dovrei lasciar perdere, ma dopo le osservazioni sugli errori appositamente infilati da Turing, non resisto… Se le posizioni dei re sono effettivamente e1 per il re (diciamo bianco) e c3 per il re (diciamo nero), Th1 non è matto, perché il re bianco può andare in f2. Sarebbe matto se la posizione iniziale de re nero non fosse c3 ma e3 (o se quella del re bianco non fosse e1 ma c1). C’è un typo nel post o è sempre Turing che fa tranelli e controtranelli?
Il testo originale è
I have K at my K1, and no other pieces. You have only K at K6 and R at R1. It is your
move. What do you play?
Non sono uno scacchista, ma K1 è sicuramente e1, mentre K6 dovrebbe essere e3 e R1 h8. Quindi direi che quello è un probabile refuso.
“Einmal ist keinmal” è vero tedesco, non finto tedesco.
È la prima metà di un modo di dire riferito a errori o colpe: “Einmal ist kein Mal, zweimal ist ein Mal zu viel” (“Una volta è nessuna volta, due volte è una volta di troppo”).
Ma appunto non si scrive così! (poi è vero che lo pronunciavamo solo…)