Прошлый месяц запомнился многим игрокам новостью о первой в истории покера победе искусственного интеллекта, над сильнейшими игроками в безлимитном хедз-апе. Журналист сайта CardPlayer взял интервью у Ноам Брауна, одного из авторов сильнейшей программы и обсудил с ним итоги чемпионата, некоторые нюансы работы алгоритмов и конечно же обсудил будущее покера.
Libratus играл против четырёх игроков, которые входят в элиту безлимитного холдема в HU NL (безлимитный техасский холдем, один на один). Итогом его игры против них, стал впечатляющий винрейт бота, который превысил 14 бб/100 на дистанции в 120,000 рук. Игра велась с начальными стеками в 200 bb и выигрыш бота составил почти 90 бай-инов. Стоит отметить, что это первая победа ИИ и ранее программам не удавалось побеждать покеристов мирового уровня.
При этом разработчики считают, что это не предел и после внесения некоторых изменений и апгрейдов, Libratus в теории сможет крушить игроков с ошеломительным винрейтом в 50 bb/100.
Удивил ли вас итог матча?
Да, я был удивлен тем, насколько значительным оказалось преимущество ИИ. Перед матчем мы тестировали его против более ранних версий.
У Клодико (предыдущая версия бота) Либратус выигрывал примерно 10-12 бб/100 – результат, очень близкий к показанному командой во главе с Дугласом Полком в матче 2015 года.
Поэтому в новом матче мы рассчитывали всего лишь на небольшой перевес. Но Либратус превзошёл наши ожидания!
Получается до матча вы не ожидали, что Либратус способен громить игроков с винрейтом 14 бб/100?
Скорее мы просто недооценили тот фактор, насколько сильно на исход матча с Клодико повлияло применение оппонентами резких эксплуатирующих линий. К примеру, весьма эффективными оказались рейзы лимпов бота и такие банки составили значительную часть профита у Полка и других игроков.
Когда Либратус играл против Клодико, то он не пытался использовать стратегии эксплуатации, но при этом все равно показывал винрейт в 10-12 бб/100 и это должно было намекнуть нам о том, насколько он сильнее людей. Конечно это оказалось бы так, если бы игроки не смогли найти у него таких же слабостей и дыр в стратегии, как у его предшественника. И причиной победы Либратуса стал именно этот факт.
У вас не было ощущения, что игроки все же сумели найти его лики, когда после начального разгрома, все же почти смогли сравнять счет?
Действительно, к концу первой недели счёт почти сравнялся. Игроки искали сильные и слабые места у Либратуса и пытались понять, как он подстраивается под их действия. Конечно, они далеко не всегда делились с нами своими догадками, но та часть, которую я слышал, не вызывала у меня особой тревоги.
Некоторые из найденных ими ликов машины были подлинными, другие же – мнимыми.
К примеру, в один из дней они решили играть с 3-бетом 80%, поскольку думали, что Либратус неправильно реагирует на один из сайзингов 3-бета. Но в действительности, никакой ошибки не было – игроков ввёл в заблуждение шум, возникший из-за небольшого размера выборки рук.
Но были и удачные находки – в частности, не лучшая реакция ИИ на определенные размеры оупен-рейза. Перед началом соревнования мы не думали, что это будет серьезной слабостью, но дистанция показала нам, что данный лик оказался весьма существенным. К счастью, мы готовили программу к подобной ситуации. Либратус продолжал тренироваться сам с собой по ночам, пока его соперники отдыхали и устранял свои пробелы в игре. Поэтому уже со второй недели «игра пошла в одни ворота».
Получается, что решающим значением оказалась тонкая подстройка бота после сессий? По каким соображениям это делалось – потому что оппоненты могли обсуждать стратегию между собой?
Совсем нет! Мы не занимались тонкой настройкой, и никак не влияли на работу Либратуса, не говорили ему 4-бетить или фолдит. Всё было немного иначе.
Я приведу пример: перед матчем мы запрограммировали ему несколько сайзингов рейза и в итоге ИИ знал, как реагировать на типичные рейзы в 2 бб, 2.5 бб, 3 бб… Но если игрок открывался рейзом в 2.75 бб, то машина округляла это значение до 3 бб и по стратегии рассчитанной именно для такого сайзинга, что, разумеется, не было оптимальным решением.
Однако между сессиями с игроками, Либратус продолжал тренироваться и играть сам с собой рейзами 2.75 бб, а также другими сайзингами, в том числе и на постфлопе. Он делал это по специальным алгоритмам, которые учитывали частоту действий оппонентов и «удалённость» их сайзингов от посчитанных ранее.
И этот процесс был единственной подстройкой, которая использовалась ИИ во время матча. Конечно это уже было немало, и такой механизм саморазвития бота, не давал его соперникам использовать против него одни и те же эксплуатирующие приёмы.
Сама программа не менялась, а лишь училась реагировать на новые сайзинги.
Получается, что подстройка на префлопе и флопе важна больше, чем на тёрне и ривере?
Скорее она требует значительно большего времени. Либратус рассчитывал тёрн и ривер в реальном времени прямо во время раздачи. Он пересчитывал свою стратегию на терне и ривере каждый раз, когда его оппоненты делали ставку, в зависимости от её сайзинга.
Отличался ли он в этом от Клодико? Или Клодико работал так же, но просто был менее совершенным?
Да, Клодико имел аналогичный модуль для ривера, но он был намного менее совершенным. Одним из главных минусов было то, что он вообще не учитывал блокеры. Для ускорения расчётов, мы группировали похожие руки по категориям и для них строили одинаковую стратегию. Но А-хай с тузом пик на доске с тремя пиками – это совсем не то же самое, что А-хай с тузом треф. К тому же солвер Клодико не строил свою стратегию в зависимости от ставки соперника, а считал несколько разных сайзингов.
Думаю, что переход на уникальные карты и расчёт тёрна и ривера в реальном времени дали Либратусу решающее преимущество.
Все это потребовало серьёзной работы над алгоритмом, ведь при расчетах на терне ИИ должен рассмотреть более полусотни вариантов ривера и дерево расчета растет по экспоненте!
Насколько далёк Либратус от идеальной GTO-стратегии? Сколько ещё версий этой программы вы планируете выпустить?
Никто не сможет дать ответ, насколько наша стратегия слабее оптимальной. Мы знаем, как это можно посчитать теоретически, но такие расчёты стоят слишком дорого и поэтому ими пока не занимались. Возможно, попробуем в следующем году.
Могу предположить, что идеальный GTO-бот будет выигрывать у Либратуса около 15 бб/100 – точнее, от 5 до 50 бб/100.
Ого! Неужели он все еще так далёк от совершенства?
Здесь нельзя сказать наверняка. ИИ прошлых поколений не принимал в расчет блокеры, которые являются весьма важной концепцией, для игры на высоком уровне. У Либратуса уже нет такой проблемы, а также он научился пересчитывать тёрн и ривер в реальном времени. Именно в этих направлениях, двигаться дальше уже некуда. Могу предположить, что усилить игру можно за счет более грамотного выбора сайзингов, но вот насколько…
Много говорилось о том, что Либратус играет очень агрессивно и часто ставит овербеты на тёрне и ривере. Достигла ли программа совершенства в балансировке диапазонов в данных ситуациях или её также можно улучшить?
Овербеты в исполнении Либратуса, стали для нас одним из сюрпризов. При обучении ИИ не использовал ни одной раздачи, сыгранной людьми, поэтому стратегия, которую он счёл оптимальной, оказалась очень непривычной и нетипичной для живых игроков – огромные овербеты и донкбеты!
Было весьма приятно наблюдать, как бот использует линии, которые по большому счёту не встречаются в практике ПРО игроков.
К слову, Клодико также приходил к похожей игре – помните его «дикие олл-ины» в крошечных банках? Но в этой части его стратегии встречались ошибки, она не была сбалансированной. Либратус же продемонстрировал сбалансированную агрессию, что и стало ключом к победе.
В свете результата матча многих игроков беспокоит будущее онлайн-покера. Можно ли использовать вашего бота для нечестной игры?
Могу вас заверить, что мы не используем Либратуса для игры в онлайн-покер и не собираемся делать это в будущем. Конечно это не остановит людей, которые готовы использовать описанные нами идеи, для усиления своих ботов. Я не готов рассуждать на тему онлайн-покера, поскольку не слишком хорошо в нём разбираюсь. Знаю только, что ботов активно применяют при игре в онлайне, а покер-румы ведут с ними борьбу, но кто из них побеждает – мне неизвестно.
Если бы глубина стеков в вашем матче была больше или меньше, чем 200 бб, то как это повлияло бы на его исход? Смог бы Либратус справиться со стеком в 500 или 1,000 блайндов?
Мы выбрали стек в 200 блайндов, по той причине, что такая глубина используется в ежегодном чемпионате по покерному программированию. Машине тяжело работать с таким глубоким стеком, поскольку слишком сильно разрастается дерево вариантов. К тому же, насколько я знаю, стек в 200 бб является предельной заявкой на большинстве столов для кэш-игры.
Считаю, что мы выбрали подходящие условия – честные и одновременно с этим сложные для ИИ. Если бы игра шла в стеках 100 бб, то я уверен, что Либратус показал бы винрейт не хуже, а может даже и лучше.
Что касается стека в 500-1,000 бб… Я думаю, что результат машины бы улучшился, но в основном за счёт слабости соперников, которые почти не имеют опыта игры в таких глубок стеках. К тому же овербеты Либратуса стали бы ещё выгоднее.
Как дальше будет развиваться покерный ИИ? Пойдет за пределы хэдз-апа?
Мы уже проводили некоторые исследования в формате 3-макс. Могу сказать, что те методы, которые использовались при создании Либратуса, годятся и за пределами хэдз-апа. Правда, появляется новая проблема – оценка полученного результата.
Когда за столом играет более 2 человек, вы можете играть по оптимальной стратегии, но будете проигрывать, поскольку ваши оппоненты сотрудничают, вольно или невольно. Поэтому если посадить бота за стол к пятерым живым игрокам, то будет не понятно, как корректно посчитать результат.
К тому же на данный момент, 6-макс находится за пределами того, что может Либратус и другие похожие на него боты. Однако ежегодный чемпионат среди покерных программ вводит лигу для игры за коротким столом, и несложно предположить, что активность программистов в этом направлении будет возрастать и наука в этой сфере продвинется весьма быстро.
Думаю, после внесения некоторых изменений в Либратус мы смогли бы научить его обыгрывать людей в 6-макс через 2 года. Но пока не до конца понятно, стоит ли играть по GTO или идеально подстраиваться и максимально эксплуатировать слабых игроков. Первое – прерогатива машин, а вот второе люди пока умеют делать гораздо лучше.