Искусственный интеллект учится играть в трипл-дро

14 комментариев
Искусственный интеллект учится играть в трипл-дро

Бывший покерный профессионал из Нью-Йорка Николай Яковенко рассказал читателям PokerNews, как учит искусственную нейронную сеть играть в 2-7 трипл-дро.

За последние несколько лет глубокое обучение зарекомендовало себя как многообещающий подход к самым разным проблемам искусственного интеллекта. Возможно, это станет важным шагом к созданию ИИ вообще. При глубоком обучении создаётся отдельная система, способная решать целый комплекс задач, используя один и тот же «мозг» – или компьютерную программу с минимальными изменениями.

Вы уже сталкивались с глубоким обучением – именно этот подход используют Google и Facebook для подбора тегов к вашим фотографиям. В рамках проекта DeepMind (принадлежит Google) людям удалось научить искусственный интеллект играть в некоторые компьютерные игры 80-х, написанные для Atari. Компьютер совершенствовал своё мастерство, работая непосредственно с экраном и симулятором консоли. Сначала он учился играть, потом – играть хорошо, а под конец натренировался действовать практически безошибочно.

Несколько месяцев тому назад я решил применить похожий подход к покеру. Мы знаем, что различные варианты покера требуют различного набора знаний. Даже между игрой на коротких и полных столах разница получается довольно существенная. Однако у всех разновидностей покера есть что-то общее, и мы не раз сталкивались с тем, как хорошие игроки выигрывали браслеты WSOP в тех играх, в которых практически не имели опыта. Бертран Гроспелье в 2011 году стал чемпионом мира по стаду хай с бай-ином $10,000, впервые в жизни сыграв в турнире в эту игру. Питер Джеттен, ранее лишь изредка игравший в китайский покер на миролимитах, выиграл представительный турнир по OFC на Багамах. Кристиан Фам по ошибке зарегистрировался в турнир по безлимитному 2-7 сингл-дро за $1,500 и выиграл его на Мировой серии-2015.

Если один и тот же ИИ может пройти две разные компьютерные игры, может быть, я смогу создать «бота микс-игр»? И вот, через несколько месяцев мучений у меня появился ИИ, играющий... хэдз-ап 2-7 трипл-дро.

Почему трипл-дро? Во-первых, это отличная игра, популярная на высоких лимитах в онлайне и офлайне, где она уступает только холдему и омахе. В этой игре много экшена, и её одинаково любят и лузовые игроки, и ниты.

Правила очень просты – вам сдают пять закрытых от соперников карт, общих карт нет. Цель – за три обмена собрать слабейшую руку, без пар, стритов или флешей. Туз – сильнейшая карта, поэтому лучшей возможной рукой, которую также называют «колесо», будет 7x 5x 4x 3x 2x .

Это также идеальный пример игры в «европейском стиле», в которой игрок, находящийся позади (меняющий больше карт), имеет лучшие шансы усилить свою руку. Грубо говоря, за исключением случая, когда у одного из игроков готовая семёрка или восьмёрка (что случается достаточно редко), невозможно быть далеко позади. При наличии гладкого дро вы практически никогда не тянете вмёртвую и чаще всего можете коллировать по шансам.

Так как готовая рука является фаворитом против практически любого дро, иногда полезно блефовать с плохой рукой, не меняя карт и пытаясь выбить соперника ставками. Довольно часто оппонент не сможет собрать руку и выбросит на ривере. Но тот, кто блефует слишком часто или не в тех ситуациях, жертвует своими шансами собрать хорошую руку при обмене.

В хэдз-апе следует играть большинство рук за одну ставку и довольно часто доходить по последнего обмена. Для вэлью играются хорошие готовые руки и сильные дро. Но нельзя фолдить пограничные руки слишком часто, иначе вас уничтожит соперник, способный много блефовать.

Хэдз-ап идеален для тренировки ИИ. Компьютер может играть против самого себя и совершенствовать свою игру, исходя из результатов сыгранных ранее раздач. В программировании этот метод называется бутстрэпинг (bootstrapping); аналогия – барон Мюнхаузен, способный сам себя вытащить из трясины.

При правильном подходе компьютер способен научиться играть на достаточно высоком уровне, постоянно играя сам с собой, обучаясь на основе полученного опыта и играя снова и снова. Если учёные в DeepMind научили машину играть в 50 игр для Atari, освоить 2-7 не должно быть намного сложнее: сколько карт менять, когда играть чек-рэйз, когда блефовать... В конце концов, решение в лимитном покере – это всего лишь выбор одной кнопки из двух или трёх возможных, что с точки зрения механики проще любой компьютерной игры.

ИИ в работе: раздача 2-7 трипл-дро

Давайте изучим одну из раздач, сыгранную при глубоком обучении двумя версиями ИИ. На баттоне Poker-CNN-7, на большом блайнде – Poker-CNN-76. Кстати, CNN переводится как свёрточная нейронная сеть (convolutional neural network) и не имеет отношения к новостному каналу. Ни один диктор при создании бота не пострадал.

Итак, Poker-CNN-7 находится на малом блайнде и обнаруживает у себя

8h 9c Qd Ad 3s (3, True, 150.0, '', 0, 0, '')

У него трёхкарточное дро к восьмёрке или двухкарточное дро к 9-8. У него позиция; это хорошо. ИИ принимает решение, сравнивая ожидание каждого действия. CNN-7 может заколлировать, сделать рэйз или сфолдить. В банке $150 (ИИ всегда играет на ставках $100/$200 с блайндами $50/$100), блайнды являются мёртвыми деньгами. Ожидание фолда равно нулю.

bet: невозможен
raise: $60
check: невозможен
call: $67
fold: $0.0

Николай Яковенко
Николай Яковенко

По мнению ИИ, на дистанции ожидание (точнее, доля банка) после лимпа или рэйза с этой рукой лежит в районе $60. Учитывая, что Poker-CNN-7 находится на баттоне, рука явно не лучшая. Однако фолд с ней будет серьёзной ошибкой.

ИИ также указывает вероятность, с которой он будет принимать то или иное решение. Теоретически оптимальная (GTO) игра требует от него балансировать диапазоны и не всегда выбирать лучшее по ожиданию решение с конкретной рукой.

В данной ситуации ИИ будет выбирать рэйз с частотой 4%, колл – в 93%, фолд – в 3% случаев. Но в нашем случае сыграли 4%, и Poker-CNN-7 сделал рэйз.

Его коллега на большом блайнде Poker-CNN-76 анализирует положение со следующей рукой:

5c 3h Kd Th Ks (3, False, 300.0, '1', 0, 0, '1')

raise: -$118 (0%)
call: -$32 (74%)
fold: $0.0 (26%)

В руках CNN-76 трёхкарточное дро с 5-3. Не так уж плохо. Но на всех улицах он будет без позиции, и у него нет ни двойки, не семёрки, ни восьмёрки. Однако в банке $300 мёртвых денег. Это пограничное решение против любого игрока, не открывающего с баттона 100% рук.

Как мы видим, ИИ считает фолд сильнейшим решением, но 100% фолдов с этой и другими похожими руками сделает стратегию авторэйза с баттона слишком выгодной, поэтому ИИ рекомендует коллировать в 3/4 случаев и фолдить в остальных. CNN-76 коллирует и переходит к первому обмену.

Его выбор очевиден – он оставляет 5c 3h и меняет три карты. А вот его соперник оказывается перед весьма интересным выбором.

Poker-CNN-7
8h 9c Qd Ad 3s (3, True, 400.0, '10', 0, 2, '10')

‘pat': $311
‘draw_2': $222
‘draw_3': $201

ИИ прав в том, что это хорошая ситуация блефовать, не меняя карт. Против оппонента, который заколлировал рэйз предро и поменял три карты, нам выгодно продемонстрировать готовую руку, так как часто он не усилится и выкинет карты после первого или второго обмена.

Этот блеф, конечно, очень хорош в вакууме – в том случае, если бы CNN-7 и CNN-76 играли между собой только одну раздачу. Однако на дистанции оппонент быстро подстроится к слишком частым блефам и начнёт коллировать со слабыми дро. В то же время частые блефы со стороны игрока на баттоне лишают его возможности усилиться при обмене.

До тех пор, пока ИИ не наберёт достаточного опыта для определения оптимальной частоты блефа, я позволяю ему блефовать на первом обмене не чаще 33% случаев. Этот случай в 33% не вошёл.

Интересно, что ИИ предпочитает менять две карты, оставляя 9c8h3s, а не три, оставляя 8h3s. С учётом уже произошедшего экшена, ожидание обоих действий чуть больше половины банка, который составляет $400.

Я показал эту раздачу Ювалу Бронштейну, который специализируется в микс-играх, и он согласился с тем, что менять три карты не лучше. Лично я в этом не уверен. 9-8 – это средняя выигрывающая комбинация на вскрытии, так что дро у нас не очень хорошее. Правда, и Реп Портер, обладатель двух браслетов WSOP (и финалист чемпионата по 2-7 TD на WSOP-2015) считает, что обмен меньшего количества карт, чем у соперника, даёт нам дополнительное преимущество: соперник чаще будет чекать после обмена и чаще фолдить без усиления. Помните, что для игрока, меняющего три карты, все двухкарточные дро оппонента выглядят одинаково, будь то 9-8-3 или 7-3-2.

Как бы то ни было, в рассматриваемой раздаче ИИ оставил 9x 8x 3x и поменял две карты.

После первого обмена Poker-CNN-76 получил три хорошие карты.

Poker-CNN-76
5c 3h 9d 7s 4c (2, False, 400.0, '', 2, 3, '10')

bet: $337 (73.4%)
check: $313 (26.6%)

По мнению Бронштейна, это простой чек-рэйз. Я же склонен согласиться с ИИ. Баттон чаще поставит после нашего чека, но не всегда. Как мы видим, обмен двух карт не всегда означает сильную руку, а наши 9-7 теряют много вэлью при ответном чеке.

CNN-76 оценивает силу своей руки как $330 в банке $400, учитывая и действия на следующих улицах. Колесо стоило бы здесь $600 или больше. CNN-76 подбрасывает монетку и делает ставку.

Poker-CNN-7
8h 9c 3s 2d 8c (2, True, 500.0, '1', 3, 2, '101')

raise: $281 (4.8%)
call: $289 (95.2%)
fold: $0 (0%)

Poker-CNN-7 поменял две карты и усилился. Свою руку он оценивает как $280 от банка $500. Конечно, эта оценка была бы существенно ниже, если бы соперник открыл карты и показал готовую 9-7. Но она базируется на полученной CNN-7 информации о том, что противник поменял три карты против двух и поставил первым после обмена. Он мог избрать такую линию со многими руками и не только готовыми. Колл в 95% случаев выглядит вполне разумным. Однако в данной раздаче монетка встала на ребро, и CNN-7 сделал рэйз.

Poker-CNN-76
5c 3h 9d 7s 4c (2, False, 700.0, '11', 2, 3, '1011')

raise: $559 (24.4%)
call: $462 (75.6%)
fold: $0

Драматичная раздача на WSOP-2012
Драматичная раздача на WSOP-2012

Банк продолжает расти, и вместе с ним растёт оценка своей руки у CNN-76. Не знаю, почему ИИ советует коллировать, а не рэйзить, в 3/4 случаев. Может быть, ему не хватает опыта с 3-бетами, может быть, дело в балансе. Но в этой раздаче вновь выпал менее вероятный вариант, и последовал 3-бет. Баттон заколлировал.

Poker-CNN-76
5c 3h 9d 7s 4c (2, False, 1000.0, '1110', 2, 3, '101110')

‘pat': $720
‘draw_1': $486

Конечно, CNN-76 не меняет готовую 9-7. Но любопытно узнать, как ИИ оценивает возможную ошибку с обменом одной карты. Именно этим отличается мышление игрока-человека и машины. Опытный игрок в трипл-дро скажет, что 9-7 здесь годится, а менять одну карту, пытаясь собрать семёрку – слабее. Но может ли он оценить эту ошибку в денежных знаках? Конечно, оценки Poker-CNN не идеальны, но узнавать их всё равно интересно.

CNN-7 на баттоне оказывается перед важным решением: менять две карты, чтобы собрать восьмёрку, или идти за 9-8 (то есть, как нам известно, без аутов против конкретной руки соперника).

Poker-CNN-7
8h 9c 3s 2d 8c (2, True, 1000.0, '1110', 3, 5, '101110')

‘draw_2': $389
‘draw_1': $384

Бронштейн считает, что не менять две карты – грубая ошибка, и он прав. У нас 16 аутов на 9-8, что для двух оставшихся улиц даёт вероятность 59.0%, но как часто 9-8 выиграют на вскрытии? Даже если соперник стоит с десяткой или блефует, как часто он поставит с этими руками 3-бет после первого обмена? $380 в банке $1000 выглядят очень оптимистичной оценкой для 9-8-дро против готовой руки.

Шансы собрать восьмёрку обменом двух карт дважды посчитать сложнее, так как закрытые карты соперника не являются случайными, но подсчёт в лоб даёт шанс в 27.1%. Учитывая, что при успехе мы с большой вероятностью доберём лишнюю ставку, $380 для двухкарточного дро выглядит логичной оценкой.

В очередной раз подбросив монетку, Poker-CNN-7 решает поменять одну карту. Он без аутов.

Poker-CNN-76
5c 3h 9d 7s 4c (0, False, 1400.0, '', 5, 5, '10111010')

bet: $1047 (95.6%)
check: $969 (4.4%)

После второго обмена Poker-CNN-76 оценивает свою руку в случае ставки как $1,050 в банке $1,400, поэтому ставит. CNN-7 собрал 9-8 и охотно коллирует.

Poker-CNN-7
8h 9c 3s 2d 6h (1, True, 1200.0, '1', 4, 5, '1011101')

raise: $296 (0.5%)
call: $420 (99.5%)
fold: $0 (0.0%)

Конечно, учитывая экшен, CNN-7 не считает себя фаворитом в этом банке, но шансы для коллдауна вполне достаточны.

От Хака Сида к нейронным сетям
От Хака Сида к нейронным сетям

CNN-76 снова не меняет карт, и CNN-7 должен задуматься над тем, не разбить ли ему слабую девятку.

Poker-CNN-7
8h 9c 3s 2d 6h (1, True, 1400.0, '10', 4, 5, '10111010')

‘pat': $770
‘draw_1': $582

Это смахивает на бред – ИИ только что оценивал 9-8 как $420 в банке $1200, а на следующей улице повышает её стоимость на $350! Я бы, вероятно, тоже не разбивал девятку, но оценивал свои шансы выиграть на вскрытии куда ниже.

На ривере CNN-76 снова ставит.

Poker-CNN-7
8h 9c 3s 2d 6h (0, True, 1600.0, '1', 5, 5, '101110101')

raise: -$460 (0.0%)
call: $80 (66.0%)
fold: $0 (34.0%)

Под конец CNN-7 сознаёт, что его готовая 9-8 вряд ли годится. Выгоду от колла он оценивает скромными $80 при размере банка $1600. Учитывая размер ставки соперника в $200, это эквивалентно выигрышу на вскрытии в 15.5% случаев.

В таком банке я бы тоже вздохнул и сделал колл, а в живой игре попытался бы прочитать соперника и часто сфолдил, если бы не почувствовал, что он нервничает. Оплачивать последнюю ставку в 100% случаев – не лучшая игра, но всегда фолдить 9-8 тоже плохо – нас просто задавят.

Ключевой ошибкой в раздаче был обмен одной карты вместо двух на втором обмене.

Заключение

При игре в покер с нейронной сетью раздражает отсутствие у неё внутренней логики. Думаю, вы согласитесь с тем, что оценки ИИ по большей части выглядят разумными, некоторые из них довольно интересны, но попадаются и откровенно ошибочные. Например, на ривере оценка рэйза с 9-8 никак не может составлять -$460 на лимите $100/$200.

Зато играет Poker-CNN быстро, а все его решения – прямой продукт деятельности нейронной сети. В отличие от шахматного движка, он не симулирует раздачи, не считает шансы и не ищет готовые решения в похожих ситуациях. Он лишь прогоняет введённые данные через восьмиуровневую нейросеть и получает ответ, как торговаться и менять карты. На моём лаптопе это занимает примерно полсекунды.

Poker-CNN – первая версия покерного ИИ. Он не предназначен для решения трипл-дро один на один и даже не использует правила игры. Я тренирую его на историях раздач, из которых бот может получить информацию о картах, размере банка и торговле. Нейронная сеть группирует похожие раздачи, изучает типичные последовательности действий и оценивает ожидаемый результат.

Я мог бы ввести в ИИ 50 тысяч сильнейших рук для 2-7, начиная с первого натса 7x 5x 4x 3x 2x , но это противоречит сути проекта. Вместо этого я просто загружаю раздачи в стандартном формате. Проанализировав достаточное количество раздач, ИИ должен научиться неплохо играть в покер.

Николай Яковенко в твиттере

Рейтинг:

+1 -1
-

Зачем регистрироваться на GipsyTeam?

  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.

Мы тоже не любим спам! За всю историю сайта мы не отправили ни одного письма нашим пользователям. Вы не будете получать от нас ни рекламных предложений, ни обзоров обновлений.