Periodicamente salta fuori il discorso dell’onestà delle poker room e della presenza di Bot. Siccome molti non hanno le idee chiare su cosa siano e come funzionano ho deciso di scrivere questo articolo.
Cos’è un Bot
Un Bot è genericamente un programma che compie determinate azioni automaticamente seguendo una logica che determina le scelte e le azioni da operare. I Bot sono diffusissimi e tutti noi ne apprezziamo il lavoro quotidianamente. Per esempio, chi credete che passi al setaccio il Web per poi ritornarci le pagine trovate quando facciamo una ricerca su Google? Ogni giorno noi stessi usiamo o scateniamo Bot in maniera sempre maggiore. Per esempio, vi sono Bot che calcolano le statistiche di accesso al nostro sito perferito, o Bot che spammano, e così via. Nello specifico del poker, però, bisogna introdurre alcuni concetti per capire che le cose non sono così facili.
Un esempio di strategia
Alcuni di voi avranno letto il libro di Sklansky Tournament Poker for Advanced Players. In quel libro l’;autore presenta, a titolo di esempio, un interessante sistema che ha ideato per insegnare ad una ignorante di poker come giocare alle WSOP. Il sistema di per sè è semplicissimo, e si basa su una interessante serie di cosiderazioni, di cui non mi dilungherò qui.
Riassumendolo brevemente, il sistema dice: di fronte ad un raise, vai all-in con AA, KK o AKs se nessuno rilancia, vai all-in con qualsiasi coppia, AXs, AKo, o suited connectors fino al 65 Senza entrare nel merito di questo sistema, realizzare un programma che lo mette in pratica è un gioco da ragazzi, e non sto scherzando. Io personalmente ho creato un simulatore per questo sistema in circa mezz’;ora di lavoro. Anche aumentado il numero di regole, creare un Bot del genere è una baggianata per qualsiasi programmatore che abbia un minimo di esperienza.
L’intelligenza artificiale
Quello che però preoccupa i creatori di Bot è che queste strategie non si adeguano al gioco degli avversari. Per esempio, se io applicassi questa strategia con un giocatore molto chiuso in un heads-up, a parte botte di fortuna, sicuramente sarei alla lunga perdente. E’; necessario quindi applicare una strategia di gioco che, se da un lato implementa chiare regole comportamentali, dall’;altro tiene in considerazione fattori quali il numero di giocatori, la loro aggressivitàpassività etc etc. Ed ecco che entra in funziona l’;Intelligenza Artificiale. Per discuterne ampiamente penso non basterebbe un intero blog, probabilmente nemmeno due, quindi mi limiterò a farne un breve sunto, anche a beneficio dei curiosi che non sanno cosa sia ma che sono interessati all’;argomento.
La storia dell’AI
Senza risalire alla preistoria dell’informatica, la vera svolta dell’AI si ha con Alan Turing, che per primo nel 1950 teorizza la possibilità di scrivere un programma per far pensare una macchina. Arthur Samuel presenta in quell’anno un programma in grado di giocare a Dama. Da quei tempi molta acqua è passata sotto ai ponti, e molti di noi ricorderanno la sfida di Deep Blue e Kasparov, terminata con la vittoria della macchina nel 1997.
Le applicazioni principali
Anche qui tralasciando di proposito argomenti non interessanti ai fini del nostro articolo, ecco le tecniche utilizzabili ai fini del poker:
* Apprendimento non supervisionato Si tratta di una tecnica che insegna alla macchina a giocare basandosi su dati acquisiti e su cui viene eseguita una elaborazione. Questa tecnica richiede spesso una grossa quantità di dati a portata di mano. Un esempio di questa tecnica sono i motori di ricerca. Questa tecnica viene utilizzata dai Bot più "semplici".
* Apprendimento supervisionato Con questa metodologia, si conoscono i dati in ingresso, e si verifica che i dati in uscita siano come si vorrebbe che siano, affinando il motore interno fino al raggiungimento dello scopo. Esempio tipico sono i Sistemi Esperti, programmi in grado di dedurre nuove informazioni da un insieme di informazioni di partenza.
* Apprendimento per rinforzo Questa filosofia di programmazione punta a realizzare algoritmi in grado di apprendere ed adattarsi alle mutazioni dell’;ambiente che li circonda. Di questa categoria fanno parte le Reti Neurali.
Le Reti Neurali
In termini di intelligenza artificiale applicata al Poker, indubbiamente le Reti Neurali sono quanto di più indicato si possa impegare. Questa tecnologia, come detto, si adegua costantemente all’;ambiente circostante. Vi sono due tipi diversi di Reti Neurali:
* Reti ad apprendimento continuo Queste partono da zero e continuano ad apprendere man mano che lavorano
* Reti ad addestramento preventivo Queste sono addestrate preventivamente, e poi immesse nell’ambiente nel quale devono operare, adeguandosi man mano che le necessità lo richiedono. Come avrete ben capito, applicare una Rete Neurale ad addestramento preventivo è il nostro caso. le Reti Neurali si adeguano agli impulsi esterni man mano che essi si presentano, e li ricordano. Più giocherete contro una Rete Neurale, più questa imparerà le vostre tecniche, ed alla fine diventerà imbattibile.
Lo Screen Scraping
Come alcuni di voi avranno potuto notare, tutti i client di poker non scrivono il log della mano se non quando la mano è terminata. Questo si è reso necessario perchè altrimenti creare un Bot sarebbe stato molto facile. Purtroppo per loro, esiste la tecnica dello Screen Scraping. Questa tecnica è molto utilizzata dai Bot che girano sul Web per rubare le informazioni da altri siti. Rubare le informazioni da una finestra in cui siano presenti delle bitmap, ovvero delle immagini, è decisamente più difficile, ma non impossibile. Inoltre tutti i client possono essere impostati in modo che scrivano nella finestra del chat tutti i dettagli relativi alla mano. Senza quindi diventare pazzi, basta andare a "rubare" quelle informazioni per sapere in tempo reale quello che avviene sul tavolo.
E già qualcuno lo fà....
Calculatem è un programma molto noto nell’ambiente. Come credete che faccia a dirvi in tempo reale quali sono le vostre odds, quali siano i giocatori più aggressivi e a suggerirvi quale sia la mossa più opportuna? "Ruba" le informazioni dallo schermo del client.
Il parser
Manca solo un ultimo tassello ed il nostro Bot è compiuto. Per poter comprendere le informazioni che arrivano dal log di cui sopra, dobbiamo esaminare il testo e reagire di conseguenza. Per fare ciò si deve usare un parser. Anche questo è un programma banale gli allievi del primo anno di Informatica sono capacità di scriverne di più complessi.
Creiamo il nostro primo Bot
Ok, tutto questo è molto interessante. Adesso che abbiamo gli ingredienti della nostra ricetta, creiamo il nostro primo Bot. Visto che siamo inesperti e vogliamo scriverne uno semplice, facciamo la lista della spesa. Avremo bisogno di:
- Un Parser
- Un motore di Apprendimento non supervisionato (un Sistema Esperto)
- Un programma di screen scraping
Per quanto possa sembrare assurdo, è il terzo ingrediente il più difficile, ma ai fini di questo articolo supponiamo di averli tutti già pronti. A questo punto lo assembliamo così:
- Lo Scraper cattura le informazioni dalla finestrella del chat
- Queste informazioni sono elaborate dal parser, che le passa al Sistema Esperto
- Questo decide che dobbiamo andare all-in e ce lo comunica sullo schermo
- Noi fiduciosi andiamo all-in con AA e perdiamo miseramente contro 65 che infila la scala
Ma come, tutto qui?
Beh, si, insomma non è che sia tutto così semplice, ma non è difficile come sembrava vero? E pensate, non è assolutamente possibile per la poker room capire se state usando un Bot o no. Perchè? Chi vi impedisce di giocare solo due mani e di andare sempre all-in? Non esiste modo di determinare che impiegate un Bot. Ma è illegale... Certo che lo è...