www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Как выиграть более 70% матчей в Rock Paper Scissors

Дата публикации Sep 17, 2018

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

Хотя «камень-ножницы-бумага» (RPS) может показаться тривиальной игрой, на самом деле она включает в себя сложную вычислительную проблему временного распознавания образов. Эта проблема является фундаментальной для машинного обучения, искусственного интеллекта и сжатия данных. На самом деле, это может быть даже важно для понимания того, как работает человеческий интеллект.

Приведенный выше текст происходит от великогоСоревнование по программированию ножниц Rock Paperстр. Здесь проводится бесплатный и открытый конкурс, где каждый может представить свой алгоритм игры. Представления кода находятся вPython 2и они видны всем. Это дает возможность каждому увидеть детали лучших решений. Хотя их не всегда легко понять.

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

Давайте реализуем самый простой алгоритм игры. Это всегда играет Рок.

Обратите внимание, что единственное, что вам нужно сделать в программе, это дать значение для диапазона («R», «P», «S») глобальномувыходпеременная. Ваш противоположный алгоритм назначает свой ходвходглобальная переменная. Каждый раунд вы можете увидеть вход из предыдущего раунда. Первый раунд переменной является пустой строкой.

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

http://dilbert.com/strip/2001-10-25

Как вы думаете, это пойдет? Это довольно легко предсказать: в среднем одна треть проиграла, одна треть сыграла вничью, а треть выиграла. Эта стратегия дает вам 50% шанс выиграть каждый матч. Чтобы достичь более высокой ставки выигрыша, вы должны рискнуть. Было бы весело смотреть только случайные конкурирующие модели? Скорее нет, поэтому, пожалуйста, не отправляйте совершенно случайные решения. Мы собираемся использовать модель в определенных ситуациях.

Обратите внимание, что вы можетепроверить свою модель в автономном режиме, Просто скачатьrpsrunner.pyотсайт, Вы можете опубликовать их, чтобы проверить, как они работают, но там не так много вычислительной мощности. В начале я допустил ошибку и выложил несколько кодов, которые были непреднамеренно случайными. Это легко проверить - просто позвольте вашему коду играть с постоянным вводом (как первая реализованная модель). Если он проигрывает примерно в 50% раз, ваша модель, вероятно, случайная.

Модель, которую мы собираемся реализовать, этодискретная цепь Маркова, Он построен на простой идее. Допустим, у процесса есть два возможных состояния A и E. Сейчас мы находимся в состоянии A. Какова вероятность того, что мы останемся в состоянии A? Кроме того, какова вероятность того, чтобы перейти к состоянию E? Что касается цепи Маркова с двумя возможными состояниями, эти две вероятности должны быть суммированы до 1. Адекватно, будет две вероятности для текущего состояния E. Вы можете увидеть механизм на рисунке ниже.

https://en.wikipedia.org/wiki/Markov_chain

Отличная визуализация работы моделей МарковаВот,

Как мы можем использовать модель в контексте конкурса RPS? Естественным способом является анализвходивыходиз последнего раунда и попытаться предсказать следующийвход, Затем сделайте ход, который бьет его. Эта настройка указывает, что наше текущее состояние является парой, такой как «RP», и следующее состояние - это наш вывод. Это должно выглядеть так:

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

распадпараметр представляет собойобъем памятимодели. Значение один означает, что модель обладает идеальной памятью. Если назначить со значением от нуля до единицы, модель будетзабыватьболее ранние наблюдения и, следовательно, быстрее адаптируются к изменениям в поведении оппонентов.

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

Ниже вы можете найти всю игровую программу:

Вы можете играть с алгоритмом:

http://www.rpscontest.com/human/5706404883070976

Я должен предупредить вас. Эта модель не будет хорошо работать в конкурсе. Это слишком элементарно. Большинство алгоритмов принятия риска должны быть в состоянии противостоять этой стратегии. Вы можете увидеть его производительность по этой ссылке. Это всего лишь место для вас, чтобы начать приключение в конкурсе «Каменная бумага-ножницы». Вы можете изменять параметры, обучать множество моделей и выбирать лучших для игры, создавать ансамбли. Это зависит только от вашего воображения.Лучшие алгоритмы выигрывают около 80% матчей Вы можете проверить мой более 70% алгоритмВот, Вы можете сделать лучше?


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


Собираетесь ли вы принять участие в конкурсе? У вас есть идея для другого подхода? Дайте мне знать в разделе комментариев или хлопайте, если вам понравилась статья!

Кицунэ-кен - популярный японский вариант рок-бумага-ножницы.https://en.wikipedia.org/wiki/Rock-paper-scissors

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map