Tutti i giochi che abbiamo visto negli articoli precedenti di questa serie (gli altri li trovate qui, qui, qui) avevano una cosa in comune: erano giochi ad informazione perfetta, cioè ogni giocatore conosceva in ogni istante di gioco la sua situazione e quella dell’avversario. Tuttavia la maggior parte dei giochi e delle decisioni che prendiamo nella vita quotidiana, sono a informazione imperfetta, perciò un sistema artificiale che simula le capacità umane dovrà essere in grado di fronteggiare questo tipo di situazioni.

Siccome abbiamo visto che, anche per le intelligenze artificiali, giocare è il modo migliore di apprendere, i ricercatori si sono concentrati sui giochi di carte, e ovviamente il poker è l’archetipo del gioco a informazione imperfetta (sì lo so, anch’io avrei scelto lo scopone scientifico o la briscola, ma probabilmente avrebbero guadagnato meno in caso di vittoria).

Un team formato da ricercatori della Charles University e della Czech Technical University di Praga, insieme ai colleghi dell’Università dell’Alberta, hanno creato DeepStack, la prima intelligenza artificiale capace di battere dei professionisti di Texas hold’em con un margine significativo.

Il Texas hold’em è una specialità di poker tra le più diffuse, ogni giocatore parte con due carte private, che conosce solo lui. Dopo aver ricevuto queste carte parte un giro di puntate in cui i giocatori possono puntare o andarsene. Terminate le puntate inizia il flop, cioè vengono scoperte tre carte comuni a tutti i giocatori che non si sono ancora ritirati,  dopodichè ricominciano le scommesse. Seguono due fasi di gioco simili, il turn e il river: in ciascuna di esse si scopre una carta comune e si fa un giro di puntate, terminata l’ultima i giocatori mostrano le proprie carte. Vince il giocatore che ottiene la mano migliore contando sia le due carte private, sia le cinque comuni. DeepStack è stato addestrato per giocare a una versione in cui non vi è limite alle puntate  (No Limits) e vi sono due soli giocatori (Head-Up), da cui deriva il nome Head-Up No Limits Texas hold’em . Normalmente si possono sedere al tavolo fino a una dozzina di persone, ma dato che i vari giocatori vengono eliminati quando finiscono le fiches, l’Head-Up rappresenta la parte finale del gioco.

Un giocatore deve quindi decidere la propria giocata in base alle carte che possiede, a quelle che vede sul tavolo, ma anche da quello che presume abbia l’avversario, e per capirlo deve non solo considerare le giocate attuali, ma anche quelle passate. Le giocate del nostro avversario saranno frutto di un ragionamento analogo, e quindi dipenderanno dalle nostre giocate passate: si instaura così un meccanismo circolare di scelte.  Come abbiamo visto anche negli altri giochi, un algoritmo che “prende decisioni” si basa sul calcolo di tutte le possibili scelte e delle loro conseguenze. Nella versione del poker considerata, si tratta di maneggiare 10160 possibilità, decisamente troppe per qualunque computer! Per questo gli algoritmi precedenti tendevano a calcolare la strategia prima di giocare, oppure sceglievano la strategia tra quelle che avevano “in memoria” in base a quella più simile all’attuale, questa memoria era spesso stata riempita da giocatori professionisti umani in base alla loro esperienza.

L’approccio di DeepStack è differente. Questo algoritmo non cerca di calcolare una strategia in anticipo, come i suoi predecessori, ma prova a trovare la giocata migliore dal momento attuale. Per far ciò dovrebbe comunque fare un calcolo troppo grande delle possibili situazioni che possono accadere dal punto in cui si trova fino alla fine della partita. Per ovviare a questo problema DeepStack rinuncia a calcolarle tutte con precisione, ma oltre a una certa profondità di gioco (cioè dopo aver calcolato diverse giocate) approssima in base alle esperienze di giochi precedenti. I suoi programmatori paragonano (magari impropriamente) questa sua capacità all’intuito umano. Una volta compiuta la sua giocata e passato il turno all’avversario, svolge nuovamente l’algoritmo inserendovi le nuove informazioni acquisite.

DeepStack riesce a compiere un’approssimazione efficace del gioco grazie alle reti neurali e all’addestramento che è stato compiuto su di esse. Possiede infatti una rete neurale dedicata al calcolo della situazione dopo che sono state distribuite le prime tre carte pubbliche (flop network) e una che calcola dopo aver scoperto le altre quattro (turn network). Non contenti, e anche per velocizzare il computo, gli ingegneri di DeepStack hanno aggiunto un’ulteriore rete neurale ausiliaria che compie un veloce calcolo della situazione dopo ogni carta pubblica.

Per diventare sufficientemente efficienti le reti neurali devono essere allenate, perciò la flop network è stata sottoposta a un milione di situazioni di poker casuali, mentre per la turn network sono servite addirittura dieci milioni di situazioni per farle sviluppare l’abilità necessaria per approssimare efficacemente le situazioni di gioco.

DeepStack è stato testato sul campo tra novembre e dicembre del 2016 in un torneo appositamente organizzato con 5000$ in palio. Gli avversari erano undici professionisti e DeepStack ha giocato 3000 mani di poker con ciascuno di essi. Nel poker, come nel resto dei giochi di carte è difficile dire dove finisce la bravura di un giocatore e inizia la sua fortuna, quindi per valutare la prestazione di DeepStack si è ricorso all’uso di un parametro, il milli-big-blind per game (mbb/g). Il big blind è la puntata che il secondo giocatore alla sinistra del mazziere deve fare prima che vengano scoperte le carte pubbliche del flop, il big-blind per game (bb/g) rappresenta quanto abbiamo incassato rispetto a questa puntata. Il milli-big-blind per game è un millesimo di questa quantità.
DeepStack ha totalizzato un punteggio di 486 mbb/g quando, comunemente, già 50 mbb/g è considerato un buon punteggio. In altre parole ha ottenuto una vittoria con una significatività di quattro deviazioni standard (per capire bene quest’ultima frase, vi consiglio questo nostro articolo).

DeepStack, come le altre intelligenze artificiali di cui vi abbiamo raccontato (DeepBlue, Watson e AlphaGo), è sostanzialmente un algoritmo molto performante nello svolgere un compito ben preciso. Sebbene alcuni suoi costituenti, le reti neurali, siano di fatto ispirate al funzionamento di alcuni nostri costituenti, i neuroni, questa tecnologia è ancora lontana da potersi definire veramente intelligente, del resto manca una vera e propria definizione di intelligenza anche per gli uomini.

 


Immagine di copertina: YORIK by Shutterstock