加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 动态 > 正文

深挖围棋AI技术:alphaGo在下一盘什么棋?(上)

发布时间:2016-03-13 01:32:11 所属栏目:动态 来源:雷锋网
导读:AlphaGo的棋局,与人工智能有关,与人生无关。

每次Simulation使用如下的公式从根节点开始一直选择边直到叶子节点(也就是这条边对于的局面还没有expand)。

深挖围棋AI技术:alphaGo在下一盘什么棋?(上)

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打分,最终把两个分数融合起来:

深挖围棋AI技术:alphaGo在下一盘什么棋?(上)

Backup

深挖围棋AI技术:alphaGo在下一盘什么棋?(上)

n次Simulation之后更新统计量(从而影响Selection),为什么是n次,这涉及到多线程并行搜索以及运行与GPU的Policy Network与Value Network与CPU主搜索线程通信的问题

Expansion

一个边的访问次数超过一定阈值后展开这个边对应的下一个局面。阈值会动态调整以是的CPU和GPU的速度能匹配,具体下一节我们讨论AlphaGo的实现细节再说明

AlphaGo的水平

深挖围棋AI技术: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),每条边包含如下的一些统计量:

深挖围棋AI技术:alphaGo在下一盘什么棋?(上)

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。

深挖围棋AI技术:alphaGo在下一盘什么棋?(上)

还是这个图。

Selection(图a)

从根节点开始使用下面的公式选择a直到叶子节点。

深挖围棋AI技术:alphaGo在下一盘什么棋?(上)

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)

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读