深挖围棋AI技术:alphaGo在下一盘什么棋?(上)
每次Simulation使用如下的公式从根节点开始一直选择边直到叶子节点(也就是这条边对于的局面还没有expand)。 Q(s_t,a)就是exploit term,而u(s_t,a)就是explore term,而且是于先验概率P(s,a)相关的,优先探索SL Policy Network认为好的走法。 Evaluation对于叶子节点,AlphaGo不仅仅使用Rollout(使用Rollout Policy)计算得分,而且也使用Value Network打分,最终把两个分数融合起来: n次Simulation之后更新统计量(从而影响Selection),为什么是n次,这涉及到多线程并行搜索以及运行与GPU的Policy Network与Value Network与CPU主搜索线程通信的问题 Expansion一个边的访问次数超过一定阈值后展开这个边对应的下一个局面。阈值会动态调整以是的CPU和GPU的速度能匹配,具体下一节我们讨论AlphaGo的实现细节再说明 AlphaGo的水平a图是用分布式的AlphaGo,单机版的AlphaGo,CrazyStone等主流围棋软件进行比赛,然后使用的是Elo Rating的打分。 作者认为AlphaGo的水平超过了FanHui(2p),因此AlphaGo的水平应该达到了2p(不过很多人认为目前Fanhui的水平可能到不了2p)。 b图说明了Policy Network Value Network和Rollout的作用,做了一些实验,去掉一些的情况下棋力的变化,结论当然是三个都很重要。 c图说明了搜索线程数以及分布式搜索对棋力的提升,这些细节我们会在下一节再讨论,包括AlphaGO的架构能不能再scalable到更多机器的集群从而提升棋力。 AlphaGo的真实棋力因为3月份AlphaGo要挑战李世石,所以大家都很关心AlphaGo到底到了什么水平。当然它的真实水平只有作者才能知道,我这里都是根据一些新闻的推测。而且从文章提交Nature审稿到3月份比赛还有一段不短的时间,AlphaGo能不能还有提高也是非常关键。这里我只是推测一下在文章提交Nature时候AlphaGo的棋力。至于AlphaGo棋力能否提高,我们下一节分析实现细节时再讨论(假设整体架构不变,系统能不能通过增加机器来提高棋力)。 网上很多文章试图通过AlphaGo与fanhui的对局来估计AlphaGo的棋力,我本人不敢发表意见。我只是搜索了一些相关的资料,主要是在弈城上一个叫DeepMind的账号的对局信息来分析的。 比如这篇《金灿佑分析deepmind棋谱认为99%与谷歌团队相关》。作者认为这个账号就是AlphaGo。如果猜测正确的话,AlphaGo当时的棋力在弈城8d-9d直接,换成我们常用的ranking system的话大概也就是6d-7d(业余6段到7段)的水平,如果发挥得好,最多也许能到1p的水平,战胜fanhui也有一定合理性(很多人认为fanhui目前实际水平可能已经没有2p了,那算1p的话也差不多)。 知乎上也有很多讨论,以及这篇《陈经:谷歌围棋算法存在缺陷》,都可以参考。 AlphaGo的实现细节Search Algorithm和之前类似,搜索树的每个状态是s,它包含了所有合法走法(s,a),每条边包含如下的一些统计量: P(s,a)是局面s下走a的先验概率。Wv(s,a)是simulation时value network的打分,Wr(s,a)是simulation时rollout的打分。Nv(s,a)和Nr(s,a)分别是simulation时value network和rollout经过边(s,a)的次数。Q(s,a)是最终融合了value network打分和rollout打分的最终得分。 rollout会模拟一个节点多次这比较好理解。为什么value network会给同一个节点打分多次呢?而且对于一个DCNN来说,给定一个固定的输入(s,a) P(a|s)不应该是相同的值吗,计算多次有什么意义吗? 我刚开始看了半天也没明白,后来看到Symmetries那部分才明白。原来AlphaGo没有像之前的工作那样除了对称的问题,对于APV-MCTS(Asynchronous Policy and Value MCTS)算法,每次经过一个需要rollout的(s,a)时,会随机的选择8个对称方向中的一个,然后计算p(a|s),因此需要平均这些value。计算Policy Network的机器会缓存这些值,所以Nv(s,a)应该小于等于8。 还是这个图。 Selection(图a)从根节点开始使用下面的公式选择a直到叶子节点。 Q(s,a)初始值为0,后面Backup部分会讲怎么更新Q(s,a)。 现在我们先看这个公式,第一部分Q(s,a)是exploit term,第二部分是explore term。这个公式开始会同时考虑value高的和探索次数少的走法,但随着N(s,a)的增加而更倾向于value高的走法。 Evaluation(图c)叶子节点sL被加到一个队列中等到value network计算得分(异步的),然后从sL开始使用rollout policy模拟对局到游戏结束。 Backup(图d)(编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |