AlphaGo是如何实现的

前言


最近看了AlphaGo的论文:Mastering then Game of Go with Deep Nerual Networks and Tree Search。惊异于这些人的创造力和神经网络的强大,能够把围棋这种游戏做到这种地步。写一写论文里的方法和自己的思考吧,这篇文章基本都是论文中的观点,只是以我的视角去解读,有错误的地方欢迎指出。

关于棋盘对弈游戏


还记得在大学的时候,学校举办了一个人工智能挑战赛,题目是要做一个黑白棋的AI,当时运气好得了第一,不过并没有用到很厉害的方法。主要是搜索+估值,围棋和黑白棋一样,是具有完美信息的游戏,对于某一个状态(盘面),如果所有玩家完美发挥,下一步的选择是有一个最优值的,然而,对于人来说,要计算出所有走法是不现实的,对于计算机呢?情况或许会好一点,计算的能力当然比人更强一点,但实际上,还是不能穷举所有可能。

黑白棋的棋盘只有8x8,而围棋却是19x19,这不是几倍的差距,是好几个数量级的差距了。对于围棋来说,如果使用搜索的方法,搜索树大概包括 bd 个走子,其中 b 是搜索的广度(每个状态下的合法走法), d 是搜索的深度,那么 b250,d150 。想要穷举所有可能,以现在计算机的算力,估计得等好几辈子吧~

但是呢,我们可以去简化这个过程,不是去得到一个确定的,最优的结果,而是去寻找一个尽可能好的结果,这是可能的。首先,搜索树的深度可以通过价值函数来减少,价值函数是什么呢?对于某个到达的盘面状态 s ,可以通过一个价值函数 v(s) 来给出当前状态下,得到最终结果的预估值,这样,我们就可以把这个值近似于最终的结果,当搜索到一定深度的时候,就去求 v(s) ,并把它当作最终结果,不再往下搜索,达到减少搜索树深度的目的。其次,搜索的广度可以通过策略函数 p(a|s) 来减少,其实很简单,就是不要去搜索所有可能的走法,只挑一些看起来可能利益比较大的点去寻找,这也是人类下棋时的习惯。

蒙特卡洛树(MCTS)在棋盘搜索中的应用


首先说一下蒙特卡洛方法吧,这其实就是一个通过概率来求解的方法或者说思想。原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。
它非常强大和灵活,又相当简单易懂,很容易实现。对于许多问题来说,它往往是最简单的计算方法,有时甚至是唯一可行的方法。

举个,简单的例子,求圆周率 π ,就可以通过在下图的正方形区域内,随机 n 个点 (x,y) ,通过计算这些点与中心的距离,判断是否在圆内,最后通过面积公式和这些点在圆内的概率,估算圆周率的值。
这里写图片描述

知道了蒙特卡洛方法,再看蒙特卡洛树,其实就是把它移到树上罢了。它的思想也是通过进行大量的模拟(rollouts),最后想要将答案收敛到某个分支。蒙特卡洛树有四个步骤:
1. 选择(Selection):从根节点开始,不断递归选择最优的子节点,直到达到一个叶结点。选择最优子节点根据公式 vi+C×lnNni ,其中 vi 是节点估计的值, ni 是节点被访问的次数,而 N 则是其父节点已经被访问的总次数, C 是一个常量。
2. 扩展(Expansion):当前节点不是终止节点(游戏未结束),并且访问该节点次数超过某个设定的阈值,则在创建一个或多个子节点。
3. 模拟(Simulation):从当前叶结点开始,通过随机获采用某个走子策略 p ,模拟走子,直到游戏结束。
4. 回传(Backpropagation):根据模拟的最终结果,反向更新搜索树。

蒙特卡洛树就简单介绍到这里吧,有兴趣可以在网上找到别的资料。在AlphaGo出来之前,最强的围棋Ai就是基于MCTS的,AlphaGo也采用了MCTS的方法再加上神经网络的优化,最终完成了战胜人类职业选手的壮举。

结构


在学习AlphaGo的算法之前,对它的结构有一个大概的认知是很有必要的。我们要知道,它用了神经网络做了什么,用了MCTS又做了些什么。
1. 有监督学习策略网络 pσ :通过有监督学习(SL:supervised learning),让神经网络学习专业选手的走子,这个训练通过立即的反馈和高质量的梯度提供了快速有效的学习更新。
2. 可以快速决策的策略网络 pπ :这是为了让在下棋时可以更快地给出走子策略,毕竟大型的网络比较耗时,不过质量上比 pσ 要差一些。
3. 用增强学习训练策略网络 pρ :使用增强学习(RL:reinforcement learning)方法,通过自我对弈来优化策略网络的目的——由提高预测人类走子到提高胜率。
4. 训练价值网络 vθ :这个神经网络是用来预测一个盘面下,使用RL策略网络自我对弈的胜率。
5. MCTS:将策略网络与价值网络有效结合起来,对最优方案进行搜索。
这里写图片描述

策略网络的有监督学习


这个训练实际上是通过深度卷积神经网络和人类棋手的对弈数据,让AI能够预测专业选手的走子。SL策略网络为 pσ(a|s) ,对于输入的棋盘盘面

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值