Během posledních několik týdnů se hned dvěma týmům podařilo předvést umělou inteligenci porážející lidi v pokeru jeden na jednoho. V lednu systém nazvaný Liberatus porazil na speciálně pořádaném několikadenním turnaji vybrané pokerové profesionály. Na konci února pak tým z univerzity v Albertě, ve kterém byli i programátoři z pražské Matematicko-fyzikální fakulty, zveřejnil výsledky svého pokusu z listopadu a prosince 2016, kdy jejich program překonal během měsíc trvajícího neveřejného on-line turnaje výsledkově tři tisícovky hráčů (mezi nimiž ovšem bylo jen několik hráčů širší světové špičky). Předně: proč poker? Jedním argumentem je, že jednoduše jde o velkou výzvu. V případě pokeru, přesněji řečeno jeho variantě Poker Texas Hold’em No Limit, kterou týmy řešily, je počet možných rozhodnutí ve hře zhruba 10160, což je podstatně více, než dokáže dnešní výpočetní technika zvládnout. Proto je nutné přicházet s chytrými způsoby jak problémy kladené hrou zjednodušit. Druhým, ještě zajímavějším problémem pokeru je, že jde o tzv. hru s neúplnou informací. Hráč sice vidí karty vyložené na stole, ale nikdy neuvidí dvě karty, které má v ruce protihráč, a ani to, která karta se na stole objeví příště. Je to tedy poměrně jednoduchý příklad situace s neúplnou informací, na němž by se počítače mohly něco naučit – zatím totiž si v podobných problémech vedly velmi špatně. Například pokerové umělé inteligence se programovaly v minulých letech obvykle tak, aby si na začátku propočítaly podle předem nastavených parametrů jeden konkrétní postup (tabulku), a pak se ho držely až do konce. Ten býval obvykle hořký, protože takové programy nijak nereagovaly na vývoj situace. Když hráči jejich slabiny odhalili, mohli je do nekonečna využívat. A tak není divu, že i na soutěžích v počítačovém pokeru programátorských týmů ze špičkových pracovišť se objevovaly i programy, které si statisticky vedly hůře než hráč, jenž by karty pokaždé složil. Jak na to jdou To už samozřejmě neplatí, tak se podívejme proč. Oba úspěšné týmy používaly podobné metody, třeba matematické postupy vyvinuté v posledních letech, ale mezi oběma týmy byl i podstatný rozdíl. A my se z důvodů, které snad za chvíli budou jasné, budeme věnovat především týmu česko-slovensko- kanadského programu Deep- Stack (MFF v něm zastupovali Viliam Lisý, Matej Moravčík, Martin Schmid). Prvně zmíněný Liberatus je totiž v podstatě řešení problému „hrubou silou“, kterou používá superpočítač jak před partií, tak v průběhu zápasu. Byl zhruba 150krát výpočetně náročnější než DeepStack, jeho tým také v průběhu turnaje přistupoval údajně k „záplatování“ některých chyb programu. Součástí Liberatu byl totiž speciální modul, který sledoval, jak soupeři objevují a využívají slabiny ve strategii počítače. Naopak DeepStack se během měsíc trvajícího turnaje nijak neměnil a jeho přístup se zdá být přece jen elegantnější a je rozhodně méně náročný na výpočetní výkon. Oba počítače přitom strategii vybíraly podle známého principu teorie „hraj tak, abys toho co nejméně litoval“. Přesně jde o variantu, pro kterou se používá anglický výraz „counterfactual regret minimalisation“ (CFR) a jde o teoretický postup dovedený k dokonalosti právě skupinou prof. Bowlinga z Alberty, u kterého byli tři česko-slovenští programátoři na stáži. V roce 2015 pak kanadský tým dokázal, že tento postup může opravdu porazit i téměř dokonalé hráče, což pak nejnovější studie dokázala i prakticky. Bohužel se pro účely lidského pokeru tato metoda nedá odkoukat. Spočívá v tom, že pokerová umělá inteligence si nejprve sama se sebou zahraje miliony partií, ve kterých jen tak náhodně přihazuje a hází karty na stůl. Po každém rozhodnutí si ovšem zpětně propočítá, jak by byla hra dopadla, kdyby se hrála jinak, a porovná výsledek se skutečností. U rozhodnutí, která (by) vedla k lepším výsledkům, si udělá obrazně řečeno +1, u těch, která by vedla k horším, pak –1. Číslo může být tím větší, čím horší či lepší jsou dopady rozhodnutí. Podle toho pak upraví svou strategii pro další hry: zvýší pravděpodobnost dobrých rozhodnutí a sníží pravděpodobnost těch špatných. Když počítač odehraje dost partií, má mapu všech možných situací s poznámkou, jak dobré či špatné jsou. A co je důležitější, má na jejím základě už hotovou strategii, která sice není úplně ideální, ale je jí tak blízko, že z praktického hlediska mezi nimi není rozdíl. Důležité také je, že byť je vytváření strategie výpočetně náročné, použití už hotové strategie ve hře dá výrazně méně práce. Jak si vypěstovat intuici DeepStack je zajímavý proto, že se v něm podařilo dovést do praxe myšlenky, které velmi dobře fungují v jiných hrách, ve hrách s úplnou informací. Odkazuje tak na hry jako šachy, dáma nebo go, ve kterých počítač pracuje s prohledáváním možných tahů (rozhodnutí) na základě toho, v jaké pozici se nachází (jak omezené má rozhodování). Znázornit to lze na tzv. rozhodovacím stromě, který se větví vždy, když je na výběr více možností. Jen některé větve tohoto stromu ovšem mají pro daného hráče v daný moment smysl zvažovat. Pro úspěch DeepStacku svědčí, že se týmu podařilo vytvořit souřadnicový systém, který dobře popíše důležité parametry každé herní situace. Díky tomu se počítač dokáže rychle „najít“ v připraveném rozhodovacím stromě, a vybírat v každé situaci z vhodných řešení. (Definice herní situace je jeden velký teoretický úspěch práce, který ji dostal až do špičkového vědeckého časopisu Science.) Dopočítání každé alternativy v takové herní situaci až k úplnému konci partie ale je i tak problematické. Navíc to nedává smysl, protože většina větví vede k nežádoucímu cíli. A tady přijde ke slovu „intuice“ programu, která mu umožní, aby se i na relativně slabém hardwaru dokázal rozhodnout za méně než 5 s – tedy zhruba stejně rychle jako člověk. Řada čtenářů už asi uhodla, že za programovou intuicí bude jako obvykle stát neuronová síť, dnes jeden z největších softwarových hitů. Neuronové sítě jsou velmi zjednodušeně řečeno učenlivé programy, které lze vytrénovat v celé řadě dovedností. Jde o „starou známou vestu“, protože první neuronové sítě vznikaly už před více než půl stoletím, ale jejich skutečně hvězdná chvíle zřejmě přišla až v posledních letech (do značné míry díky zlepšení hardwarových výkonů, jak to u počítačů bývá). Právě neuronové sítě si totiž dokázaly poradit s tak dlouho neřešitelnými úkoly, jako jsou rozeznávání obrazu, rozpoznávání řeči a celou řadou dalších činností, ve kterých se vlastně úkoly pro počítač těžko přesně formulují. A tak je programátoři formulovat přestali. Místo toho dají síti jen hrubý návod, co po něm chtějí, a pak ho nechají softwaru, aby si ji milionkrát či vícekrát vyzkoušel. Program se vždy hned zpětně dozví, jak si v dané činnosti vedl, a podle toho koriguje své nastavení tak, aby se pokud možno sám stále zlepšoval. Autoři neuronových sítí sice obvykle nevědí, jak přesně jejich výtvor k výsledku dospěje. Systém má samozřejmě svá omezení, a není zdaleka tak samostatný, jak by se mohlo z našeho popisu zdát (neuronová síť se musí naprogramovat, a to lze špatně i dobře), ale jejich přínos už je nyní nesporný. V tomto případě k tomu, aby odhadovaly výsledky hry a vybraly z nich rychle a jednoduše tu nejslibnější. Program tedy začne počítat, co by bylo v dané situaci nejlepší, ale autoři ho nenechají dopočítat do konce. Brzy mu výpočet useknou a nechají neuronovou síť, aby mezi možnými rozhodnutími vybrala tu, která (doslova) podle jejich zkušeností nejspíše povede k žádoucímu výsledku. Počítač tak nehraje zcela optimálně, ale jeho výsledek se ideálu blíží natolik, že ani naprosto dokonalý hráč by si velmi dlouho nemohl být úplně jistý, že vyhrává opravdu proto, že je lepší, a ne proto, že mu šla karta. A zároveň se díky použitým softwarovým trikům podařilo snížit nároky na výpočet natolik, že program, který porážel i špičkové profesionální hráče, pracoval na jednom jediném notebooku s výkonnější grafickou kartou (neuronové sítě běhají optimálně na grafických kartách, protože jde o výpočty probíhající paralelně, což je právě doména GPU). Zatím jen pro dva Aby to bylo zcela jasné: program nijak nereaguje na protihráče a jeho strategii. Samozřejmě blafuje (blaf pro něj není žádný problém, je to tah jako každý jiný), ale stále v dopředu spočítaném optimálním poměru, nikoliv v reakci na hru protihráče. To se může zdát poněkud podivné, ale ve skutečnosti je to problém: počítač hraje co nejblíže ideální strategii (tj. co nejblíže tzv. Nashově rovnováze), která by měla zajistit v každém případě nejhůře remízu – to pokud soupeř neudělá žádnou chybu. A pokud nějakou udělá, program už začíná vydělávat. Taková optimální strategie je dobře spočítatelná pouze ve hře pro dva hráče. Hra s více účastníky už je totiž trochu jiná záležitost. Jde o podstatně komplikovanější situaci, která nemá v tuto chvíli dobré teoretické řešení, natož praktické. Dopočítat se ideálního řešení tedy asi nebude jen tak možné, což ovšem zřejmě neznamená, že by si počítače v této disciplíně musely vést špatně. Michael Bowling z Alberty pro časopis Nature řekl, že během prvních zkoušek upravené umělé inteligence pro hru více hráčů si vedla překvapivě dobře. Na lidi tedy možná počítače budou stačit, i když k dokonalosti budou mít daleko. Zajímavější by mohl být vývoj podobných algoritmů pro využití čistě mimo omezeného pole akademického pokeru. Kromě dalších, složitějších variant této a dalších karetních her se kolem nás nabízí celá řada jiných „her“ s neúplnou informací, od financí přes medicínu po bezpečnost (kybernetickou i fyzickou). Pravidla většiny z nich jsou samozřejmě dána mnohem méně jasně než u pokeru, a tak by bylo ještě lepší, kdyby se počítače učily jejich pravidla za pochodu – to je další velký problém umělé inteligence, na kterém pracuje řada týmů. Teoreticky se tedy podobným umělým inteligencím nabízí velmi široké pole možných uplatnění. Slibná kariéra mezi pokerovými profesionály je dobrý začátek, ale je to jenom začátek. Ve skutečném světě jsou problémy mnohem složitější. /jj/