专栏名称: FlyAI
目录
相关文章推荐
51好读  ›  专栏  ›  FlyAI

手把手教你搭建AlphaZero(使用Python和Keras)

FlyAI  · 掘金  ·  · 2018-03-09 06:01

正文

手把手教你搭建AlphaZero(使用Python和Keras)

安妮 允中 编译整理 本文经AI新媒体量子位(公众号ID:qbitai )授权转载,转载请联系出处。


AlphaZero,DeepMind阵营的最强棋士。


关于AlphaZero的理论分析已经不少,最近Applied Data Science的联合创始人David Foster,写出了一份详细的教程,教你如何搭建一套属于自己的AlphaZero系统。而且还附上了代码。


原文地址:https://medium.com/applied-data-science/how-to-build-your-own-alphazero-ai-using-python-and-keras-7f664945c188



如何构建自己的AlphaZero


首先,我们需要学习和理解AlphaGo Zero的原理。我之前写过一篇AlphaGo Zero的知识点速查手册可供参考,Tim Wheeler的博客中一篇文章给也讲的很详细,一并推荐给你。


知识点速查手册:


https://medium.com/applied-data-science/alphago-zero-explained-in-one-diagram-365f5abf67e0

Tim Wheeler博客:


http://tim.hibal.org/blog/alpha-zero-how-and-why-it-works/

代码


我将基于下面这个代码库进行讲解:


https://github.com/AppliedDataSciencePartners/DeepReinforcementLearning

我们应该从哪里开始构建自己的AlphaZero呢?


别急,可以从运行Jupyter notebook中run.ipynb的前两个panel开始。一旦它对游戏有了足够的定位,那么神经网络将开始训练。通过额外的自我对弈和训练,它将逐渐在预测游戏中的各个行为的价值和下一步行动上做得越来越好,从而做出更好的决策和更聪明的游戏。


现在,我们需要更详细地看看面前的代码,并且展示下AI是怎样随时间越来越厉害的。


Connect4


我们的算法将要学习如何玩Connect4(四子连珠)这个游戏。虽然不如围棋那样复杂,但也有4531985219092种游戏位置。



游戏规则很简单。玩家轮流在任何一栏的顶部布置自己的颜色。谁最先在垂直、水平或对角线上都放置了同一种颜色就获胜了,如果这种情况没有出现,那游戏就是平局。


下面是组成代码库的关键文件:


game.py


这个文件包含Connect4的游戏规则。


每个正方形都被分配了一个从0到41的数字,如下图所示:



game.py文件给除了从一种游戏状态到另一种状态的逻辑,并且给出了一个选择的动作。比如,考虑到empty board和38号动作,takeAction方法返回到一个新的游戏状态,也就是底部一行的中心位置。


你可以将game.py文件用任何符合相同API和算法的游戏文件替换掉,根据你给它的规则,通过自我对弈的方法学习。


run.ipynb


这个文件包含开启学习过程的代码。它通过算法中的主要环节加载游戏规则,并且由三个阶段组成:







请到「今天看啥」查看全文