【强化学习】AlphaGo Zero论文

AlphaGo Zero论文中文版 :Mastering the game of Go without human knowledge

绪论  

       长久以来,人工智能的目标是在富有挑战性的领域中学习出一种从无知幼儿到超级专家的算法。最近,AlphaGo已经成为第一个在围棋比赛中打败世界冠军的程序。AlphaGo中的树搜索使用深度神经网络来评估棋局和选择动作。这些神经网络是利用人类专家的动作通过监督学习训练而来,然后通过强化学习来进行自我对弈。这里,我们引入了一种完全独立的强化学习算法,不需要采用人类数据或是基于游戏规则的引导或领域知识。AlphaGo成为自己的老师:通过训练神经网络来完成AlphaGo的动作选择的预测和对弈的胜者。这个网络还提高了树搜索的能力,使得能够在下一手中有更高质量的落子选择和更强的自我对弈能力。从无知幼儿开始,我们新的程序—AlphaGo Zero达到了超级专家的水平,在与之前开发的AlphaGo的对弈中,取得了100-0的完胜。

引言

       人工智能领域取得的很多进步都是通过训练监督学习系统去复制人类专家的决策实现的。然而,专家数据集通常是昂贵的,不可靠的,且难以获取。即使可以获取可靠的数据集,它们也可能对用这样的方法训练出的系统性能造成限制。相比之下,用自己经验训练出来的强化学习系统,在原则上允许它们超越人的能力,且在人类专业知识不足的领域中也能运行。最近利用强化学习训练的深度神经网络在实现这个目标上已经有了飞速的进步。这些系统在诸如Atari6,7的计算机游戏领域和3D 虚拟环境领域中的表现已经超出人类。然而,在就人类智能而言最具有挑战的领域,仍要求在广阔的搜索空间中拥有精确而复杂的预测能力--例如围棋,一直被人工智能视为最大的挑战。在这些领域中,完全的基因方法还不能达到人类的水平。

       AlphaGo是第一个在围棋游戏上具有卓越表现的程序。目前推出的AlphaGo版本,我们指的是AlphaGo Fan,在2015年10月的欧洲赛中打败了范辉。AlphaGo Fan使用了两个深度神经网络:一个策略网络输出行为概率和一个估值网络输出棋局评价。最初,策略网络用监督学习去训练来精确预测人类专家的走子,然后通过策略梯度强化学习来进行改进。训练估值网络是用来预测在策略网络的自我对弈中游戏的胜者。一般被训练,这两个神经网络通过蒙特卡洛树搜索结合起来提供超前搜索。使用价值网络(结合蒙特卡洛快速走子策略网络)在树上完成对落子位置的评估。在之后的版本中,我们称之为AlphaGo Lee,采用了相似的方法,在2016年5月打败了赢得了18个国际冠军的李世石。

       我们的程序AlphaGo Zero,与AlphaGo Fan和AlphaGo Lee相比,在一些重要的方面有所不同。第一点也是最重要的一点,它完全独立地采用自我对弈强化学习的方法来训练,从刚开始的随机博弈开始就没有任何的监督或使用人工数据。第二、它只用了棋盘上的黑白走子作为输入特征。第三、它用了单个神经网络,而不是分离的策略和估值网络。最后它采用了只依赖一种神经网络的更简单的树搜索策略,来评估棋盘和简单的走子,而不是用是采用蒙特卡洛快速走子。为了完成这样的目标,我们引入了一种新的强化学习算法来,该算法在训练循环中运用了前瞻性搜索,让训练拥有更快的提升速度和精准稳定的学习。更多搜索算法技术上的不同,训练过程和网络架构将在Methods中讲到。

AlphaGo Zero的强化学习

       我们的方法使用了带参数向量θ的深度神经网络fθ。该神经网络将盘面位置和历史信息的代表s作为输入,输出选择走子的概率分布和盘面价值(p,v)=fθ(s)。走子的概率向量p代表每一步a的概率(包括虚着),p(a)=Pr(a|s) 。价值v是一个标量评价,评估当前选手在棋局s中的获胜概率。这个神经网络将估值网络和策略网络的角色整合到一个框架中。很多使用了批标准化(batch normalization),非线性整流器法人卷积层的残差模块构成了该神经网络。

AlphaGo Zero的神经网络使用强化学习通过自我博弈得到的。每一个盘面状态s,按照神经网络fθ的引导执行一次MCTS。MCTS搜索输出每一步可行棋的概率π。。MCTS搜索得出的概率所选择的棋步通常比直接用神经网络算出的概率p所选的棋步强;MCTS可以看作是一个强大的策略提升算子。带搜索的自我对弈--使用改进的给基于MCTS策略来选择棋步,然后将胜者作为价值的一个样本--可以看做是一个强大的策略评估算子。我们强化学习算法的主要想法就是在策略迭代过程中重复使用这些搜索算子:神经网络参数的更新使得其所预测的可行棋概率分布和盘面价值更接近用蒙特卡洛方法提升过后的概率分布和盘面价值(π,z);这些新参数用于下一轮自我博弈使得搜索也更强。

                                                                   图1展示了自弈(self-play)训练的流程图。

       MCTS用神经网络 来指导它的模拟(见图2)。搜索树中的每一条边(s,a)存储一个先验概率P(s,a),访问次数N(s,a)和一个行为价值Q(s,a)。每一次模拟都从根节点状态开始,然后迭代的选择棋步来最大化置信度上界Q(s,a)+U(s,a),其中U(s,a)正比于P(s,a)/(1+N(s,a)),直到遇到一个叶节点(即终止状态)。这个叶节点的位置只被网络访问和评估一次就可以获取先验概率和价值, 每一条边(s,a)经过的时候都要更新增加它的访问次数N(s,a),然后要将行为价值更新为多次模拟的平均值, ,其中s,a->s’表示一次模拟从状态s采取a行为后最终到达s’状态。

       MCTS可以看成是在给定网络参数θ和根状态s的情况下,计算得到概率分布 来建议下一步走棋,该概率分布正比于每一步访问次数的指数函数,,其中τ是一个温度参数。
       神经网络的训练是通过自弈的强化学习算法,用MCTS来走每一步。首先,随机初始化这个神经网络的权重θo。在每一次接下来  的迭代i≥1时,获取自弈的游戏(图1a)。在每一个时刻t,用之前迭代的神经网络执行一次MCTS搜索,

,通过采样搜索概率 来走一步棋。一局游戏的终结时刻T定义为,当双方玩家都使用虚着时,当搜索值低于一个给定的阀值时,或者当游戏长度超过最大长度限制时;这局游戏之后被评分给出一个最后的奖励(详见于方法篇),每个时刻t的数据保存为 ,其中正负号取决于根据当前时刻t玩家的视角。在并行图(图1b)中,新网络参数θi是从上一轮自我博弈的迭代的所有时刻正态分布取样数据(s,π,z)训练得到的。该神经网络的调参目标是最小化预测价值v和实际价值z的误差,最大化网络预测棋步概率分布p和搜索概率分布π之间的相似度(一般度量相似度,用KL散度,或者交叉熵,这里采用交叉熵)。特别的,网络参数θ用梯度下降调整,损失函数是总均方误差加上交叉熵损失,见下式:

上式中c是一个用来控制L2正则程度的参数(为了防止过拟合),称为正则系数。

猜你喜欢

转载自blog.csdn.net/qq_20135597/article/details/82420598