基于alphazero算法的自学习六角棋盘游戏ai
azalea的Python项目详细描述
杜鹃花
playing to learn to play
杜鹃花是对AlphaZero game AI的重新诠释。 用于Hex board game的学习算法。
功能
- 直接重新实现AlphaZero算法,除了 对于MCTS并行化(见下文)
- 六角棋盘游戏的预训模型
- 通过numba jit加速实现快速mcts。
- 快速十六进制游戏移动生成通过numba实现。
- 并行自播放,在训练期间使nvidia v100 gpu饱和
- 通过循环赛进行人工智能政策评估,也可并行化
- 在ubuntu 16.04上测试
- 需要python 3.6和pytorch 0.4
与已发布的AlphaZero的差异
- 仅限单个GPU实现-在NVIDIA V100上测试,具有8个CPU 用于移动生成和MCT,以及用于策略网络的1个GPU。
- 只实现了十六进制游戏,尽管代码支持添加更多 游戏。新游戏需要两个组件:移动生成器和 策略网络,板输入和移动输出调整为 新游戏。
- MCT模拟不是在并行线程中运行的,而是, 自玩游戏是在平行的过程中进行的。这是为了避免 仍然需要多线程mcts实现 保持快速的训练速度并使GPU饱和。
- MCT模拟和电路板评估根据
search_batch_size
配置参数。“使用“虚拟损失” 就像在alphazero中一样,增加搜索的多样性。
安装
克隆存储库并使用conda安装依赖项:
git clone https://github.com/jseppanen/azalea.git
conda env create -n azalea
source activate azalea
默认的environment.yml
安装GPU包,但您可以选择
environment-cpu.yml
在笔记本电脑上测试。
与预先训练的模型比赛
python play.py models/hex11-20180712-3362.policy.pth
这将加载模型并开始播放,请求您移动。这个
列标记为A–K,行标记为1–11。第一个玩家,玩X
,
正在尝试绘制通过板的垂直连接路径,而
第二个玩家用O
绘制一条水平路径。
O O O O X . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . X . . . . . .
. . . . . X . . . . .
. . . . . . . . . . .
. . . . X . . . . . .
. . . . . . . . . . .
. . . X . . . . . . .
x . . . . . . . . . . .
o\\ . . . . . . . . . . .
last move: e1
Your move?
模特训练
python train.py --config config/hex11_train_config.yml --rundir runs/train
模型比较
python compare.py --config config/hex11_eval_config.yml --rundir runs/compare <mode1> <model2> [model3] ...
型号选择
python tune.py
参考文献
- Mastering the Game of Go without Human Knowledge
- Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm