alphago理解

**

alphago理解

**
1alphago总体架构
对于围棋,核心需要解决两个问题:
1)下一手最佳下在哪里?–》策略网络回答
2)下完一步棋后胜率是多少?-》价值网络回答
AlphaGo首先通过人类高手棋谱,得到初步的策略网络;在通过策略网络,得到价值网络;最后通过不断的自我对弈,通过策略改善价值,通过价值调整策略,棋力不断增强
AlphaGo zero则通过更精心的设计架构和自我对弈学习细节,去除了学习人类棋谱的过程,直接从0开始不断循环进步,从而达到更强的棋力
2策略网络
2.1原理
其解决的是下一步下在哪里的问题,最简单的想法考虑通过大量人类高手棋谱进行训练,从学习的棋谱中总结更高层次的规律,之后在通过不断的自我对弈强化学习,使得对于任何局面,策略网络都能给出不错的选点。
我们也是这样做的,但机器眼中是什么样子呢,或者说策略网应该设计成什么样子呢?以v13为例,它现将棋盘编码成48张1919张图像,然后通过多层卷积层,输出至softmax来预测棋盘361(1919)个点下棋的概率
2.2理解
卷积其实可以类比物理中的偏光镜,其可以反映出物体某一特定规律的情况(特征)。对于普通图像,卷积层可能分别代表图像的空间位置,颜色,纹理等,图像经过卷积层对应的卷积核矩阵便可以得到相关特征;对于围棋来说,卷积层可能分别代表本方棋子,对方棋子,一口气,两口气等,图像经过卷积层对应的卷
积核矩阵可以算出其对应分数,进而得到各点概率
2.3弱点
学习的棋谱数量有限,因此会有未见过的局面;同时,有时会知其然而不知其所以然,只学到了表面。因为高手棋谱往往不会考虑征子,而是做更长远的谋划,人类便可能利用这个漏洞,让机器误以为胜率很高,但突然征子使其胜率陡然直下。初级办法是考虑手动加入规则,但更高级的办法是通过自我对弈,如新版alphago zero就几乎不会出现这样失误,因为见过局面太多了
3价值网络
3.1快速走子估值
其实更为关键的一个问题是价值网需要回答的下完一步棋胜率多少?如果只是通过人类棋谱学习总结出策略,那么机器最高境界也只能是无限接近与人类水平而无法超越,但现实不是这样,像最新的alphago zero甚至不需要人类棋谱,从0开始循环进步,所以单纯依靠策略网是不够的。
但如何回答下完一步棋之后的胜率呢?一种很自然的想法是既然看不懂局势,那么凭借电脑超强算力不妨将棋局走到底,看最终的胜负情况,但围棋数量级是10^170,当前电脑不可能穷尽所有情况进行预测,那能否考虑只对某一局面走到底一次呢?即快速走子估值,具体而言就是通过一个走子极快但棋力极弱的策略,把搜索树种某个局面快速走到底一次,记下最后的胜负情况。
很显然这个估值存在非常大的噪音(随机性),估值很不准确,但走多次会减慢速度,在有限时间更不利于棋力,除非局面逐渐明朗或棋局接近尾声,才会逐渐准确。但更多时候需要走几百步,同时还有一个致命问题,电脑不容易理解什么叫走到底,所以电脑几乎会走到将棋盘填满才判断胜负,实际对局甚至填子自杀。
3.2蒙特卡洛数搜索
在alphago出现前,mcts就是采用快速走子方法,尽管其使用如此粗略的估值方法,在配合多种技巧,也可以是电脑棋力达到业余水平。那它是怎么做的呢?
3.2.1极大极小值搜索
先不考虑下棋胜率如何获得,已经知道胜率分布如下,我想获得最高胜率该选哪个?从结果来看0.6最大,选右边,但是当对方会的话,会让你只能选0.42,而假如选左边,大胜率则有0.48;即真实胜率只有0.48.
对于围棋而言,其为零和游戏,假设为黑棋,在搜索树中,每当黑棋走时,选概率最大的,当白棋走时,选概率最小的,即极大极小值搜索
在这里插入图片描述
3.2.2mcts
但直接将极大极小值搜索运用在围棋中,会遇到两个问题:1棋盘情况太多,搜索树太大;2除非将搜索树走到底,否者很难评估胜率;那mcts如何解决的呢?
它可以给出一个局面评估(不一定准),但部分解决了第二个问题
搜索树会更好的集中在更值得搜索的区域(也不一定准),综合了深度优先与广度优先
具体流程:
在这里插入图片描述

我们将不断重复一个过程(很多万次):
1)选择。从根节点往下走,每次都选一个“最值得看的子节点”(见3.2.3),直到来到一个“存在未扩展的子节点”的节点,如图中的 3/3 节点。什么叫做“存在未扩展的子节点”,其实就是指这个局面存在未走过的后续着法。
2)扩展,我们给这个节点加上一个 0/0 子节点,对应之前所说的“未扩展的子节点”,就是还没有试过的一个着法。
3)模拟。从上面这个没有试过的着法开始,用快速走子策略走到底,得到一个胜负结果。按照普遍的观点,快速走子策略适合选择一个棋力很弱但走子很快的策略。
4)回溯。把模拟的结果加到它的所有父节点上。
3.2.3节点选择
快速走子:如果轮到黑棋走,就选对于黑棋有利的;如果轮到白棋走,就选对于黑棋最不利的。但不能太贪心,不能每次都只选择“最有利的/最不利的”,因为这会意味着搜索树的广度不够,容易忽略实际更好的选择。
在这里插入图片描述

其中 x 是节点的当前胜率估计(要考虑当前是黑棋走还是白棋走!),N 是节点的访问次数。C 是一个常数。C 越大就越偏向于广度搜索,C 越小就越偏向于深度搜索。
或许这里会产生疑问,我们不是之前训练了一个策略网络吗,为什么不用其来控制节点选择,而是直接快速走子呢?
其中一个这在alphago出现前,还没有出现神经网,其次更为关键的是虽然策略网络棋力远远更高,选点更准确,但是运行速度远远更慢,同时会大大减少电脑搜索的局面数,最终在相同的时间,估值的准确度反而降低
3.3价值网络
价值网络直接学会每个局面对应的最终胜负情况,如同人类棋手一般,电脑无需把棋局走到底,只需看一眼,就能判断局势优劣。其目标是提供估值函数,而完美的估值函数,即指某个局面在双方完美下完的后续变化后的结果。但这个估值函数怎么得到?alphago做法是通过自我对弈将后续变化下完,然后用棋局的结果训练价值网络
对于旧版alphago会将价值网络和快速走子综合考虑,而在alphago zero通过多任务学习和更深的残差网络,价值网络精度更高,而快速走子的随机性反而可能导致棋力下降,故只用价值网络
4训练过程
4.1原版alphago:策略梯度方法
1:初步训练:通过人类高手棋谱,获得策略网络
2:强化训练:通过策略梯度方法,增强策略网络
3:训练价值网络:使用自我对弈生成的棋谱局面和最终结果完成训练,难点在于需生成大量自我对弈棋谱,对运算资源需求很高
4.2新版alphago:蒙特卡洛数搜索学习
1:使用mcts进行自我对弈
Mcts在不同的落子位置的停留时间不同,其概率与时间有个函数关系,通常来说,时间越长,棋力越强,但局面不够多样性,时间越短,落子越随机,棋力越差,选取适当参数,在棋力与多样性遭到平衡,有利于训练
在这里插入图片描述
2:将自我对弈棋局用于训练策略网络和价值网络
在这里插入图片描述
3训练后得到更强的网络,生成更高质量的自我对弈棋谱,重复这一过程,棋力越来越强

5深化理解
5.1从搜索树角度看策略网络与价值网络
从搜索树角度看围棋,其难点在于搜索树极广,极深,且局面极难评估。Alpahgo的秘诀并不是暴力搜索,而是使用深度卷积网模拟人类的直觉,将搜索树大大缩减
策略网络:负责减少搜索广度,每一层只需搜索少量节点;
价值网络:负责减少搜索深度,无需将棋局下到底即可得出对于局势判断
5.2如果策略网络与价值网络所给结果不一致
回到开始的问题,策略网与价值网分别解决的是什么问题?
策略网络:下一步最佳的下的位置;价值网络:最后的胜率
对于策略网络结果其实是将搜索集中在最有希望的位置,即通常来说策略网选的位置胜率最大,这样mcts就可以避免过多的搜索,但是,根据mcts原理,它仍有希望有时去访问这些点,以防看漏,只是可能性很低,而价值网才是决定胜率,当局面错综复杂,策略网与价值网估值可能出现问题,但mcts可以保证长时间后收敛到最优解,即给alphago足够长时间,他最终会察觉到自己问题
5.3强化学习在 AlphaGo 中究竟是怎么用的?
如果我赢了棋,就说明这次我选择的策略是正确的。所以可以对于这次所经历的每一个局面,都加强选择这局的走法的概率。
如果我输了棋,就说明这次我选择的策略是错误的。所以可以对于这次所经历的每一个局面,都减少选择这局的走法的概率。
但是这里好像有问题。这是不是太傻了?也许白棋并不是败在开局,而是败在中盘的某一步?也许黑棋并不是真的这次走对了策略,而是白棋看漏了一步或者说白棋如果走对是可以赢的?
以上说的很正确。但是,反过来想,如果黑棋的走法可以让白棋后面打勺的概率增加,那也不错啊。另一方面,如果白棋发现自己目前的策略容易进入自己不容易掌握的局面,那么尽管确实可能有完美的招数隐藏在里面,那白棋也不妨一开始就去避免这种局面吧。而且,胜和负的影响可以相互抵消,所以在经过大量对局后,这个过程是比较稳定的。比如说如果某个开局的后续胜率经统计是50%,那它就不会被改变;但如果不是50%,这种改变就有一定道理。这个过程,有点像人类棋手的“找到适合自己的棋风”的过程。毫无疑问,现在的 AlphaGo 已经找到了十分适合自己的棋风,它确实是会扬长避短的。
但是它的问题是有可能陷入局部的最优,即对付自己有效,不代表对付其他人有效,因此 AlphaGo 论文中会建立一个对手池(包括整个进化过程中形成的所有策略),保证新策略尽量对于不同对手都有效。在这个基础上,可以做各种各样的改进,例如配合未来的价值网络,更清楚地看到自己的败着在哪里,而不是傻傻地把所有概率都同样修改,如reinforce算法:当价值网络判断当前局势很差,那么后续着法就不能成为失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值