首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自我对弈的 AlphaGo Zero

自我对弈的 AlphaGo Zero

作者头像
AlgorithmDog
发布2017-12-29 10:54:45
8800
发布2017-12-29 10:54:45
举报

AlphaGo Zero [1] 已经出来一段时间了。本来 AlphaGo Zero 一出来就应该写科普的,但自己实在懒。等到现在才更新。

AlphaGo Zero 最大的亮点是:完全没有利用人类知识,就能够获得比之前版本更强大的棋力。主要的做法是: 1) 利用蒙特卡洛树搜索建立一个模型提升器,2) 在自我对弈过程中,利用提升器指导模型提升,模型提升又进一步提高了提升器的能力。

1. 蒙特卡洛树搜索简介

蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS) 是一种树型搜索技术,具有如下所示的树型结构。AlphaGo Zero 蒙特卡洛树搜索还利用了深度学习模型:这个深度学习模型输入当前盘面,输出不同动作概率和当前玩家胜利的概率。

monte carlo tree mcts a tree
monte carlo tree mcts a tree

树中每一个节点 s 代表了一个围棋盘面,并带有两个数字。一个是访问次数N(s),另一个质量度Q(s)。访问次数 N(s)表示在搜索中节点被访问的次数。面对一个盘面,MCTS 会进行重复搜索,所以一个节点可能会被反复访问,这个下面细说。质量度Q(s)表示这个节点下 AlphaGo 的优势程度,其计算公式如下所示。

这个公式的意思是:1)对于非叶子节点,质量度等于该节点所有树中已有子节点的质量度均值。2)对于叶子节点,质量度和深度学习网络估计的获胜概率 vθ(sL)vθ(sL) v_{\theta}(s_L) 有关。

有了 MCTS 的结构,我们就可以继续介绍 MCTS 怎么做搜索的。当对手落了一子,AlphaGo 迅速读入当前盘面,将之当作搜索的根节点,展开搜索。MCTS 搜索的流程如下图所示,一共分为四个步骤:

monte carlo tree search MCTS
monte carlo tree search MCTS

1. 选择 从根节点 R 开始,递归选择某个子节点直到达到叶子节点 L。当在一个节点s,我们怎么选择子节点 s*呢?我们选择子节点不应该乱选,而是应该选择那些优质的子节点。AlphaGo 中的选择子节点的方式如下所示。

2. 扩展 如果 L 节点上围棋对弈没有结束,那么可能创建一个节点 C。 3. 模拟 用深度学习网络计算节点 C 的质量度。 4. 反向传播 根据 C 的质量度,更新它爸爸爷爷祖先的质量度。

上述搜索步骤反复进行,直到达到某个终止条件。搜索结束后,MCTS 选择根节点的质量度最高的子节点作为 AlphaGo 的着法。

2. 网络结构和训练方法

AlphaGo Zero 的网络结构和之前的版本不同。AlphaGo Zero 的网络结构采用了 resnet 网络,而之前的版本则采用了传统的 CNN 网络。同时 AlphaGo Zero 将 policy 网络和 value 网络结合在一起,一个网络同时输出不同动作概率和预估胜率,如下所示。

网络结构定义好了,我们来看下 AlphaGo Zero 是怎么自我对弈 (Self-Play) 进行训练的。将上面的模型接入 MCTS, MCTS 就能有策略地进行搜索,搜索结果是当前盘面不同动作的概率。由于 MCTS 经过了搜索,输出的动作概率肯定要好于模型自身输出的动作概率,因此可以将 MCTS 视作模型的提升器。自我对弈是从初始围棋盘面开始;MCTS 输入当前盘面 s1 输出不同动作概率 p1,按照该概率采样一个动作作为玩家落子;MCTS 作为对手输入当前盘面 s2 输出不同动作的概率 p2,按照该概率采样一个动作作为对手的落子;不停执行,直到分出胜负 z。收集数据(s1,p1,z),…, 作为训练数据训练模型。整个训练流程如下所示。

在这里,我个人有点疑问。这种训练方法明显地和我们认知的基于马尔科夫决策过程 (Markov Decision Process, MDP) 的强化学习有区别,但论文还是称之为强化学习。难度强化学习有更广义的定义嘛?

3. 实验效果

3.1 不同网络结构的比较

AlphaGo Zero 网络结构有两个改动:1) 用 resnet 替代了传统 CNN, 2) 合并了 policy 网络和 value 网络。下图可以看出这两个改动能提高 AlphaGo Zero 的效果(sep 表示policy和value分开,dual 表示合在一起; res 表示 resnet 网络,cnn 表示传统的CNN)。

3.2 不同版本 AlphaGo 的比较。

从下图可以看出,不用人类知识的 AlphaGo Zero 超过之前的版本。另外从下图能看出来的是,训练完成之后,MCTS 提升器 + 模型的能力还是要比模型要强。

4. 总结

大家以为围棋都做到头了,其他做围棋的团队在极力用旧方法提高棋力。没有想到 DeepMind 以 “不需要人类知识” 为最大亮点,搞出这么一个重磅研究工作。“不需要人类知识” 得以实现是因为模型+ MCTS 提升器 的训练方法。在利用模型的基础上,MCTS 提升器总是强于模型本身,从而为模型提升指明了方向;模型的提升又进一步增强了 MCTS 提升器的能力;这就形成了正向循环。一个总是比模型强的提升器,是正向循环能够建立的关键。

很多自媒体已经开始鼓吹,这是迈向通用智能的重要一步。这个是不对的。围棋因为规则明确和完全信息,我们找到了 MCTS 这个总是比模型强的模型提升器。但在更多通用领域,这样的模型提升器还是比较难找到的。

参考文献

  1. Silver, David, et al. “Mastering the game of Go without human knowledge.” Nature 550.7676 (2017): 354-359.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年10月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 蒙特卡洛树搜索简介
  • 2. 网络结构和训练方法
  • 3. 实验效果
    • 3.1 不同网络结构的比较
      • 3.2 不同版本 AlphaGo 的比较。
      • 4. 总结
      • 参考文献
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档