yurriy / renju

renju game AI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Проект "Рендзю"

Установка и запуск

make
(cd HTML5-Gomoku && python3 -m http.server) & (cd src && python3 server.py)

localhost:8000

Баранов Юрий, группа 153

Постановка задачи

В последнее время стало принято измерять прогресс в разработке искусственного интеллекта на сложных логических задачах, таких как игры с полной информацией. В качестве такой игры, подходят, например, шахматы. Впервые партия в шахматы человека против компьютера состоялась в 1996 году. До недавнего времени одной из игр, для которых не удавалось придумать стратегию, обыгрывающую профессиональных игроков, была игра Го. В 2015 году группа DeepMind разработала глубокую нейронную сеть AlphaGo, которой удалось это сделать. Данная нейронная сеть и методы, применявшиеся для ее обучения взяты за основу проекта. Задача состоит в создании и обучении аналогичной нейронной сети для игры Ренздю.

Цели:

  1. Освоить в теории и научиться реализовывать различные виды нейронных сетей.

  2. Придумать и реализовать стратегию игры в Рендзю.

  3. Улучшить навыки программирования на Python.

  4. Изучить популярные библиотеки и инструменты для анализа данных и вычислений.

Архитектура и методы обучения

  1. Будут изучены и реализованы сверточные нейронные сети.

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

  3. Сначала программа будет обучаться на партиях профессиональных игроков, затем дообучаться, играя со своими предыдущими версиями.

Технологические решения

  1. Основной язык - Python3. Выбор обусловлен простотой и наличием необходимых для машинного обучения библиотек.

  2. Для написания лабораторных работ и отчетов будут использованы Jupyter notebook и библиотека для работы с графиками matplotlib.

  3. Для написания и обучения нейронных сетей планируется использовань keras и thenano.

План реализации

Октябрь - Декабрь: Лабораторные работы по применению основных методов, которые планируется использовать.

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

Январь - Март: Сбор данных, реализация нейронной сети и обучение.

Март - Апрель: Реализация дерева поиска Монте Карло.

Апрель - Май: Дообучение и итоговое соревнование.

Отчет

Описание алгоритма

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

Описание архитектуры: 3 сверточных слоя (64, 32, 32 фильтра 5 х 5) и 3 полносвязных слоя. Каждый сверточный слой завершается активацией Relu и последующим слоем BatchNormalization. После каждого полносвязного слоя, кроме последнего, используется активация Relu, а за последним слоем следует Softmax. Сверточные и полносвязные слои разделяются слоем Dropout.

src/policy_network.py

Выбор хода происходит с помощью дерева поиска Монте Карло.

Корнем является текущее состояние доски, остальные вершины добавляются во время перехода в них. В каждом состоянии на глубине не более 4 от корня берутся 5 лучших ходов по предсказанию нейросети, для которых поддерживается средний выигрыш, изначально равный 0. Из корня многократно запускаются симуляции игр. Для выбора хода на первых 4 уровнях симуляции используется upper-confidence-bound-algorithm. На последующих уровнях выбирается наилучший по предсказанию нейросети ход. После каждой симуляции, завершенной победой или проигрышем, обновляются средние выигрыши для каждого выбранного хода. При достижении глубины 10, симуляция завершается без обновления весов. После завершения симуляций выбирается ход с максимальным средним выигрышем. В целях оптимизации добавлены две эвристики: проверка возможности выигрыша за 1 и 2 хода, в случае наличия которых, текущая симуляция завершается.

src/mst.py

В качестве графического интерфейса используется проект https://github.com/yyjhao/HTML5-Gomoku, для которого написан сервер src/server.py

Результаты соревнования среди 5 участников проекта (10 секунд на ход)

За черных (начинают игру): 3 победы, 1 поражение.

За белых: 2 ничьи, 2 поражения.

About

renju game AI


Languages

Language:Jupyter Notebook 92.3%Language:Python 7.6%Language:Makefile 0.0%