本博文使用的是GitHub上的MuGo开源程序,使用的是纯Python语言,主要是AlphaGo的一个复制的版本。项目的地址请看后面的参考文献部分。
AlphaGo主要使用了三个神经网络,即第一个速度缓慢但是准确的蒙特卡洛搜索树,主要用来预测人来的棋子的移动。第二个主要是小的一个策略网络但是速度很快。第三个是一个价值网络,只是用来计算胜率的不能用来预测棋子的移动。具体的看下面参考文献列出来的Google的paper。
废话了这么多,下面我们就开始操作纯Python版的简易AlphoGo吧。
1. 首先是安装好TensorFlow,安装教程这里就不多说了,具体的看这个链接:https://www.tensorflow.org/get_started/os_setup
2. 下载SGF文件并且预处理,可以在这个网址上面下载最近15年的围棋文件:https://u-go.net/gamerecords/
3. 预处理SGF文件,在与处理的时候可能会提示缺少例如sgf 包,gtp包之类的,用pip对应的安装上去就可以了。
python main.py preprocess ~/kgs-19-2016-12-new/
这里的 ~/kgs-19-2016-12-new/ 的意思是我上面下载下来的SGF文件,用unzip解压之后的文件夹为 kgs-19-2016-12-new, 里面的文件就是 以sgf结尾的文件。
4. 用策略网络来监督学习
python main.py train processed_data/ --save-file=/tmp/savedmodel --epochs=400 --logdir=logs/my_training_run
当上面的训练步骤结束之后,网络的模型就会被保存在save-file对应的文件夹之中,在训练过程中,当然也可以开启TensorFlow的TensorBoard来查看训练的过程。
tensorboard --logdir=logs/
5. 在训练完之后就可以来玩围棋了
如果要使用原始的策略网络,使用下面的命令
python main.py gtp policy --read-file=/tmp/savedmodel
如果使用蒙特卡洛搜索树,使用下面的命令
python main.py gtp mcts --read-file=/tmp/savedmodel
另一个可视化的可以用MuGo来玩的方法是下载GoGUI:
https://sourceforge.net/projects/gogui/, 启动的方法是
gogui-twogtp -black 'python main.py gtp policy --read-file=/tmp/savedmodel' -white 'gogui-display' -size 19 -komi 7.5 -verbose -auto
还有一种可以可视化下围棋的方法是使用GnuGo
BLACK="gnugo --mode gtp"
WHITE="python main.py gtp policy --read-file=/tmp/savedmodel"
TWOGTP="gogui-twogtp -black \"$BLACK\" -white \"$WHITE\" -games 10 \
-size 19 -alternate -sgffile gnugo"
gogui -size 19 -program "$TWOGTP" -computer-both -auto
———–EOF————
参考文献:
https://github.com/brilee/MuGo
http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html (Mastering the game of Go with deep neural networks and tree search)
https://arxiv.org/abs/1412.6564 (Move Evaluation in Go Using Deep Convolutional Neural Networks)