Чемпионат ИИ по покеру от Сбербанка: интервью с техническим консультантом соревнования

чемпионат по покеру

Сбербанк начал турнир-хакатон по игре в покер для ботов с искусственным интеллектом. Наработки победителей в дальнейшем найдут применение в таких задачах, как управление риск-доходностью и ценообразование. Отборочный онлайн этап продолжается до 18 сентября. Затем 23–24 сентября состоится оффлайн этап, в ходе которого будут разыграны 600 000 ₽.

Мы пообщались с техническим консультантом чемпионата, Антоном Чумаченко, который также является победителем Russian AI Cup 2016 — соревнования в стиле Dota для ботов с ИИ.

Антон Чумаченко

Антон Чумаченко, технический организатор и консультант соревнования Sberbank Holdem Challenge

— Расскажи, пожалуйста, почему тебя позвали помогать и какова твоя роль в хакатоне?

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

Моя роль в хакатоне — разработчик и аналитик. Помогаю составлять правила оффлайн- и онлайн частей, выводить различные параметры для баланса: процессорное время на один ход, исходные условия игры (разновидностей покера достаточно много, да еще и по несколько параметров у каждой разновидности). Все эти цифры анализируем с точки зрения доступных мощностей для тестирования, дисперсии игры при различных условиях, и, конечно же, вариативности в написании стратегии.


— Какой тип игры выбрали для соревнования и почему?

— Решили остановиться на мультиагентном покере (9 человек) и самой популярной разновидности — безлимитном техасском холдеме. Начальное количество фишек в каждой игре (50 больших блайндов) подобрано таким образом, чтобы стратегия не сводилась к выбору 3-4 простых вариантов, а имела хорошее ветвление с точки зрения вариативности развития событий.

В классическом покере в онлайн-казино часто используют ограничение в 100 больших блайндов в качестве минимально допустимого (большой блайнд — это минильная ставка для повышения). При таком ограничении дерево игры получается настолько большим, что для его обхода даже с учетом хитрых оптимизаций потребуется достаточно много процессорного времени. А если учесть, что участников 9, все они должны принимать решения последовательно и игр нужно провести много из-за сильного влияния случайных величин, чтобы отделить «хорошие» стратегии от «средних», то времени на ход слишком много выделять не получается. А вот при ограничении в 50 больших блайндов можно реализовать достаточно эффективную стратегию, основанную только на математике, и дерево игры будет значительно меньше.


— Как проходит онлайн-этап хакатона? Что ты сейчас делаешь?

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

Я пишу различные скрипты, которые анализируют все ежедневные турниры, выявляют, нет ли ошибок в симуляциях игр, и собирают статистику о том, насколько изменяются стратегии участников изо дня в день. Хочу отметить, что среднее изменение фишек за одну раздачу с каждым днем становится все меньше, так как участники постоянно модернизируют свои стратегии и они все большое отличаются от Baseline-решения, которое часто вслепую ставит все фишки без детальных оценок ситуации.


— В описании турнира указано: «предлагается написать игрового бота на основе машинного обучения». Однако в покер можно играть, и даже, наверное, довольно успешно, не используя алгоритмы машинного обучения, а полагаясь на расчет вероятностей. Такие решения будут приниматься? Они вообще будут работать?

— Да, решения, основанные только на вычислении карт и вероятностей их выпадения из колоды, будут работать в рамках правил покера. Вопрос: насколько хорошо? Скорее всего, они будут сравнимы с уровнем игры среднестатистического игрока в покер, а может и чуть лучше, так как компьютер способен точнее подсчитать вероятности за малое время. Приниматься будут абсолютно все решения. Даже те, которые все время сбрасывают карты.

К тому же сложно провести грань, в каком решении есть машинное обучение, а в каком нет. Например набор IF-THEN-ELSE правил, которые опираются на хитрые константы, вполне мог быть выведен после обучения стратегии, основанной на нейросети, которая сыграла сама с собой миллионы игр и выдала на выходе оптимальные константы, а в исходный код участник не вставлял эту нейросеть для ускорения работы стратегии.

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

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


— Ты победил в прошлогоднем турнире Russian AI Cup. Есть ли что-то общее у этих двух соревнований?

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

Также, в отличие от классических олимпиадных задач по программированию, здесь нет идеального решения, точно также, как в Russian AI Cup, потому что разработанная стратегия тестируется в динамически развивающейся системе среди других стратегий.


— Какие советы ты дашь участникам, опираясь на свой опыт? Как бы ты стал решать данную задачу?

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

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

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