模仿AlphaGo围棋博弈,MuGo实现策略网络以及蒙特卡洛树搜索

AlphaGo数次击败了人类围棋高手,大家是不是摩拳擦掌,想对Alphago一探究竟。
网友brliee的作品MuGO实现了AlphaGo的策略网络(policy)和蒙塔卡罗树搜索(mcts)两大主要策略,并且能够训练自己的深度神经网络,可视化在线对弈。本文即是MuGo的实现过程,一起来看看吧。
MuGo标题镇楼:

本文实现环境:

  • ubuntu14.04
  • Python 3.5.2 |Anaconda custom (64-bit)
  • tensorflow1.2.1
  • gogui1.4.9
  • 环境配置及其他工具配置见下文

主要环境配置:

1.tensorflow

tensorflow相较于其他深度学习框架,配置十分简单,只需在Terminal中使用pip安装指令即可

 
pip3 install tensorflow

我先后在win10、ubuntu14.04虚拟机、ubuntu14.04台式都顺利配置成功,没有遇到过多Bug。如过你tensorflow配置不顺利,可以参看 官网教程也可参看 网友博文,安装成功后,不要忘记测试一下,首先进入python环境,然后执行
 
python
import tensorflow as tf
hello = tf.constant('i want alphago')
sess = tf.Session()
print sess.run(hello)

打印出“i want alphago”,说明tensorflow安装成功,如图。

2.gogui

  • MuGo的可视化采用了多种方法,我采用的是gogui这一款在线围棋博弈程序。如果你直接Google会发现该软件已经下线,但仍有下载途径:gogui1.4.9下载
  • 此处有坑:请下载zip压缩包版本,否则现在tar.gz版本的话,使用时会报错。
    下载完成后解压,进入解压后文件夹,执行:
     
    sudo ./install.sh


    如果什么错都没有,基本可以说安装成功了,测试gogui是否安装成功:
gogui-twogtp -black 'gogui-display' -white 'gogui-display' -size 19 -komi 7.5 -verbose -auto


出现棋盘,说明安装成功。

3.其他必要工具安装见下文

获取MuGo源码:

1.源码获取

下载地址:https://github.com/brilee/MuGo ,下载后unzip解压即可。

2.安装需要的工具

  • 打开MuGo-master文件夹中的requirements.txt 逐个安装所需要的工具(一定要安装),其中的tensorflow刚才已经安装过了。
  • 这里使用pip命令即可轻松安装,例如要安装argh:
  • pip install argh

MuGo代码实现:

如果以上均安装成功的话,那么现在就可以来跑一跑作者已经训练好了的小狗了

1.自带Demo实现

命令行进入MuGo-master文件夹,执行:

gogui-twogtp -black 'python3 main.py gtp policy --read-file=saved_models/20170718' -white 'gogui-display' -size 19 -komi 7.5 -verbose -auto


white加载的是交互程序,也就是你;black选手就是main.py中的plicy策略网络,运用的是saved_models文件夹下,名为20170718的训练好的数据。另外,程序实现必须用python3

执行命令后出现了棋盘,恭喜你,游戏加载成功,你可以和模仿的alphago程序一决高下了,注意:此时使用的是策略网络。

也可以将plicy改为mcts,此时运用蒙特卡洛树搜索,速度较策略网络慢一点。

2.训练自己的小狗

以上加载已经训练好的数据,跑通了程序,但是这还不算,程序最关键的在于能够训练自己的网络,下面来训练自己的网络。

(1)下载对弈棋局

这个网站上下载训练数据,上面有近15年的SGF格式围棋棋盘,任选一年zip格式下载,解压得到kgs开头的文件夹,删除里面的大部分,剩余30个左右文件即可(后面你就知道为啥)。

(2)预处理训练数据

在MuGo-master文件夹下面,新建data子文件夹,把刚才解压的kgs开头的文件夹放入data中,执行预处理训练数据命令:

 
python main.py preprocess data/kgs-*

执行完毕,MuGo-master下面出现了processed_data文件夹,里面就是预处理后的数据。

(3)训练

在MuGo-master文件夹下面,新建tmp子文件夹,用来存放训练数据。执行:

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


出现:

说明正在训练,如果你刚才没有删除训练数据中的大部分,那你估计要等上20个小时,如果你删除了大部分数据,几分钟就可以训练完毕。tmp文件夹中出现了几个名为savedmodel的文件,就是训练好的数据。注意:训练需要很久,根据棋盘数量定,一年的棋盘,用cpu训练怎么也得几天,而且,如果没有训练完毕,ctrl+c强行中断,就算出现了训练数据,也是使用不了的。我用cpu训练的时候,感觉cpu要疯,也不想等,就减少数据量仅做测试。


启动gogui引擎,加载训练好的数据,实现对弈。

gogui-twogtp -black 'python main.py gtp policy --read-file=tmp/savedmodel' -white 'gogui-display' -size 19 -komi 7.5 -verbose -auto

OK! 到此为止,已经完成了程序的全部功能,如何使用GPU加速还有待探究。

参考:

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
计算机博弈理论的研究希望计算机能够像人一样、思维、判断和推理,并能够做出理性的决策。棋类博弈由于规则明确、竞技性高,且人类选手往往胜于计算机等原因,在计算机博弈理论的研究过程中一直受到重要关注和深入的探讨,并促进了计算机博弈理论的发展。传统的基于博弈树搜索和静态评估的博弈方法在国际象棋、中国象棋等棋类项目中获得了明显的成功,该类项目的盘面估计与博弈树搜索过程相对独立,棋子在盘面中的作用相对明确,且棋局中的专家规则相对较为容易概括和总结。 然而传统的博弈理论在计算机围棋博弈中遇到了明显的困难:围棋具有巨大的搜索空间;盘面评估与博弈树搜索紧密相关,只能通过对将来落子的可能性进行分析才能准确地确定棋子之间的关系;与此同时,高层次的围棋知识也很难归纳,归纳之后常有例外,并且在手工构建围棋知识和规则的过程中常会出现矛盾而导致不一致性。这些独特的因素为围棋及拥有类似性质的计算机博弈问题研究带来了新的挑战。 从2006年开始,计算机围棋博弈的相关研究有了跨越式的发展,基于蒙特卡罗模拟的博弈树搜索算法获得了重要的成功,并开始逐步引领计算机博弈理论研究的方向。在本章,我们将介绍蒙特卡罗博弈理论及其在围棋等棋类博弈中的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值