zoukankan      html  css  js  c++  java
  • Mastering the game of Go without human knowledge

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!

    参考链接:《Mastering the game of Go without human knowledge》译文_Forlogenの解忧杂货铺-CSDN博客

    MCTS:强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS) - 刘建平Pinard - 博客园 (cnblogs.com)MCTS introduction - ZHANGWP

    Abstract

      AI的一个长期目标是一种算法,它可以在挑战性领域中从零开始学习超人的熟练程度。最近,AlphaGo成为第一个在围棋中击败人类世界冠军的程序。AlphaGo的树搜索使用深度神经网络来评估棋局和选定下棋位置。神经网络是利用对人类专业棋手的落子进行监督学习,同时通过自我博弈进行RL训练。在此,我们引入了一种不使用人类的数据、指导或超越游戏规则的领域知识且基于RL的算法。AlphaGo成为了自己的老师:神经网络被训练用来预测AlphaGo自己的落子选择和胜负。这种神经网络提高了树搜索的强度,从而提高落子选择的质量和在下一次迭代中的自我博弈能力。从零开始,我们的新程序AlphaGo Zer取得了超人的成绩,以100-0战胜了此前公布的打败人类冠军的AlphaGo版本。

    Introduction

      使用监督学习系统来做出与人类棋手一样的决策使AI取得了很大进展1-4。然而,人类棋手的数据集通常是昂贵、不可靠或根本不可用的。即使在可靠的数据集可用时,人类的认知局限也可能对以这种方式训练的系统的性能施加上限5。相比之下,RL系统是通过自己的经验训练的,原则上他们能够超越人的能力,并在缺乏人类知识的领域中运作。近年来,利用RL训练的深度神经网络在这一目标上取得了快速的进展。这些系统在电脑游戏如Atari6,7和3D虚拟环境8-10上已经超过了人类。但是,在人类智力方面最具挑战性的领域,如围棋领域11,使用完全通用的方法没有办法实现与人类相媲美的性能。因为围棋被广泛视为是人工智能的一大挑战——它需要在庞大的搜索空间上进行精确且复杂的前瞻。

      AlphaGo是第一个在围棋游戏中实现超人表现的程序。之前发布的我们称之为AlphaGo Fan的版本12,在2015年10月击败了欧洲冠军Fan Hui。AlphaGo Fan使用两个深度神经网络:一个是策略网络,来输出下一步落子的概率;另一个是价值网络,来输出对棋局的评估,也就是落子的胜率。策略网络最初是通过监督学习来精确预测人类专业棋手的落子,随后又通过策略梯度RL对系统进行增强。价值网络通过使用策略网络进行自我博弈来预测谁是赢家从而完成训练。一旦经过训练,这些网络结合蒙特卡洛树搜索(MCTS)13-15提供前瞻性搜索,运用策略网络来缩小高概率落子的搜索过程,运用价值网络结合蒙特卡洛快速走子策略来评估树中的落子位置。随后开发的版本,我们称之为AlphaGo Lee,用类似的方法,在2016年3月击败具有国际冠军头衔的李世石(曾获18项国际冠军)。

      我们现在的程序AlphaGo Zero,与AlphaGo Fan和AlphaGo Lee12存在以下几点的差异:

    1. 它完全由自我博弈RL进行训练,从刚开始的随机博弈开始,就没使用任何监督或人类数据;
    2. 它只使用棋盘上的黑白子作为输入特征;
    3. 它使用单一的神经网络,而不是分离的策略网络和价值网络;
    4. 它使用了一个简化版搜索树,这个搜索树依靠单一的神经网络进行棋局评估和落子采样,不执行任何蒙特卡洛走子。

      为了实现上述结果,我们引入一个新的RL算法,在训练过程中完成前向搜索,从而达到迅速的提高以及精确且稳定的学习过程。方法中描述了搜索算法,训练过程和网络结构方面的其他技术差异。

    图1 | AlphaGo Zero中的自我博弈RL a, 这个程序与自己玩游戏s1, …, sT。在每个棋局st,执行一个使用最新的神经网络fθ的MCTS αθ(见图2)。根据MCTS计算的搜索概率来选择落子,at∼πt。根据游戏规则在最终的棋局sT记分,来计算游戏的胜出者z。b, AlphaGo Zero中的神经网络训练。神经网络以原始棋盘状态st作为输入,通过参数为θ的多个卷积层,输出代表落子概率分布的向量pt,和一个表示当前玩家在棋局状态st处胜率的标量值vt。神经网络参数θ朝着使策略向量pt与搜索概率πt相似度最大化的方向更新,同时最小化预测赢家vt和游戏赢家z之间的误差(见公式(1))。如a所示,在下一次自我博弈的迭代中使用新的参数。

    Reinforcement learning in AlphaGo Zero

      我们在学习中使用一个参数为θ的深度神经网络fθ,该神经网络将棋局和其历史的原始图表征s作为输入,输出落子概率和价值(p, v) = fθ(s)。落子概率向量p代表选择每个落子动作a(包括放弃行棋)的概率pa = Pr(a|s)。价值v是标量评估,估计当前玩家在棋局状态为s时获胜的概率。这个神经网络将策略网络和价值网络12合并成一个单一的结构。神经网络包括许多残差块4(带批归一化18和非线性整流器19的卷积层16,17) (参见方法)。

      AlphaGo Zero的神经网络是通过新的RL算法利用自我博弈训练出来的。在每一个棋局s,通过神经网络fθ的指导来执行蒙特卡洛搜索。MCTS搜索输出每次落子的概率分布π。这些搜索概率通常选择比神经网络fθ(s)的落子概率p更强的落子,因此MCTS被看作是一个强大的策略改进算法。带有搜索的自我博弈——采用改进的以MCTS为基础的策略来选择的每一次落子,然后用游戏的赢家z作为价值的样本——可以被看作是一个强力的策略评估算子20,21。我们采用的RL算法的主要思想是在策略迭代过程中反复地利用这些搜索算子22,23,神经网络的参数被更新,使落子概率和价值(p, v) = fθ(s)更紧密地与改进的搜索概率和自我博弈的赢家(π, z)相匹配;这些新参数用于下一次的自我博弈迭代,以使搜索更强大。图1展示了自我博弈的训练流程。

      MCTS采用神经网络fθ来指导它的仿真(见图2)。搜索树中的每个边(s, a)存储一个先验概率P(s, a)、一个访问次数N(s, a)和一个动作价值Q(s, a)。每次仿真从根状态开始,反复选择落子,使置信上限Q(s, a) + U(s, a)最大化12,24,其中U(s, a) ∝ P(s, a) / (1 + N(s, a)),直到遇到叶节点s′。叶子的位置被扩展,通过网络对该叶子的棋局进行扩展和评估,产生先验概率和评估(P(s′ , ·), V(s′)) = fθ(s′)。在仿真中遍历到的每条边(s, a)被更新,访问次数N(s, a)增加,并且将其动作价值更新为对这些仿真的平均评估,其中s, a → s'表示在棋局s上落子a后,仿真最终达到s'。

      MCTS可以看作是一个自我博弈算法,给出了神经网络参数θ和根的棋局状态s,计算搜索概率推荐的落子向量π = αθ(s),它与每次落子动作的访问次数的指数成正比,πa ∝ N(s, a)1/τ,其中τ是温度参数。

      神经网络通过自我博弈RL进行训练,使用MCTS计算每个落子动作。首先,神经网络初始化为随机权重θ0。在随后的每次迭代i ≥ 1时,产生了游戏的自我博弈(图1a)。在每一个时间步骤 t,利用上一次迭代的神经网络执行MCTS搜索,并且通过搜索概率πt采样来落子。当双方放弃行棋时,或者当搜索价值低于阈值,或者当游戏超过最大长度时,游戏终止于步骤T;然后为游戏计分,给予最终奖励rT ∈ {−1, +1}。每个时间步骤 t 的数据存储为(st, πt, zt),其中zt = ±rT是在步骤 t 从当前玩家的视角来看的赢家。并行地(图1b),新的网络参数θi利用数据(s, π, z)进行训练,数据是从自我博弈的上一次迭代的所有时间步骤中均匀采样的。调整神经网络以最小化预测价值v和自我博弈的赢家z之间的误差,并且最大化神经网络落子概率p与搜索概率π的相似度。具体来说,通过使用对均方误差和交叉熵损失求和的损失函数 l,利用梯度下降来调整参数θ:

    其中,c是一个控制L2权重正则化水平的参数(防止过拟合)。

    图2 | AlphaGo Zero中的MCTS a, 每个仿真通过选择具有最大动作价值Q,加上取决于存储的先验概率P和该边的访问计数N的一个置信区间上限U(当遍历的时候递增)的边来对树进行遍历。b, 叶节点的扩展和对应棋局s的评估是由神经网络(P(s, ·), V(s)) = fθ(s)完成的;P值的向量存储在从s出发的外向边中。c, 更新动作价值Q,以跟踪那个动作下面的子树中所有评估V的均值。d, 一旦搜索完成后,返回搜索概率π,与N1/τ成正比,其中N是从根状态开始的每个落子的访问次数,τ是温度控制参数。 

    Empirical analysis of AlphaGo Zero training

      应用我们的RL流程来训练AlphaGo Zero。训练从完全随机的落子开始,在没有人工干预的情况下持续大约三天。

      在训练过程中, 每次MCTS使用1600次仿真,生成了490万场自我博弈,每次落子使用约0.4s的思考时间。使用大小为2048的700000个小批量更新参数。神经网络包含20个残差块(更多细节参见方法)。

      图3a显示了以训练时间为横轴,使用Elo评分规则25时AlphaGo Zero在自我博弈RL期间的性能。在整个训练期间学习进展顺利,并没有遭受在相关文献中提及的振荡或灾难性的遗忘26-28。令人惊讶的是,在仅训练36小时之后,AlphaGo Zero就超过了AlphaGo Lee的性能。作为比较,AlphaGo Lee训练了几个月。训练72小时后,我们评估AlphaGo Zero,让他和在首尔打败过李世石的AlphaGo Lee使用2小时控制时间和比赛环境下进行比赛(参见方法)。AlphaGo Zero使用具有4个TPU的单机29,而AlphaGo Lee则是分布在许多机器上,并且使用48个TPU。AlphaGo Zero以100比0击败AlphaGo Lee(参见拓展数据图1以及补充信息)。

      为了评估自我博弈RL相对于使用人类数据进行学习的优势,我们训练了第二个神经网络(使用相同的结构)来预测在KGS服务器数据上人类专业棋手的落子动作,取得了与以前的工作相比更准确的预测精度12,30-33(现在和先前的结果分别参见拓展数据表1,2)。监督学习获得了非常好的初始性能,并且更好地预测了人类棋手的动作(图3)。但值得注意的是,虽然监督学习取得了较高的落子预测精度,但是总体而言,这个自学的棋手表现更好,在经过24小时的训练后击败了用人类数据进行训练的程序。这表明,AlphaGo Zero可以学习到完全与人类不同的策略。

      为了将结构和算法的贡献分离,我们将AlphaGo Zero使用的神经网络结构的性能与AlphaGo Lee使用的神经网络结构进行了比较(见图4)。我们创建了四个神经网络,就像在AlphaGo Lee中那样,使用独立的策略网络和价值网络;或者使用AlphaGo Lee使用的卷积网络结构或AlphaGo Zero使用的残差网络结构。训练网络时都最小化相同的损失函数(公式(1)),使用的数据集是AlphaGo Zero在72小时的自我博弈训练后产生的固定数据集。利用残差网络更准确,使AlphaGo达到较低的误差和性能的改进(超过600 Elo)。将策略和价值合成一个单一的网络会轻微地降低落子预测精度,但同时降低了价值误差,并且使AlphaGo的性能提高大约600 Elo。这是由于提高了计算效率,但更重要的是具有双重目标的网络成为支持多个案例的通用表征。

    图3 | AlphaGo Zero的经验性评估 a, 自我博弈RL的性能。图中显示了AlphaGo Zero中的RL在每次迭代 i 中每个MCTS玩家的性能。通过与不同玩家的比赛,来评估Elo评分。在比赛中每次落子的思考时间为0.4秒(参见方法)。为了对比,我们也展示出了使用KGS数据,由人类经验数据进行监督学习训练的模型。b, 对人类棋手落子的预测精度。该图显示了在每一次自我博弈迭代 i 中,神经网络根据GoKifu数据集预测人类棋手落子的准确性。准确性衡量的是神经网络为人类落子分配最高概率的布局百分比。该图还显示了通过监督学习训练的神经网络的准确性。c, 在人类职业比赛结果上的均方误差(MSE)。该图显示了在每一次自我博弈迭代 i 中,神经网络从GoKifu数据集中预测人类职业比赛结果的MSE。MSE是在实际结果z ∈ {−1, +1}和神经网络的价值v,按1/4的比例缩小至0-1的范围内。图中还显示出经过监督学习训练的神经网络的MSE。

    图4 | AlphaGo Zero和AlphaGo Lee中的神经网络结构的比较 使用单独的(sep)或策略和价值的结合(dual)网络的神经网络结构比较,以及使用卷积(conv)或残差(res)网络的比较。'dual-res'和'sep-conv'的结合分别与AlphaGo Zero和AlphaGo Lee中使用的神经网络结构相对应。每个网络在一个固定的数据集上进行训练,这个数据集是由AlphaGo Zero先前的运行产生的。a, 每个训练过的网络与AlphaGo Zero的搜索相结合,来获得不同的程序。通过这些不同的程序之间的比赛来计算Elo评分。在比赛中,每次落子使用5秒的思考时间。b, 每个网络结构对专业人类棋手的落子预测精度(使用GoKifu数据集)。c, 每个网络结构在人类专业职业比赛结果的MSE(使用GoKifu数据集)。

    Knowledge learned by AlphaGo Zero

      AlphaGo Zero在自我博弈训练过程中发现了高水平的围棋。这不仅包括人类围棋知识的基本要素,而且还包括超出传统围棋知识范围之外的非标准策略。

      图5显示了专业的定式(位于边角的序列)被发现的时间(图5A和扩展数据图2);最终AlphaGo Zero使用了新的定式变种(图5B和扩展数据图3)。图5c显示了在不同的训练阶段进行的几次快速自我博弈(参见补充信息)。在整个训练过程中定期进行的比赛长度在扩展数据图4和补充信息中显示。AlphaGo Zero迅速从完全随机落子走向对围棋概念的深刻理解,包括布局(开放),妙手(战术),死活,劫(重复的棋盘情况),官子(残局),对杀,先手(主动),形态,势和空(地盘),都能在第一时间迅速掌握。令人惊讶的是,shicho ('ladder'捕捉整个棋盘的序列)是在人类学习围棋中比较早被人类掌握的围棋知识点,却在AlphaGo Zero训练比较晚的时候才掌握到。

    图5 | AlphaGo Zero学到的围棋知识 a, 在AlphaGo Zero训练过程中的五个定式(常见的角序列)。在自我博弈训练期间,相关的时间段显示了每个序列第一次形成的时间(考虑旋转和反射)。扩展数据图2提供了每个序列在训练中出现的频率。b, 五个定式在自我博弈训练的不同阶段被青睐的程度。在自我博弈训练的一次迭代中,每一个显示的角序列出现的频率最高(在所有的角序列中)。该迭代的时间戳在时间轴上表示。在10h时,弱角落子是首选。在47h时,3-3的入侵是最经常发生的。这个定式在人类职业比赛中也常见。不过AlphaGo Zero随后发现并偏向于这个新变化。扩展数据图3提供了所有五个序列和新变化随时间变化的频率。c, 在不同训练阶段进行的三个自我博弈的前80个落子,每次搜索使用1600次仿真(大约0.4秒)。在3h时,游戏专注于吃对方的棋子,就像人类初级棋手一样。在19h时,游戏展现了死活、势和空的基本方面,在70h时,游戏非常平衡,包括多场斗争和复杂的劫斗,最终白方以半目赢得胜利。有关完整游戏见补充信息。 

    Final performance of AlphaGo Zero

      随后,我们使用更大的神经网络,在一个较长的时间将我们的RL流程应用到AlphaGo Zero的第二个实例。训练又从完全随机的行为开始,持续了大约40天。

      在训练过程中,产生了2900万场自我博弈。参数大小为2048的310万个小批量中更新。神经网络包含40个残差块。学习曲线显示在图6a,在扩展数据图5和补充信息中显示了在训练期间定期进行的比赛。

      我们通过内部比赛评估了全面训练的AlphaGo Zero,AlphaGo Fan,AlphaGo Lee和几个以前的Go程序。我们还让其对战现有最强的程序,AlphaGo Master —— 一个基于本文的算法和结构但使用人类数据和特征的程序(参见方法),于2017年1月在网络游戏上以60-0击败了人类最强的职业选手34。在我们的评估中,所有程序都只允许使用5秒时间思考每次落子;AlphaGo Zero和AlphaGo Master都使用4个TPU的单一机器;AlphaGo Fan和AlphaGo Lee分别分布在176个GPU和48个TPU上。我们还引入一个完全基于AlphaGo Zero原始神经网络的程序,该程序以最大的概率来选择落子。

      图6b显示了在Elo评分上每个程序的性能。没有使用任何前向搜索的原始神经网络,Elo评分为3055。相比之下,AlphaGo Zero为5185,AlphaGo Master为4858,AlphaGo Lee为3739和AlphaGo Fan为3144。

      最后,我们使用具有两小时控制时间的100场比赛对AlphaGo Zero和AlphaGo Master进行评估。AlphaGo Zero以89比11赢得了比赛(参见拓展数据图6和补充信息)。

    图6 | AlphaGo Zero的性能 a, 使用大型的40块残差网络,训练超过40天的AlphaGo Zero的学习曲线。该学习曲线展示了在我们的RL算法中,每次迭代 i 中每个玩家的性能。利用不同玩家的比赛计算Elo评分,在游戏中每次搜索使用0.4秒(参见方法)。b, AlphaGo Zero的最终性能。AlphaGo Zero使用40块残差神经网络训练40天。该图显示了AlphaGo Zero, AlphaGo Master(在在线游戏上以60-0击败人类专业顶级选手), AlphaGo Lee(击败李世石), AlphaGo Fan(击败Fan Hui),以及以前的围棋程序Crazy Stone,Pachi和GnuGo之间的比赛。允许每个程序每次落子使用5秒的思考时间。AlphaGo Zero和AlphaGo Master在谷歌云上的单机进行;AlphaGo Fan和AlphaGo Lee分别分布在多台机器上。AlphaGo Zero的原始神经网络也包括在内,它没有使用MCTS,直接选择最大概率为pa的落子a。程序以Elo评分:200个点的差距对应于75%的胜率。

    Conclusion

      我们的研究结果证明,即便是在最具挑战性的领域中,单纯使用RL的方法也是完全可行的:没有人类实例或指导,没有基本规则之外的领域知识,训练达到超人的性能是完全可能的。此外,与通过人类棋手数据进行训练相比,单纯的RL方法只需要训练几个小时,并且可以取得更好的渐近性能。使用这种方法,AlphaGo Zero打败了AlphaGo先前最强的版本,那个版本使用手工制作的特征,利用人类数据进行大幅度训练。

      人类从几千年来进行的围棋比赛中积累了大量的知识,并提取其精华写入模式,谚语和书籍。然而在短短几天内,从零开始的AlphaGo Zero能够重新发现很多围棋知识以及新的策略,为这古老的游戏提供了新的见解。

    Methods

    Reinforcement learning. 策略迭代20,21是一种经典算法,它通过在策略评估(估计当前策略的价值函数)与策略改进(使用当前价值函数生成更好的策略)之间交替生成一系列改进策略。一种简单的策略评估方法是根据采样轨迹的结果估计价值函数35,36。一种简单的策略改进方法是相对于价值函数贪婪地选择动作20。在大型状态空间中,必须采用近似法来评估每个策略并代表其改进22,23

      基于分类的RL37使用简单的蒙特卡洛搜索来改进策略。每个动作都会执行许多rollout;具有最高平均价值的动作提供了正的训练示例,而其他所有动作都提供了负的训练示例;然后对策略进行训练,以将动作分类为正或负,并在后续rollout中使用。当τ→0时,这可以被视为AlphaGo Zero训练算法的策略组成部分的前兆。

      最近的实例化,基于分类的修改后的策略迭代(CBMPI)也通过将价值函数回归到截断的rollout价值来执行策略评估,类似于AlphaGo Zero的价值组件;在俄罗斯方块38游戏中获得了最先进的成果。但是,以前的工作仅限于简单的rollout和使用手工特征进行线性函数近似。

      AlphaGo Zero自我博弈算法可以类似地理解为一种近似的策略迭代方案,其中MCTS用于策略改进和策略评估。策略改进从神经网络策略开始,根据该策略的建议执行MCTS,然后将(更强大的)搜索策略投影回神经网络的特征空间。策略评估应用于(更强大的)搜索策略:自我博弈游戏的结果也被投射回神经网络的函数空间。这些投影步骤是通过训练神经网络参数以分别匹配搜索概率和自我博弈游戏结果来实现的。

      Guo et al.7通过将价值网络向搜索价值回归或对MCTS选择的动作进行分类,还将MCTS的输出投影到神经网络中。这种方法用于训练玩Atari游戏的神经网络。但是,MCTS是固定的(没有策略迭代),也没有使用经过训练的网络。

    Self-play reinforcement learning in games. 我们的方法最直接适用于零和博弈的完美信息。我们遵循先前工作12中描述的交替马尔可夫博弈的形式,指出基于价值或策略迭代的算法自然会扩展到此设置39

      自我博弈RL先前已应用于围棋游戏。NeuroGo40,41使用了基于围棋的关于连接,空与目的知识的复杂结构,并使用神经网络来表示价值函数。该神经网络通过时序差分学习42进行了训练,以在先前工作43的基础上预测自我博弈游戏的空。一种相关的方法RLGO44代替特征的线性组合来表示价值函数,详尽地列举了所有3×3的棋子模式。通过时序差分学习对其进行训练,以预测自我博弈游戏的获胜者。NeuroGo和RLGO达到了较弱的业余比赛水平。

      MCTS也可以被视为一种自我博弈RL的形式45。搜索树的节点包含搜索过程中遇到的棋局的价值函数;这些价值会被更新,以预测自我博弈仿真游戏的赢家。MCTS程序以前在围棋46,47中达到了很强的业余水平,但使用了大量的领域专业知识:基于手工特征13,48的快速rollout策略,该策略通过运行仿真直到游戏结束来评估棋局;树策略(也基于手工特征)在搜索树中选择落子47

      自我博弈RL方法已经在其他游戏中达到了较高水平的性能:象棋49-51,跳棋52,双陆棋53,黑白棋54,Scrabble(英语文字图版游戏)55和最近的扑克56。在所有这些示例中,价值函数用自我博弈产生的训练数据通过回归54-56或时序差分学习49-53进行训练。训练后的价值函数在alpha-beta搜索49-54,简单的蒙特卡洛搜索55,57或虚拟遗憾最小化算法56中用作评估函数。但是,这些方法使用手工输入特征49-53,56或手工特征模板54,55。此外,学习过程还使用监督学习来初始化权重58,为块价值手动选择的权重49,51,52,对动作空间的手工限制56或使用预先存在的计算机程序作为训练对手49,50或生成游戏记录51

      零和游戏首先引入了许多最成功且使用最广泛的RL方法:首先为跳棋程序引入时序差分学习59,而为围棋游戏13引入MCTS。然而,后来证明非常相似的算法在视频游戏6-8,10,机器人技术60,工业控制61-63和在线推荐系统64,65中非常有效。

    AlphaGo versions. 我们比较了三个不同版本的AlphaGo:

    (1)AlphaGo Fan是先前发布的程序12,于2015年10月与Fan Hui对抗。该程序分布在使用176个GPU的许多计算机上。

    (2)AlphaGo Lee是在2016年3月以4比1击败李世石的程序。它先前尚未发布,但在大多数方面与AlphaGo Fan12相似。但是,我们强调了几个关键差异以促进公平比较。首先,价值网络是通过AlphaGo的快速自我博弈游戏结果而不是策略网络的自我博弈游戏来训练的。此过程进行了多次迭代,这是本文提出的从零开始算法的第一步。其次,策略和价值网络比原始论文中描述的要大,使用了256通道(plane)的12个卷积层,并且经过了多次迭代训练。该玩家还分布在使用48个TPU(而不是GPU)的许多机器上,从而使其能够在搜索过程中更快地评估神经网络。

    (3)AlphaGo Master是在2017年1月以60-0击败顶尖人类玩家的程序34。该程序先前尚未发布,但使用与本文所述相同的神经网络结构,RL算法和MCTS算法。但是,它使用与AlphaGo Lee12相同的手工特征和rollout,并且训练是通过对人类数据的监督学习来初始化的。

    (4)AlphaGo Zero是本文描述的程序。它从自我博弈RL中学习,从随机初始化权重开始,无需使用rollout,无需人工监督,仅使用原始棋盘历史作为输入特征。它仅使用谷歌云中具有4个TPU的一台计算机(AlphaGo Zero也可以是分布式的,但我们选择使用最简单的搜索算法)。

    Domain knowledge. 我们的主要贡献是证明无需人类领域的知识就可以实现超人的表现。为了阐明这一贡献,我们列举了AlphaGo Zero在其训练过程或MCTS中显式或隐式使用的领域知识;这些是AlphaGo Zero需要学习其他(替代马尔可夫)游戏的知识所必需的。

    (1)AlphaGo Zero具有完善的游戏规则知识。这些在MCTS期间用于仿真一系列落子产生的布局,并对达到最终状态的所有仿真进行评分。当两个玩家放弃行棋或在19×19×2=722次落子之后游戏终止。另外,在每个布局为玩家提供了一组合法落子动作。

    (2)AlphaGo Zero在MCTS仿真和自我博弈训练中使用Tromp-Taylor评分66。这是因为如果游戏在解决空边界之前终止,则人类评分(中国,日国或韩国规则)的定义不明确。但是,所有锦标赛和评估游戏均使用中国规则进行评分。

    (3)描述布局的输入特征被构造为19×19的图像;也就是说,神经网络结构与棋盘的网格结构相匹配。

    (4)围棋规则在旋转和反射下是不变的;通过在训练期间增强数据集以包括每个位置的旋转和反射,以及在MCTS期间对位置的随机旋转或反射进行采样,AlphaGo Zero已使用了此知识(参见搜索算法)。除了贴目外,围棋规则对于颜色转换也是不变的。通过从当前玩家的角度代表棋盘来利用这些知识(请参见神经网络结构)。

      除了上面列出的要点之外,AlphaGo Zero不使用任何形式的领域知识。它仅使用其深度神经网络来评估叶节点并选择落子(请参见"搜索算法")。它不使用任何rollout策略或树策略,并且MCTS不会通过任何其他试探法或域特定的规则进行扩充。不会排除任何合法落子——即使那些落子会引起玩家自己的目(先前所有程序中都使用的标准试探法67)。

      该算法从神经网络的随机初始化参数开始。神经网络结构(请参见"神经网络架构")基于图像识别的最新技术4,18,并相应地选择了用于训练的超参数(请参见"自我博弈训练流水线")。MCTS搜索参数是通过高斯过程优化68选择的,以便使用在初步运行中训练的神经网络来优化AlphaGo Zero的自我博弈性能。对于较大的运行(40个块,40天),使用在较小的运行(20个块,3天)中训练的神经网络对MCTS搜索参数进行了重新优化。训练算法是自动执行的,无需人工干预。

    Self-play training pipeline. AlphaGo Zero的自我博弈训练流水线包括三个主要组件,所有这些组件均以异步方式并行执行。神经网络参数θi从最近的自我博弈数据不断优化;持续评估AlphaGo Zero玩家αθi;到目前为止,表现最好的玩家αθ∗用于生成新的自我博弈数据。

    Optimization. 每个神经网络fθi使用TensorFlow在谷歌云上进行了优化,具有64个GPU worker和19个CPU参数服务器。每个worker的批大小为32,则总迷你批大小为2048。从最近的500000个自我博弈游戏的所有布局上随机地对每个小批量数据进行均匀采样。使用公式(1)中的损失,通过具有动量和学习率退火的随机梯度下降来优化神经网络参数。根据扩展数据表3中的标准时间表对学习率进行退火。动量参数设置为0.9。交叉熵和MSE损失的权重相等(这是合理的,因为奖励是按比例缩放的,r ∈ {-1, +1})并且L2正则化参数设置为c = 10-4。优化过程每1000个训练步骤产生一个新的检查点。该检查点由评估人员评估,并且可以用于生成下一批自我博弈游戏,如下所述。

    Evaluator. 为了确保始终生成最优质量的数据,我们在将其用于数据生成之前,针对当前最优网络fθ∗评估每个新的神经网络检查点。通过MCTS搜索αθi的性能来评估神经网络fθi,使用fθi来评估叶子布局和先验概率(请参见搜索算法)。每次评估包括400场比赛,使用带有1600个仿真的MCTS通过无穷小温度τ → 0 (即,我们确定地选择访问次数最多的棋局,以尽可能发挥最大优势)来选择棋局。如果新玩家以大于55%的概率获胜(避免单独选择噪声),则它将成为最优玩家αθ∗,随后用于自我博弈游戏的产生,并成为后续比较的基准。

    Self-play. 由评估者选择的最优当前玩家αθ∗用于生成数据。在每次迭代中,αθ∗进行25000场自我博弈游戏,使用1600次MCTS仿真选择每个落子(每次搜索大约需要0.4 s)。对于每个游戏的前30个落子,温度设置为τ = 1;这样可以根据他们在MCTS中的访问次数按比例选择动作,并确保遇到各种各样的棋局。在游戏的其余部分中,使用无穷小的温度,τ → 0。通过将Dirichlet噪声添加到根节点s0中的先验概率,特别是P(s, a) = (1-ε)pa + εηa,其中η〜Dir(0.03),ε= 0.25;这种噪声确保可以尝试所有落子,但是搜索可能仍会否决不良落子。为了节省计算量,显然输掉的比赛已退出。自动选择退出阈值vresign,以使误报率(如果AlphaGo没有退出就可以赢得比赛)保持在5%以下。为了衡量误报,我们在10%的自我博弈游戏中停用了退出功能,并且一直玩到终止。

    Supervised learning. 为了进行比较,我们还通过监督学习训练了神经网络参数θSL。神经网络结构与AlphaGo Zero相同。从KGS数据集中随机采样了小批数据(s, π, z),为人类专家落子a设置πa = 1。通过使用动量和学习率退火的随机梯度下降法优化参数,并使用与公式(1)相同的损失,但将MSE分量加权为0.01。根据扩展数据表3中的标准计划对学习率进行退火。动量参数设置为0.9,L2正则化参数设置为c = 10-4

      通过使用组合的策略和价值网络结构,并通过对价值组件使用较小的权重,可以避免过拟合价值(在先前的工作12中描述了一个问题)。72小时后,落子预测精度超过了先前工作12,30-33的最新水平,在KGS测试集上达到了60.4%;价值预测误差也比以前报道的要好得多12。验证集由GoKifu的专业游戏组成。精度和MSE分别在扩展数据表1和2中报告。

    Search algorithm. AlphaGo Zero使用AlphaGo Fan和AlphaGo Lee中使用的异步策略和价值MCTS算法(APV-MCTS)的简单得多的变体。

      搜索树中的每个节点s都包含所有合法动作a ∈ A(s)的边(s, a)。每条边存储一组统计信息,

    其中N(s, a)是访问次数,W(s, a)是总动作价值,Q(s, a)是平均动作价值,P(s, a)是选择该边的先验概率 。在单独的搜索线程上并行执行多个仿真。该算法通过在三个阶段进行迭代来进行(图2a–c),然后选择要落下的棋子(图2d)。

    Select (Fig. 2a). 选择阶段几乎与AlphaGo Fan12相同。我们在这里简要说明完整性。每个仿真的第一个树内阶段从搜索树的根节点s0开始,直到仿真在时间步骤L到达叶节点sL时结束。在每个这些时间步骤t < L,使用PUCT算法的一种变体24,根据搜索树中的统计信息来选择动作,

    其中cpuct是确定探索水平的常数;此搜索控制策略最初会选择具有较高先验概率和较低访问次数的动作,但渐近地会选择具有较高动作价值的动作。

    Expand and evaluate (Fig. 2b). 将叶节点sL添加到队列中以进行神经网络评估,(di(p), v) = fθ(di(sL)),其中di是从[1..8]中的 i 随机选择的二面反射或旋转。队列中的布局由神经网络使用最小批大小(8)评估;搜索线程将被锁定,直到评估完成。叶节点被展开,每个边(sL, a)初始化为{N(sL, a) = 0, W(sL, a) = 0, Q(sL, a) = 0, P(sL, a) = pa};然后备份价值v。

    Backup (Fig. 2c). 在每步t≤L的反向遍历中更新边统计信息。访问次数递增N(st, at) = N(st, at) + 1,并且将动作价值更新为平均价值W(st, at) = W(st, at) + v, Q(st, at) = W(st, at) / N(st, at)。我们使用虚拟损失来确保每个线程评估不同的节点12,69

    Play (Fig. 2d). 搜索结束时,AlphaGo Zero在根布局s0选择一个落子a执行,该落子a与它的指数访问次数成正比,,其中τ是控制探索水平的温度参数。搜索树在随后的时间步骤被重用:与执行的动作相对应的子节点成为新的根节点;该子节点下的子树及其所有统计信息都将保留,而树的其余部分将被丢弃。如果其根价值和最优子价值低于阈值vresign,则AlphaGo Zero将退出。

      与AlphaGo Fan和AlphaGo Lee中的MCTS相比,主要区别在于AlphaGo Zero不使用任何rollout。它使用单个神经网络而不是单独的策略和价值网络;叶节点始终被扩展,而不是使用动态扩展;每个搜索线程仅等待神经网络评估,而不是异步执行评估和备份;而且没有树策略。在大型(40个块,40天)的AlphaGo Zero实例中也使用了换位表。

    Neural network architecture. 神经网络的输入是一个19×19×17图像堆栈,其中包含17个二进制特征平面。八个特征平面Xt由指示当前玩家的棋子存在的二值组成(如果交点 i 在时间步骤 t 处包含玩家颜色的棋子,则;如果交点为空,包含对手棋子,或者t < 0,则为0)。另外8个特征平面Yt代表对手棋子的相应特征。最终特征平面C代表执子的颜色,并且如果要执黑子,则常量值为1,如果要执白子,则常量值为0。这些平面串联在一起以提供输入特征st = [Xt, Yt, Xt-1, Yt-1, ... , Xt-7, Yt-7, C]。历史特征Xt,Yt是必要的,因为围棋不能仅从当前的棋子完全观察到,因为禁止重复。类似地,颜色特征C是必需的,因为无法观察到贴目。

      输入特征st由残差塔处理,残差塔由单个卷积块和19或39个残差块4组成。

      卷积块应用以下模块:

      (1)256个滤波器的卷积(核大小为3×3,步长为1)

      (2)批归一化18

      (3)非线性整流器

      每个残差块将以下模块顺序应用于其输入:

      (1)256个滤波器的卷积(核大小为3×3,步长为1)

      (2)批归一化

      (3)非线性整流器

      (4)256个滤波器的卷积(核大小为3×3,步长为1)

      (5)批归一化

      (6)跳过连接,将输入添加到模块

      (7)非线性整流器

      残差塔的输出被传递到两个单独的"头"中,以计算策略和价值。策略头应用以下模块:

      (1)2个滤波器的卷积(核大小为1×1,步长为1)

      (2)批归一化

      (3)非线性整流器

      (4)输出大小为192 + 1 = 362的向量的全连接线性层,对应于所有交点与放弃落子的logit概率

      价值头适用以下模块:

      (1)1个滤波器的卷积(核大小为1×1,步长为1)

      (2)批归一化

      (3)非线性整流器

      (4)一个全连接线性层到一个大小为256的隐含层

      (5)非线性整流器

      (6)一个全连接线性层到一个标量

      (7)tanh非线性输出在[-1, 1]范围内的一个标量

      在20块或40块网络中,总网络深度对于残差塔分别为39层或79层参数化层,另外,对于策略头为2层,对于价值头为3层。
      我们注意到,残差网络的另一种变体被同时应用于计算机围棋33,并获得了业余水平的性能;但是,这仅限于仅由监督学习训练的单头策略网络。

    Neural network architecture comparison. 图4显示了网络结构之间比较的结果。具体来说,我们比较了四种不同的神经网络:

    (1)dual-res:如上所述,网络包含20个块的残差塔,之后​​是策略头和价值头。这是AlphaGo Zero中使用的结构。
    (2)sep-res:网络包含两个20块残差塔。第一个塔后面是策略头,第二个塔后面是价值头。
    (3)dual-conv:网络包含一个由12个卷积块组成的非残差塔,后面是策略头和价值头。
    (4)sep-conv:网络包含两个由12个卷积块组成的非残差塔。第一个塔后面是策略头,第二个塔后面是价值头。这是AlphaGo Lee中使用的结构。

      每个网络都在固定的数据集上进行训练,该数据集包含上一次运行AlphaGo Zero所产生的最后200万个游戏的自我博弈数据,并使用了随机梯度下降以及针对监督学习实验所述的退火率,动量和正则化超参数;但是,由于有更多数据可用,因此交叉熵和MSE分量的权重相等。

    Evaluation. 我们通过测量每个玩家的Elo评分来评估AlphaGo Zero的相对强度(图3a, 6)。我们通过逻辑斯蒂函数估计玩家a击败玩家b的概率,并通过贝叶斯逻辑斯蒂回归估计评分e(·),由BayesElo程序25使用标准常数celo = 1/400计算。

      Elo评分是根据AlphaGo Zero,AlphaGo Master,AlphaGo Lee和AlphaGo Fan之间每5s比赛的结果计算得出的。来自AlphaGo Zero的原始神经网络也包括在比赛中。AlphaGo Fan,Crazy Stone,Pachi和GnuGo的Elo评分被固定在先前工作中的比赛价值上12,并与该工作中报道的玩家相对应。AlphaGo Fan对Fan Hui的比赛结果以及AlphaGo Lee对李世石的比赛结果也被包含进去,以根据人类参考来确定比例,否则由于自我博弈的偏差,AlphaGo的Elo评分高得不切实际。

      图3a, 4a, 6a中的Elo评分是根据自我博弈训练期间玩家αθi每次迭代之间的评估游戏结果计算得出的。进一步的评估还针对Elo评分锚定于先前发布的价值的基准玩家进行12

      我们使用与2016年在首尔对阵李世石相同的玩家和比赛条件,测量了AlphaGo Zero对阵AlphaGo Lee的头对头性能,以及AlphaGo Zero对AlphaGo Master的40个块实例。每个玩家获得2小时的思考时间,外加每落子60秒的3个读秒周期。所有比赛均按照中国规则进行,贴目为7.5目。

    Data availability. 用于验证和测试的数据集是GoKifu数据集(可从http://gokifu.com/获得)和KGS数据集(可从https://u-go.net/gamerecords/获得)。

  • 相关阅读:
    《阿里感悟》- 技术人员的职业规划
    DIV Vue-cil脚手架
    Django PIL模块(生成随机验证码)
    Django auth模块(用户认证组件)
    Django 数据处理流程
    Django 中间件
    Django ORM (2)
    Django组件——Form
    Django orm
    Django urls
  • 原文地址:https://www.cnblogs.com/lucifer1997/p/14020046.html
Copyright © 2011-2022 走看看