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

AlphaGo 的棋局,与人工智能有关,与人生无关

发布时间:2016-03-11 05:30:10 所属栏目:评论 来源:爱范儿
导读:1997 年中考后的暑假在姑父公司的机房第一次接触电脑,当时应该是 80386 的微机。学习电脑就是学习 DOS 命令和打字,完全不懂干什么用的,打字尤其是五笔字型,更是学得头

另外 RL Policy Network 与开源的 Pachi 对弈(这个能到 2d 也就是业余两段的水平),Pachi 每步做 100,000 次 Simulation,RL Policy Network 的胜率超过 85%,这说明不用搜索只用 Move Prediction 能超过 2d 的水平。这和 Tian 等人的工作的结论是一致的,他们的 darkforest2 也只用 Move Prediction 在 KGS 上也能到 3d 的水平。

Value Network 的强化学习训练

棋局 人工智能 有关 人生

一个局面在 policy p 下的估值公式。用通俗的话说就是:在 t 时刻的局面是 s,然后我们用 p 来下棋直到游戏结束,我们重复很多次,然后求平均的得分。当然,最理想的情况是我们能知道双方都是最优策略下的得分,可惜我们并不知道,所以只能用我们之前学到的 SL Policy Network 或者 RL Policy Network 来估计一个局面的得分,然后训练一个 Value Network V(s)。前面我们也讨论过了,RL Policy Network 胜率更高,而我们学出来的 Value Network 是用于 rollout 阶段作为先验概率的,所以 AlphaGo 使用了 RL Policy Network 的局面评估来训练 V(s)。

V(s) 的输入时一个局面,输出是一个局面的好坏得分,这是一个回归问题。AlphaGo 使用了和 Policy Network 相同的参数,不过输出是一个值而不是 361 个值(用 softmax 归一化成概率)。

棋局 人工智能 有关 人生

上面的公式说明:V(s) 的参数 theta 就是简单的用梯度下降来训练

不过用一盘对局的所有 (s,v(s)) 训练是有问题的,因为同一盘对局的相邻的局面是非常相关的,相邻的局面只差一个棋子,所有非常容易 overfitting,导致模型“记住”了局面而不是学习到重要的 feature。作者用这样的数据训练了一个模型,在训练数据上的 MSE 只有 0.19,而在测试数据上是 0.37,这明显 overfitting 了。为了解决这个问题,作者用 RL Policy Network 自己跟自己对局了 3 千万次,然后每个对局随机选择一个局面,这样得到的模型在训练数据和测试数据上的 MSE 是 0.226 和 0.234,从而解决了 overfitting 的问题。

MCTS + Policy & Value Networks

上面花了大力气训练了 SL Policy Network,Rollout Policy 和 Value Network,那么怎么把它们融合到 MCTS 中呢?

棋局 人工智能 有关 人生

一次 MCTS 的 Simulation 可以用上图来说明,下文加黑的地方是这三个模型被用到的地方。

首先每个节点表示一个局面,每一条边表示局面+一个合法的走法(s,a)。每条边保存 Q(s,a),表示 MCTS 当前累计的 reward,N(s,a) 表示这条边的访问次数,P(s,a) 表示先验概率。

Selection

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

棋局 人工智能 有关 人生

Backup

棋局 人工智能 有关 人生

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的 账号的对局信息来分析的。

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

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

推荐文章
    热点阅读