资讯 人工智能
此为临时链接,仅用于文章预览,将在时失效

28 天自制你的 AlphaGo(二):训练策略网络,真正与之对弈

作者:彭博
2017/01/25 21:33

雷锋网注:本文作者彭博,Blink·禀临科技联合创始人。文章由雷锋网整理自作者知乎专栏,获授权发布,未经允许禁止转载。

上次我们介绍了围棋基础和如何搭建深度学习环境,这篇我们安装 TensorFlow,真正训练一下 AlphaGo v13 的 policy network,并且你还可以与它真正对弈,因为前几天已经有网友在做可以运行的 AlphaGo v13 的简化版:brilee/MuGo。所以这个过程真的已经很傻瓜化,毫不夸张地说,人人都可以拥有一只小狗了,只要你把棋谱喂给它,它就能学到棋谱的棋风。(本文是给大家快速找到感觉,后续我们会从头写代码,因为这位网友的代码真的很多 bug)

如果还没有装 CUDA 等等,请看前一篇《28 天自制你的 AlphaGo(一)》装好,记得把 cudnn 解压到 CUDA 的目录。TensorFlow 最近开始原生支持 Windows,安装很方便。

一、Windows 的安装

二、Mac 的安装

再看看 Mac 的安装。我是 OSX 10.11。

三、训练策略网络

激动人心的时刻到了,我们开始真正训练 policy network。下面都以 Windows 下面的操作为例。

1. 把网友做好的 AlphaGo v13 简化版下载下来:brilee/MuGo 。然后 pip install 了 argh 和 sgf。注意 gtp 要额外装:jtauber/gtp (下载下来后用 easy_install . 装)。

2. 然后下载一些用于学习的棋谱。围棋棋谱的通用格式是 SGF。比如,就下载 KGS 的对局棋谱吧:u-go.net 。我没有统计过,不过上面大概有十万局吧。从原理上说,棋谱越多,训练的质量就越有保证;但是,棋谱中对弈者的水平参差不齐,如何控制这一变量,做过深度学习的朋友心中会有答案。本篇先不谈技术细节,我们先继续走。

3. 下面提取棋谱的特征,并将其分类为训练集和测试集。先建立 data 子目录,把 SGF 拷贝进去。例如下载 2014 年的 13029 局棋谱,解压到 data 下面是 kgs-19-2014,那么就执行

python main.py preprocess data/kgs-19-2014

截至今天为止,你会发现它写的 chunk 比预想少很多,所以生成的训练数据很少。具体来说,棋谱的让子大于 4 会崩溃,棋谱没有写明贴目会崩溃,有时候棋谱里面的 [tt] 其实也代表 PASS,等等。做为作业,请自己一个个修复吧! SGF 格式的说明在此:SGF file format FF

4. 再建立一个 tmp 目录,然后开始训练 1 个周期:

python main.py train processed_data --save-file=tmp\savedmodel --epochs=1 --logdir=logs\my_training_run

5. 你会发现策略网络的预测准确率开始从 0 慢慢上升了! 然后可以随时继续训练,比如说继续训练 10 个周期就是:

python main.py train processed_data --read-file=tmp\savedmodel --save-file=tmp\savedmodel --epochs=10 --logdir=logs\my_training_run

28 天自制你的 AlphaGo(二):训练策略网络,真正与之对弈

6. 训练的时候,可以再开一个命令行,激活 python3,然后 tensorboard --logdir=logs 然后在浏览器打开 http://127.0.0.1:6006/ 可以看到训练的过程:

28 天自制你的 AlphaGo(二):训练策略网络,真正与之对弈

7. 一直训练到准确率增加缓慢为止,应该可以到接近 60%。

8. 测试一下走棋(如果你会 GTP 协议):python main.py gtp policy --read-file=tmp\savedmodel 这是纯网络输出。如果把 policy 改成 mcts 就是加入了蒙特卡洛树搜索的,棋力更高(但是截至今天为止,你执行会发现立刻退出,这位网友的程序 bug 真是太多了,我们以后再重写)。

9. 如果不会 GTP,还是下载 GoGui 围棋图形界面吧: Download GoGui from SourceForge.net 。然后执行:"C:\Program Files (x86)\GoGui\gogui-twogtp.exe" -black "python main.py gtp policy --read-file=tmp\savedmodel" -white "C:\Program Files (x86)\GoGui\gogui-display" -size 19 -komi 7.5 -verbose -auto,但是截至今天为止,你会发现它很快就报错退出......

10. 这是因为截至今天为止,代码有个 bug 是 strategies.py 的第 95 行的函数要改成 is_move_reasonable(position, move) 。然后......你亲手制造的小狗就可以运行了! 黑棋是小狗:

28 天自制你的 AlphaGo(二):训练策略网络,真正与之对弈

Behold,小狗已经学会了守角! 不过现在他还特别弱,因为没有搜索,容易死活出问题。

11. 如果不会下围棋,让 GnuGo 来玩玩吧,下载链接:gnugo.baduk.org/,比如解压到 C:\gnugo\gnugo.exe ,然后执行:"C:\Program Files (x86)\GoGui\gogui.exe" -size 19 -computer-both -auto -program "C:\Program Files (x86)\GoGui\gogui-twogtp.exe -black ""C:\gnugo\gnugo.exe --level 1 --mode gtp"" -white ""python main.py gtp policy --read-file=tmp\savedmodel"" -games 1 -size 19 -alternate -sgffile gnugo -verbose" 即可。你会发现下到后面也会崩溃,如果打开 GTP Shell 看看,是因为小狗还无法理解对方的 PASS,哈哈。

于是,这篇就到此吧,我们下一篇见。

长按图片保存图片,分享给好友或朋友圈

28 天自制你的 AlphaGo(二):训练策略网络,真正与之对弈

扫码查看文章

正在生成分享图...

取消
相关文章