AlphaZero_Gomoku 项目介绍
项目概述
AlphaZero_Gomoku 是一个基于 AlphaZero 算法的项目,用于训练 AI 玩一种简单的棋盘游戏——五子棋,也被称为 Gomoku 或 Gobang。与围棋或国际象棋相比,五子棋规则更简单,因此这个项目可以让开发者专注于 AlphaZero 的训练方案,并在普通个人电脑上实现一个高效的 AI 模型,花费时间仅需几小时。
背景参考
项目借鉴了以下两个重要科研成果:
- AlphaZero: 一种广泛适用于多种棋类游戏的自我对弈强化学习算法。
- AlphaGo Zero: 不借助人类知识,通过自我对弈掌握围棋的算法。
更新日志
- 2018年2月24日:增加了对 TensorFlow 的支持。
- 2018年1月17日:增加了对 PyTorch 的支持。
训练模型示例
下列是由训练后模型对弈产生的游戏步骤,每一步采用了 400 次蒙特卡洛树搜索(MCTS)模拟。示例图展示了模型在对弈过程中的决策能力。
系统需求
要与训练后的 AI 模型对战,只需安装以下软件:
- Python,版本不低于 2.7
- Numpy,版本不低于 1.11
若希望自行从零开始训练 AI 模型,还需要以下软件之一:
- Theano,版本不低于 0.7 和 Lasagne,版本不低于 0.1
- 或者 PyTorch,版本不低于 0.2.0
- 或者 TensorFlow
注意:如果 Theano 版本高于 0.7,请参考相关问题,以兼容 Lasagne,或强制将 Theano 降级至 0.7 版本。
若计划使用其他深度学习框架,只需重写 policy_value_net.py
文件即可。
快速开始
若要使用提供的模型进行人机对战,只需在项目目录下运行以下脚本即可:
python human_play.py
可以修改 human_play.py
以尝试不同的模型或纯 MCTS。
若要从零开始训练模型,以 Theano 和 Lasagne 为例,可直接运行:
python train.py
若使用 PyTorch 或 TensorFlow,需要先在 train.py
中修改一些代码:注释掉
from policy_value_net import PolicyValueNet # Theano 和 Lasagne
然后取消注释
# from policy_value_net_pytorch import PolicyValueNet # Pytorch
# 或
# from policy_value_net_tensorflow import PolicyValueNet # Tensorflow
然后运行 python train.py
进行训练。(在 PyTorch 中使用 GPU,需设置 use_gpu=True
并在 policy_value_net_pytorch.py
文件的 train_step
函数中使用 return loss.item(), entropy.item()
)
训练过程中,模型(best_policy.model 和 current_policy.model)会在若干次更新后自动保存。
训练提示
- 初学者可以从 6x6 棋盘和四子连珠规则开始。这种情况下,经过约500到1000次自对弈游戏,大约两小时后,就能获得相当不错的模型。
- 对于 8x8 棋盘和五子连珠的设定,可能需要 2000到3000次自对弈游戏,并在普通电脑上花费约两天时间。
进一步阅读
作者在中文平台上发布的有关实现细节的文章提供了更多的深入信息。