Da decenni l’intelligenza artificiale cerca di giocare alla pari con l’essere umano nel gioco del Go, uno dei giochi astratti più antichi del mondo. Il 28 gennaio 2016 Google annuncia la vittoria di AlphaGo contro Fan Hui, giocatore di Go professionista di origine cinese, che vive in Francia da molti anni e che negli ultimi 3 anni è stato campione europeo.
AlphaGo è un software sviluppato da DeepMind, società di ricerca nell’intelligenza artificiale, che è stata acquisita da Google nel 2014 per una cifra superiore ai 400 milioni di dollari. La portata di questo investimento dà l’idea dell’importanza di questo risultato, non solo per quanto riguarda il risultato in sé, quanto per il mondo dell’intelligenza artificiale.
Adesso rimane da superare l’ultimo traguardo: nei giorni 9-10-12-14-15 marzo AlphaGo giocherà contro uno dei giocatori più forti del mondo, il coreano Lee Sedol. In attesa di questa storica sfida, ne parliamo con Maurizio Parton, presidente della Federazione Italiana Gioco Go e matematico di professione.
Maurizio, potresti fare un breve riassunto dell’evoluzione di giocatori artificiali nel mondo del Go?
La ricerca dell’intelligenza artificiale nel Go è partita circa 10 anni dopo quella degli scacchi: mentre negli scacchi la ricerca risale agli anni ’50, e il primo programma agli anni ’60, nel Go i programmi cosiddetti “di prima generazione” cominciano nel 1968, per poi svilupparsi fino al 1993. Con prima generazione si intendono quei programmi che usano un’euristica deterministica, e che discendono nell’albero delle posizioni molto superficialmente. In parole povere, i programmi di prima generazione sceglievano le mosse da fare in maniera molto superficiale, e riuscivano a leggere soltanto poche mosse avanti. Tra questi, il programma più noto è GnuGo, che gioca a livello dilettantistico e non legge nessuna mossa avanti (anche se una sua versione recente sta implementando metodi probabilistici, tipici dei programmi di seconda generazione).
Nel 1993 esce il primo programma che usa metodi probabilistici: si chiama Gobble, e usa una tecnica chiamata “metodo Montecarlo” per scegliere la mossa da fare. Dal punto di vista odierno non ottiene grandi risultati, ma gli va dato il merito di aver aperto la strada all’uso della probabilità nel Go: comincia la “seconda generazione”. Tra i programmi più famosi di seconda generazione troviamo MoGo, Zen, CrazyStone e The Many Faces of Go, che hanno raggiunto il livello di forti amatori. La seconda generazione è caratterizzata da una ricerca dell’albero molto profonda, possibile grazie ai metodi probabilistici.
Oggi assistiamo alla nascita della “terza generazione”: AlphaGo è il primo di questi programmi. Oltre al risultato eccezionale conseguito, AlphaGo ha il merito di aver inaugurato l’utilizzo delle reti neurali per la scelta della mossa “migliore” da fare.
Potresti spiegare quali sono le strategie su cui si basano i programmatori per sviluppare programmi che giochino contro gli umani?
La strategia è molto semplice, una volta capito che questo tipo di gioco è un gioco “di cui si sa tutto”. Se si potessero analizzare tutte le possibilità, mossa per mossa, si potrebbe sempre rispondere perfettamente, e vincere sicuramente! Si potrebbe giocare – per citare Hikaru No Go – la “kami no itte”, ovvero la partita perfetta.
Questa frase “analizzare tutte le possibilità, mossa per mossa” significa mettere un colore in ogni configurazione possibile del gioco: nero se vince nero, bianco se vince bianco.
Purtroppo l’analisi di tutte le mosse non è possibile: si parla di 10^345 possibili partite diverse, un numero che non è e non sarà mai analizzabile da nessun computer. Come fa allora un programmatore a scrivere un programma che gioca a Go? Semplice: si accontenta. Mette i colori nelle caselle in maniera approssimata, come facciamo noi quando giochiamo. Noi non diciamo “gioco qui perché vinco”, ma “gioco qui perché penso di vincere”. Allo stesso modo il programmatore sceglie un algoritmo che “pensa” che in quella tal posizione vincerà bianco piuttosto che nero. È la scelta di questo algoritmo che determina il buon funzionamento del programma.
L’algoritmo dei programmi di seconda generazione si chiama “ricerca dell’albero tramite Montecarlo”, e funziona, in maniera molto semplificata, nel modo che spiego adesso. Supponiamo che io mi trovi in una posizione A, e voglio decidere che mossa fare. Per semplicità, diciamo che ci sono soltanto 2 possibilità: B e C.
Partendo da B, faccio fare al computer 1000 partite, e alla fine vedo chi vince. Se alla fine ha vinto 840 volte nero, mi segno sulla posizione di partenza B la frequenza di vittorie: 800/1000.
Poi faccio la stessa cosa partendo da C: se alla fine nero ha vinto 882 volte, mi segno sulla casella C il numero 882/1000.
È chiaro allora quale mossa scegliere tra le due: sceglierò C, perché è quella che “promette meglio”. Sembra semplice, ma… come gioca il computer? Come fa a fare le 1000 partite a partire da B, e le altre 1000 a partire da C? La risposta è sorprendente: le gioca a caso! Sceglie le mosse a caso, fino a finire la partita.
Questo metodo Montecarlo si chiama “puro”, ed è ovviamente molto primitivo. Però l’essenza dell’idea dei metodi probabilistici applicati al Go è questa, nient’altro. Per curiosità, il metodo che viene usato oggi nei programmi è un suo perfezionamento, che si basa su una tecnica detta “bandito a molte braccia”.
AlphaGo usa tutte queste tecniche, e molto di più: usa infatti tre reti neurali (strumenti molto avanzati di intelligenza artificiale), per predire il valore di una posizione (quello che prima veniva calcolato giocando “a caso”). Inoltre, usa il metodo Montecarlo nella sua versione più avanzata, e tante altre tecniche di contorno. Tutto questo, unito a una potenza di calcolo enorme: 1202 processori, e 176 schede grafiche.
A te, come giocatore di Go, la notizia di questi successi tecnologici che effetto fa? E che effetto ha fatto su altri giocatori?
La notizia è stata sconvolgente, e vissuta a pieno titolo come un evento storico. Storico nel mondo del Go, sicuramente, ma anche nel campo dell’intelligenza artificiale. Le tecniche usate da DeepMind sono applicabili in numerosi altri settori! Per quel che mi riguarda, io come matematico mi sento molto fortunato per il periodo in cui sto vivendo: ho infatti visto le dimostrazioni delle congetture di Fermat e di Poincaré, Deep Blue, adesso AlphaGo, e subito dopo le onde gravitazionali!
Per quel che riguarda gli altri giocatori, la notizia si è sparsa a macchia d’olio: in poche ore dall’annuncio ufficiale, lo sapevamo praticamente tutti. Adesso la grande domanda è: chi vincerà tra AlphaGo e Lee Sedol? Io credo di essere in minoranza, perché penso che vincerà AlphaGo.
Di sicuro, molti di noi mercoledì 9 marzo alle 5:00 di mattina saranno davanti al computer, a vedere l’inizio di questo storico confronto!
Link di approfondimento:
https://gogameguru.com/can-alp
https://deepmind.com/alpha-go.
https://en.wikipedia.org/wiki/