五子棋AI的炼成:原理篇

五子棋的AI玩法

也就那样

深度学习的神奇之处对于不是对应专业的人来说,可能并没有太深的体会,只是有听说把人类最优秀围棋选手都打败的人工智能AlphaGo,民间戏称阿尔法狗,它是以人类棋手的棋谱为数据进行深度学习得来的。再后来又出现了一个Alpha Zero打败了AlphaGo。而这个Alpha Zero则根本没有采用棋谱数据作为输入,而是采用自我博弈(self-play)的方式来进行学习,其性能甚至超过了有数据输入的AlphaGo。

深度学习的神奇之处对于不是对应专业的人来说,可能并没有太深的体会,只是有听说把人类最优秀围棋选手都打败的人工智能AlphaGo,民间戏称阿尔法狗,它是以人类棋手的棋谱为数据进行深度学习得来的。再后来又出现了一个Alpha Zero打败了AlphaGo。而这个Alpha Zero则根本没有采用棋谱数据作为输入,而是采用自我博弈(self-play)的方式来进行学习,其性能甚至超过了有数据输入的AlphaGo。

在Alpha Zero发表时曾因为没有数据输入而引起学术界的一番大辩论。辩论细节,我们就不细谈了,今天就介绍一番Alpha Zero的原理,以及后续会根据这个原理介绍五子棋AI的实现逻辑和相关实验。本文主要参考知乎:https://zhuanlan.zhihu.com/p/32089487(没有大佬探路,Alpha Zero这种东西简直无法下手)。

为什么要以五子棋(或井字棋)来讲述呢,有两点原因:1.围棋的胜负状态判定简直不要太难;2.以围棋19*19的棋盘来进行模型训练可不是CPU或GPU可以搞定的(5000个TPU进行自我博弈了解一下)。为了明白原理,我们可以直接讨论游戏规则较为简单、计算复杂度和实现复杂度都较低的五子棋。

首先摆一张图镇山,这个图表示Alpha Zero自我博弈的过程,Alpha Zero就是通过自我博弈不断地积累样本来迭代模型的。

首先我们需要明白基本的几点:Alpha Zero就是一个深度神经网络,可以把它视为一个黑盒子,向它给定一些输入数据,就会产生对应的输出。那么黑盒子是怎么来的呢?因为黑盒子本身是一堆参数的组合,为了能得到正确的参数设置,需要输入一些数据和这些数据对应的标准答案,算法就能根据标准答案和对应输出来学习黑盒子里面的参数。

对Alpha Zero而言,在任何时候只需要输入现在棋盘上的状态,最终目的都是对当前玩家(player)进行最终棋局的胜负判定,同时得到当前可行步获胜的落子概率;胜负这个事,只要棋下到位是基本就是确定的了,因此是有一个标准答案的,那这个落子获胜概率的标准答案该怎么确定?精确的计算方法就是枚举出所有可能的落子方式,然后计算胜负的概率,然而这样的复杂度简直太高。因此Alpha Zero采用了一种方式叫MCTS,意思就是贪心策略。

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

这个策略的意思就是每走一步,可以根据原始模型预测出一个初始的胜率,挑其中胜率最大的一个落子方式,继续进行预测下一步落子的胜率,同时下一步落子的胜率会根据一定的方式反馈给上一步的胜率,也就是通过模型预测、选择下一步、预测、反馈胜率、选择下一步 这样一直迭代到游戏结束,得到的胜率就是最初落子的胜率,这样的枚举方式大大降低了计算复杂度,同时得到了有效的胜率值,而神经网络则通过参数学习尽量去拟合这个胜率,只要网络中的参数学习好了,那么就可以直接预测下一步落子的胜率了,机器要做的就是挑选落子胜率最大的地方落子就是了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180903G01YNB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券