大家好,东东来为大家解答以上问题,aiphago怎么读,aiphago很多人还不知道,现在让我们一起来看看吧!
阿尔法为什么这么厉害?最近AlphaGo的世纪大战引人关注,它前三局战胜了李世石。那么AlphaGo的实力到底如何?内容来自脸书人工智能研究员田远东,他曾在Google X部门工作。本文是他在人机大战前发表在知乎上的分析。
最近仔细看了AlphaGo在《自然》杂志上发表的文章,写了一些分析和大家分享。
AlphaGo这个系统主要由几个部分组成:
政策网络,鉴于当前形势,预测/采样下一步棋。
快速卷展,目标和1一样,但速度比1快1000倍,适当牺牲棋质。
价值网,鉴于目前情况,估计是百盛还是黑泽。
蒙特卡罗树搜索(MCTS)将上述三部分连接起来,形成一个完整的系统。
我们的暗黑森林和AlphaGo也是用4构建的系统。与AlphaGo相比,DarkForest加强了1,但在训练中失去了2和3,然后用开源软件Pachi的默认策略代替了2的功能。下面介绍几个部分。
1.象棋网络
国际象棋网络将当前情况作为输入来预测/采样下一步棋。它的预测不仅给出了最强的手牌,还对棋盘上所有可能的下一步棋给出了分数。棋盘上有361个点,它给出了361个数字。好的招式得分比差的招式得分高。
黑暗森林在这一部分有所创新。它通过在训练时预测三步而不是一步来提高策略输出的质量,相当于他们使用强化学习进行自我博弈后获得的RL网络的效果。当然,他们在最终的系统中并没有使用强化学习网络,而是使用了通过训练直接学习的网络(SL网络)。原因是RL网络输出的棋步缺乏变化,不利于搜索。
有意思的是,AlphaGo为了速度,只使用宽度为192的网络,而没有使用宽度为384的最佳网络(见图2(a)),所以如果GPU更快(或更多),AlphaGo肯定会变强。
所谓0.1秒的步骤,也就是纯粹使用这样的网络,给出了可信度最高的合法方法。这种做法根本不做搜索,但是全局观很强,不会陷入局部争斗。说它塑造了“棋感”也没有错。我们把DarkForest的棋网直接放在KGS上,它有3d的水平,让大家惊叹不已。
可以说,这波围棋AI的突破,主要是因为棋牌网的突破。这在以前是不可想象的。过去是基于规则,或者基于局部形状和简单的线性分类器训练。有必要慢慢调整参数年取得进展。
当然,只用象棋也有很多问题。就我们在暗黑森林上看到的,会有不分大小的无谓掠夺,无谓的先起飞,无视地方生死,错杀等等。这就像一个大师下棋,没有认真思考。因为下棋网没有价值判断功能,只是靠“直觉”下棋。只有加入搜索后,计算机才有价值判断的能力。
2.快走。
那么,有了下棋网,为什么还要快走呢?原因有二。第一,棋牌网运行速度比较慢。AlphaGo说是3毫秒,和我们差不多。但是快走可以做到几微秒,差1000倍。所以在棋牌网没有返回的时候让CPU先搜索,等棋牌网返回更好的登陆后再更新相应的登陆信息是很重要的。
其次,快走可以用来评价盘面。因为有天文数字的可能情况,所以走到底的搜索是没有希望的。在一定程度上,需要对现有情况进行评估。在没有估值网络的时候,不像郭襄可以通过统计棋子的得分来对棋盘做出更准确的估值,围棋的棋盘评价还得通过模拟走法来进行,从当前的棋盘一直走到终点,不考虑岔路口,然后把胜负值作为当前棋盘价值的一个估值。
这里有一个权衡:同时,模拟步行者的质量很高,
为了达到这个目标,神经网络的模型就显得太慢,还是要用传统的局部特征匹配(local pattern matching)加线性回归(logistic regression)的方法,这办法虽然不新但非常好使,几乎所有的广告推荐,竞价排名,新闻排序,都是用的它。
与更为传统的基于规则的方案相比,它在吸纳了众多高手对局之后就具备了用梯度下降法自动调参的能力,所以性能提高起来会更快更省心。AlphaGo用这个办法达到了2微秒的走子速度和24.2%的走子准确率。24.2%的意思是说它的最好预测和围棋高手的下子有0.242的概率是重合的, 相比之下,走棋网络在GPU上用2毫秒能达到57%的准确率。这里,我们就看到了走子速度和精度的权衡。
和训练深度学习模型不同,快速走子用到了局部特征匹配,自然需要一些围棋的领域知识来选择局部特征。对此AlphaGo只提供了局部特征的数目(见Extended Table 4),而没有说明特征的具体细节。我最近也实验了他们的办法,达到了25.1%的准确率和4-5微秒的走子速度,然而全系统整合下来并没有复现他们的水平。
我感觉上24.2%并不能完全概括他们快速走子的棋力,因为只要走错关键的一步,局面判断就完全错误了;而图2(b)更能体现他们快速走子对盘面形势估计的精确度,要能达到他们图2(b)这样的水准,比简单地匹配24.2%要做更多的工作,而他们并未在文章中强调这一点。
在AlphaGo有了快速走子之后,不需要走棋网络和估值网络,不借助任何深度学习和GPU的帮助,不使用增强学习,在单机上就已经达到了3d的水平(见Extended Table 7倒数第二行),这是相当厉害的了。任何使用传统方法在单机上达到这个水平的围棋程序,都需要花费数年的时间。在AlphaGo之前,Aja Huang曾经自己写过非常不错的围棋程序,在这方面相信是有很多的积累的。
3、估值网络
AlphaGo的估值网络可以说是锦上添花的部分,从Fig 2(b)和Extended Table 7来看,没有它AlphaGo也不会变得太弱,至少还是会在7d-8d的水平。少了估值网络,等级分少了480分,但是少了走棋网络,等级分就会少掉800至1000分。特别有意思的是,如果只用估值网络来评估局面(2177),那其效果还不及只用快速走子(2416),只有将两个合起来才有更大的提高。
我的猜测是, 估值网络和快速走子对盘面估计是互补的,在棋局一开始时,大家下得比较和气,估值网络会比较重要;但在有复杂的死活或是对杀时,通过快速走子来估计盘面就变得更重要了。 考虑到估值网络是整个系统中最难训练的部分(需要三千万局自我对局),我猜测它是最晚做出来并且最有可能能进一步提高的。
关于估值网络训练数据的生成,值得注意的是文章中的附录小字部分。与走棋网络不同,每一盘棋只取一个样本来训练以避免过拟合,不然对同一对局而言输入稍有不同而输出都相同,对训练是非常不利的。这就是为什么需要三千万局,而非三千万个盘面的原因。对于每局自我对局,取样本是很有讲究的,先用SL network保证走棋的多样性,然后随机走子,取盘面,然后用更精确的RL network走到底以得到最正确的胜负估计。当然这样做的效果比用单一网络相比好多少,我不好说。
一个让我吃惊的地方是, 他们完全没有做任何局部死活/对杀分析,纯粹是用暴力训练法训练出一个相当不错的估值网络。 这在一定程度上说明深度卷积网络(DCNN)有自动将问题分解成子问题,并分别解决的能力。
另外,我猜测他们在取训练样本时,判定最终胜负用的是中国规则。所以说三月和李世石对局的时候也要求用中国规则,不然如果换成别的规则,就需要重新训练估值网络(虽然我估计结果差距不会太大)。至于为什么一开始就用的中国规则,我的猜测是编程非常方便(我在写DarkForest的时候也是这样觉得的)。
4、蒙特卡罗树搜索
这部分基本用的是传统方法,没有太多可以评论的,他们用的是带先验的UCT,即先考虑DCNN认为比较好的着法,然后等到每个着法探索次数多了,选择更相信探索得来的胜率值。而DarkForest则直接选了DCNN推荐的前3或是前5的着法进行搜索。我初步试验下来效果差不多,当然他们的办法更灵活些,在允许使用大量搜索次数的情况下,他们的办法可以找到一些DCNN认为不好但却对局面至关重要的着法。
一个有趣的地方是在每次搜索到叶子节点时,没有立即展开叶子节点,而是等到访问次数到达一定数目(40)才展开,这样避免产生太多的分支, 分散搜索的注意力,也能节省GPU的宝贵资源,同时在展开时,对叶节点的盘面估值会更准确些。除此之外,他们也用了一些技巧,以在搜索一开始时,避免多个线程同时搜索一路变化,这部分我们在DarkForest中也注意到了,并且做了改进。
5、总结
总的来说,这整篇文章是一个系统性的工作,而不是一两个小点有了突破就能达到的胜利。在成功背后,是作者们,特别是两位第一作者David Silver和Aja Huang,在博士阶段及毕业以后五年以上的积累,非一朝一夕所能完成的。他们能做出AlphaGo并享有现在的荣誉,是实至名归的。
从以上分析也可以看出,与之前的围棋系统相比,AlphaGo较少依赖围棋的领域知识,但还远未达到通用系统的程度。职业棋手可以在看过了寥寥几局之后明白对手的风格并采取相应策略,一位资深游戏玩家也可以在玩一个新游戏几次后很快上手, 但到目前为止,人工智能系统要达到人类水平,还是需要大量样本的训练的。可以说,没有千年来众多棋手在围棋上的积累,就没有围棋AI的今天。
在AlphaGo中,增强学习(Reinforcement Learning)所扮演的角色并没有想像中那么大。在理想情况下,我们希望人工智能系统能在对局中动态地适应环境和对手的招式并且找到办法反制之,但是在AlphaGo中增强学习更多地是用于提供更多质量更好的样本,给有监督学习(Supervised Learning)以训练出更好的模型。在这方面增强学习还有很长的路要走。
另外,据他们的文章所言,AlphaGo整个系统在单机上已具有了职业水平,若是谷歌愿意开几万台机器和李世石对决(这对它来说再容易不过了,改个参数就行),相信比赛会非常精彩。
下面是根据读者提问做的一些更新。
问题1:“Alphago的MCTS做rollout的时候,除了使用快速走子,还用了搜索树的已有部分,看起来像是AMAF/RAVE反过来:AMAF是把快速走子的信息传导到树的其它无关部分,Alphago是把树的其它无关部分拿来增强快速走子。我怀疑这是不是它棋力比其它DCNN MCTS强的原因之一。"
这个办法在解死活题的文章中出现过,会在一定程度上提高搜索效率,但是提高多少还不知道。
问题2:“rollout的走法质量变好可能会导致棋力下降。”
这里要分两种情况,tree policy和default policy。在AlphaGo的文章里面已经说过了,tree policy的分布不能太尖,不然在搜索时太过重视一些看起来的好着,可能使得棋力下降。但是除了这种原因,一般来说tree policy变好棋力还是会变强的。
default policy这边,即(半)随机走子到最后然后判分,就很复杂了,质量变好未必对局面能估得更准。default policy需要保证的是每块棋的死活大体正确,不要把死的棋下成活的或者反之,而对大局观的要求反而没有那么高。双方完全可以配合着把每块棋下完,然后转战另一块,而不是说抢在对方前去别处占先手。
本文讲解到此结束,希望对大家有所帮助。