Se siete degli appassionati di go, machine learing, o avete amici sud koreani, avete probabilmente sentito parlare di alphago. Nel marzo del 2016, alphago è stato il primo programma in grado di sfidare un campione professionista di go, il sud koreano Lee Sedol. Ma partiamo dall’inizio…

Video: il trailer del documentario sulla sfida tra Lee Sedol e alphago e che potete trovare comodamente su youtube

Che cosa è il Go:

Il go è un gioco da tavolo cinese, molto popolare in Asia ed è forse il più antico gioco mai inventato, ben più antico degli scacchi, di cui è una specie di “antenato”.

Le prime partite di go sono state giocate ben più di 2500 anni fa ma nonostante ciò, come dice un proverbio koreano: “non sono mai state giocate due partite di go uguali tra loro”.

Il gioco è di per se molto semplice, si gioca su una scacchiera, il goban, che è composto da un reticolato di 19×19 incroci. Come negli scacchi si sfidano bianchi contro neri, ma a differenza degli scacchi, c’è un solo tipo di pedina ed una sola mossa possibile: posizionare ovunque si voglia la pedina.

Obbiettivo della partita è “conquistare” più territorio possibile che si fa “circondando” aree della griglia o creando una linea continua (ma non necessariamente dritta) di pedine da un bordo all’altro del campo.

Se le nostre pedine sono circondate da un “cerchione” di pedine avversarie più grande, esse vengono catturate. Nella versione cinese del gioco le pedine catturate vengono contate e aggiunte ai punti ottenuti dal territorio mentre nella versione giapponese e più “tradizionale” del gioco questo non avviene (qui comunque ci riferiremo alla versione giapponese).

Video: un breve tutorial sul go

Il problema di fare un computer che gioca a go:

Il go pur avendo delle regole molto basilari è molto difficile da un punto di vista computazionale. Per quanto ricordi gli scacchi o la dama, bianchi contro neri, la scacchiera, le pedine, è in realtà molto diverso.

Lo si capisce la prima volta che si gioca a go, le mosse possibili sono tantissime! Così come le combinazioni possibili di mosse e quindi partite (per l’esattezza 2,08 × 10170 diverse posizioni possibili). I koreani ci hanno quindi probabilmente preso con il loro detto riguardo le due partite di go uguali tra loro.

Questo per un computer rappresenta ovviamente un grosso problema perchè non può essere risolto come è stato fatto con Deep Blue e gli scacchi. Negli scacchi le mosse possibili sono “calcolabili” e la partita diventa solo una complessa equazione da risolvere. I parametri di questa equazione sono definiti da esperti di scacchi, sono fissi, e sono moltissimi, ma comunque abbastanza pochi per essere elaborati da una macchina in un tempo decente; questo definisce una AI in senso classico, o “Good Old-Fashioned Artificial Intelligence” GOFAI.

Nel go però le mosse possibili sono così tante (più del numero di atomi nell’universo) che non è possibile fare una macchina che “pensi” tutte le opzioni e scelga solo quelle che portano a una sicura vittoria.

Come hanno risolto il problema:

Alphago è composto da tre principali “strutture”: due reti neurali profonde (DNN), il value network e il policy network, ed un programma di “tree search. Inoltre è stato usato un database di circa 30 milioni di mosse da partite storiche.

Il policy network è stato “allenato” sul database delle partite giocate dagli essere umani per cercare di imitare le loro mosse vincenti. Il value network invece analizza la partita e divide l’area della scacchiera in zone “critiche” cercando di capire la probabilità di vittoria in quell’area della scacchiera. Infine il programma di tree search cerca di capire le probabili “variazioni” o mosse che possono accadere.

Per riuscire a calcolare/prevedere le possibili mosse sono stati usati due espedienti; innanzitutto è stata diminuita la “profondità” della ricerca, ovvero invece di predire tutte le mosse fino alla fine della partita, come faceva Deep Blue negli scacchi, una volta che la partita si può dire vinta di sicuro, la ricerca si interrompe e smette di predire mosse.

Questo è ovviamente un sollievo per il programma che deve diminuire di parecchio la sua potenza di calcolo.

La seconda strategia utilizzata, che è anche l’aspetto più interessante, è che i valori del policy network vengono utilizzati per “indirizzare” la ricerca. Invece che cercare di predire tutte le mosse possibili, alphago cerca di predire solo quelle che il policy network indica come più vincenti (mica scemo sto programma!).

Infine il programma è stato “allenato” giocando contro se stesso milioni e milioni di volte (cosa che ahimè noi umani non possiamo fare) per “rafforzare” le sue predizioni. Alphago è infatti un programma che utilizza il deep learning per migliorare il deep neural network (DNN).

I DNN sono programmi ispirati ai network neurali che come i neuroni processano informazioni e “imparano” con del training a processarle sempre meglio, facendo quindi “esperienza”. Questo avviene attraverso un meccanismo di “rinforzo” dell’informazione processata, che diventa quindi più saliente ed importante.

Ad esempio un ANN programmato per cercare dei volti umani può “imparare” che i volti umani hanno sempre due occhi e comincerà di conseguenza a cercare gli occhi come prima cosa quando posto davanti a uno stimolo visivo. Tentativo dopo tentativo il programma migliorerà, anche se noi per ora siamo ancora troppo complessi per essere predetti o “visti” dalle macchine. Per ora.

La sfida:

Alphago si presenta al big match come il primo computer ad essere stato in grado di battere un campione professionista di go, il franco-cinese Fan-Hui, campione europeo di go con due dan (si, proprio come nel karaté).

Nel mondo del go è però come dire che una squadra di robot ha battuto a calcio  la capolista del campionato Uzbeko, ‘na merda insomma. Tra l’altro Fan-Hiu è stato ricoperto di insulti dagli appassionati di go per la figuraccia fatta (ha perso 5-0).

Ora però alphago giocherà contro il Real Madrid del go, Lee Sedol, 9 dan e 18 (18!!!) volte campione del mondo. Una vera e propria leggenda e all’unanimità acclamato come il miglior giocatore degli ultimi 50 anni almeno.

Uno che si è presentato con un “mi limiterò a vincere” alla conferenza stampa di presentazione della partita e che tutti gli esperti davano come sicuro vincitore. Lee Sedol è anche famoso per il gioco vario ed estroso, sostanzialmente il peggior avversario possibile per un computer.

In Korea, e più in generale in Asia, la sfida, composta da cinque partite, è stata seguitissima, proprio come un mondiale in Italia, con la partita trasmessa in diretta nelle piazze. Contro ogni pronostico alphago vince la prima partita.

La mossa U37:

Il giorno della seconda sfida la tensione è palpabile, il pluricampione ed eroe nazionale ha appena perso contro una macchina ad un gioco che appassiona un intero continente da più di 2000 anni. Nessuno vuole che accada di nuovo. Dopo la prima partita magari presa con un po’ troppa arroganza e boria, il campione sa che non può sbagliare.

La partita è iniziata e si stanno delineando le aree di influenza: Il go è un gioco molto particolare perchè ogni mossa ha un effetto a cascata su tutto il resto del campo e partita. Bisogna quindi essere cauti, soprattutto a metà partita, quando si decide che piega prenderà la sfida.

Lee Sedol lo sa, ci pensa, ci ripensa, ci pensa bene e poi fa la sua mossa. Mentre il programma elabora, Lee va a fumarsi una sigaretta per distendere la tensione. Alphago fa quindi la sua mossa.

Un boato si alza in sala e tutti rimangono esterrefatti. Un errore, una mossa senza senso, una mossa che nessun umano avrebbe mai fatto. Alphago con U-37 fa una giocata che confonde tutti e i programmatori corrono dietro le quinte a vedere cosa sta succedendo.

Cosa sta pensando alphago? Analizzando i dati si vede che il valore del policy network è bassissimo, quindi alphago “sà” che quella mossa è improbabile e che non è mai stata giocata. Il policy network infatti è la parte del programma allenata sulle partite umane e su quelle vittorie ma nonostante questo, il programma ha “deciso” che i valori del value network (quali aree sono importanti) e del tree search (cosa succederà probabilmente) giustificano la mossa e che quella mossa porterà alla vittoria.

Il programma ha quindi effettivamente fatto qualcosa di “non umano” sia dal punto di vista del suo processo decisionale (ignorando il training delle parite dei campioni di go) che dal riconoscimento, perchè tutti  i commentatori ed esperti non hanno capito la mossa, non hanno percepito un ragionamento umano dietro una scelta del genere.

Lee Sedol torna dalla sua sigaretta e si ritrova davanti a sè una mossa assurda, senza senso, quasi un errore banale, fatta dallo stesso computer che lo aveva umiliato contro ogni pronostico al primo match. Si lancia, ci prova, ma perde di nuovo, e la cosa più assurda è che alphago vince proprio grazie a quella mossa.

Grazie a quella pedina, a fine partita alphago si era, infatti, accaparrato una grossa fetta di punti e con quella mossa aveva cambiato la “pendenza” della partita in modo fondamentale. In Korea è dramma nazionale (e vi sta pure bene! Moreno io non dimentico!).

Le ultime tre partite e il punto della bandiera:

Al terzo incontro, Lee Sedo sente tutta la pressione del match-point di alphago, che vince agevolmente e porta a casa la vittoria della sfida. Rimangono però ancora due partite da giocare.

Al quarto match il campione arriva con l’aria leggera di chi ormai non più niente da perdere giocando sereno e con tranquillità. A metà partita il lampo del campione!

Alphago stava come al solito indirizzando la partita verso una tranquilla vittoria. Gli esperti hanno definito il gioco di alphago come molto “conservativo” e “sicuro”. Per rendere l’idea, un giornalista ha commentato così il modo di giocare di alphago: “alphago è strano, perchè quando vedi una partita e vedi che ci sono opportunità per stravincere, alphago con il suo gioco sembra dire: io per vincere ho bisogno di un solo punto in più del mio avversario, solo uno”.

Per scardinare il suo avversario cibernetico, Lee Sedol ha quindi fatto una mossa azzardata, posizionando la propria pedina in un area chiaramente sotto l’influenza di alphago. La mossa di Lee Sedol ha un pregio, quello di complicare la partita e di molto, così tanto che alphago fallisce nel trovare una soluzione (soluzione che probabilmente neanche Lee Sedol aveva).

Il programma incomincia quindi a giocare mosse strane, molto strane, tipo la U37, ma gli esperti sono adesso molto più cauti nel giudicarle. I tecnici e programmatori che osservano il programma “correre” e le statistiche “live” del programma capiscono però subito cosa sta succedendo.

Il programma fallendo nel trovare una soluzione incomincia a giocare in modo delirante. Convintosi che perderà sicuramente, alphago si comporta come un bambino annoiato che non vuole più giocare (anche se prima di una serie di errori alphago poteva ancora vincere).

Alla fine Lee Sedol si porta a casa il punto della bandiera, con un sentito sospiro di sollievo da parte dell’intero paese che scende in strada a fare caroselli. Arriviamo quindi alla quinta sfida, che secondo me è anche la più interessante.

La tensione era tornata altissima, una cosa è perdere 3-2 un’altra 4-1 e Lee Sedol sembrava aver “crackato” alphago. Il computer era battibile. La partita si svolge sul filo del rasoio, combattendo su tutto il fronte per ogni singolo punto.

L’aspetto più peculiare di questa partita è che alphago la gioca “alla alphago”, costellando la sua partita di mosse alla “U-37”. Sono tutti confusi, il campione, i programmatori e gli esperti.

Cosa stava accadendo? Erano errori di un programma delirante? O geniali mosse che non possiamo comprendere? La partita prosegue tesa fino a quando i commentatori ed il campione capiscono, si guardano, non ci credono. Alphago aveva ormai vinto, di uno.

Alphamaster, alphazero e oltre:

Alphago è in anticipo con i tempi di circa 10, 15 anni. Gli esperti non pensavano sarebbe stato possibile creare un computer in grado di giocare propriamente a go per ancora tanti anni ma invece eccoci qua. Questo è un grandissimo risultato per lo sviluppo delle intelligenze artificiali soprattutto per come è stato ottenuto.

Alphago non è semplicemente un potentissimo Deep Blue che gioca a go invece di scacchi, è invece una tecnologia diversa che funziona in modo diverso.

Alphago non pensa tutte le possibili mosse per sapere quali porteranno a vittoria, alphago, invece, cerca di pensare solo alle mosse migliori, di capire quali aree della scacchiera sono critiche e di prevedere i possibili sviluppi di una partita.

La cosa più incredibile è che alphago fa mosse per noi inconcepibili ma comunque vincenti. Dopo la partita, alphago è stato upgradato in alphamaster, e senza deliri ha vinto 60 su 60 partite con tutti gli altri campioni di go.

Sopratutto però è stato creato alphazero, che è come i precedenti ma senza il training con le partite dei campioni. Alphazero è quindi senza nessun tipo di “conoscenza preimpostata” di cosa sia una buona mossa nè ha alcunché di “umano” (se non per il fatto di essere fatto da umani che cercano di fare programmi che funzionano come il cervello degli umani).

Il programma “rafforza” i propri collegamenti di cosa sia una buona o cattiva mossa in base alle partite precedenti (il policy network) semplicemente giocando contro se stesso un sacco di volte.

La cosa più interessante è che il programma è effettivamente molto snello e quindi flessibile su precisa volontà dei programmatori. Per ora ha ricevuto come input e output solo il go, chissà cosa succederà quando gli daranno qualcosa di più complesso da elaborare.

Ad ogni modo per ora noi rimaniamo troppo complessi per essere capiti dalle macchine ma adesso loro sanno giocare a go e noi non riusciamo a capirci niente delle loro mosse!

CONDIVIDI
Articolo precedenteIntervenire ogni volta come se fosse la prima
Giacomo Tartaro
Da quando sono maggiorenne presto volontario come soccorritore presso l'associazione di pronto intervento Croce d'Oro Milano. Per dieci anni sono stato bassista di una band blues-rock, gli Old News e per cinque presidente di una associazione culturale senza fini di lucro, la GNU Sound. Dopo aver conseguito una laurea in scienze e tecniche psicologiche presso l'università statale di Milano-Bicocca, dove ero noto con il patronimico "ilfigliodidueterapeuti", mi sono trasferito in Australia dove ho svolto svariati lavori, principalmente il bar-tender, e migliorato il mio inglese. Attualmente sono in Olanda dove sto perseguendo un master in neurolinguistica presso la Radbout University of Nijmegen. Contatti: tartagnan91@hotmail.it

ADESSO COSA PENSI?