【IT168 资讯】在2016年3月,DeepMind的AlphaGo成为第一个击败人类围棋高手的人工智能。这个版本的AlphaGo - AlphaGo Lee ,使用了世界上最好的棋手来训练。近期,新的神经网络 AlphaGo Zero发布,它不需要人来告诉它如何去玩。它不仅优于以前的围棋棋手、无论是人还是机器,而且只需要三天的训练时间。它从空白状态学起,在无任何人类输入的条件下,AlphaGo Zero能够迅速自学围棋,并以100:0的战绩击败“前辈”。那么,它的工作原理是什么呢?
蒙特卡罗树搜索
采用蒙特卡罗树搜索(MCTS)来编写机器人的游戏。一个机器人在玩围棋、象棋或者跳棋,可以计算出它应该如何移动,然后检查所有可能的反应、动作等等。对于一个游戏来说,像Go这样的游戏的数量增长的非常快。
从技术上讲,该算法的工作原理如下。正在进行的比赛是在初始状态s0s0,它是机器人的游戏。机器人可以从一组actionsAA中选择。蒙特卡洛树搜索从一个由单个节点fors0s0组成的树开始。这个节点是通过扩大每个actiona∈Aa∈每个行动并构建相应的子节点。下面我们展示的是一个井字游戏的扩展:
然后必须确定每个新的子节点的值。在子节点中,游戏通过随机从子状态移动到赢、输或平分。赢了计分+1,,输了-1,平分记0。
上面给出的第一个孩子的随机值为+ 1。这个值可能不能代表非常好的的播放,它可以根据播放进度而变化。人们随机抽取,往往可以通过遵循一个更好的,尽管通常是随机的策略,或通过直接估计状态的价值来做得更好。稍后会有更详细的介绍。
在上面,我们显示了为每个子节点提供近似值的扩展树。注意,我们存储了两个属性:累积值WW,以及在该节点或NN下运行的次数。我们只访问过每个节点一次。
然后通过增加父节点的值和访问计数,将来自子节点的信息传播回树。它的累积价值被设定为其子女的总累积价值:
蒙特卡罗树搜索继续进行多次迭代,包括选择一个节点、扩展它,以及传播新的信息。扩展和传播已经包括在内。
蒙特卡罗树搜索并不会扩展所有的叶节点,因为那样会非常昂贵。相反,选择过程中会择在有利可图的、高估算值和相对未访问的低访问数之间取得平衡的节点。
通过从根节点上遍历树来选择一个叶节点,总是选择UC)分数:
WiWi是iith子的累积值,NiNi是iith子的累计值,NpNp为父节点的访问次数。参数c≥0 c≥0控制在有利可图的较低的节点(低cc)和探索节点访问计数(高cc) 之间权衡。通常是由经验决定的。
c=1c= 1的井字树的UCT分数(UU):
在这种情况下,我们选择第一个结点s0,1s0,1。将该节点扩展,并将值传回:
每个累积的值WW反映X的赢或输。在选择过程中,我们跟踪它是否为X或O转向移动,并在0转的时候翻转WW的符号。
我们继续运行蒙特卡洛树搜索的迭代,直到我们耗尽了时间。树逐渐扩大,我们(希望)探索可能的移动,确定非常好的的移动。然后,机器人在最初的游戏中,选择了第一个访问次数最多的孩子,来进行真正的游戏。例如,如果树的顶部看起来像:
然后机器人将选择第一个动作,继续执行s0,1s0,1。
专家政策的效率
像象棋和围棋这样的游戏有很大的分支因素。在给定的游戏状态中,有很多可能采取的动作,使得我们很难充分地探索未来的游戏状态。
使用蒙特卡罗树搜索的移动评估还不够有效。我们需要一种方法来进一步将注意力集中在有价值的举动上。
假设我们有一个专家政策ππ,对于一个给定的状态,ss,那么专家级球员让每个可能的行动变成什么样?对于井字游戏的例子来说,这可能是:
其中每个π=π(ai∣s0)π=π(ai∣s0)的概率是选择iith行动aiai s0s0的给定根状态。
如果专家政策非常好,那么我们可以产生一个强大的机器人根据ππ产生的概率,或者更好的是,通过概率最高的移动,直接规划下一个行动。不幸的是,得到一个政策专家是困难的,而且验证一个人的政策是最优的同时也是很困难的。
幸运的是,可以通过使用蒙特卡罗树搜索的修改形式来改进策略。该版本还将根据策略存储每个节点的概率,并使用这个概率来调整节点在选择期间的得分。DeepMind使用的概率上置信数的分数为:
和以前一样,分数在不断产生高分的节点和未开发的节点之间进行权衡。目前,节点勘探以专家政策为指导,对移动专家政策的偏向性考虑。如果专家政策确实是好的,那么蒙特卡洛树搜索将有效地聚焦于游戏状态的良好演化。如果专家政策不好,那么蒙特卡洛树搜索可能专注于游戏状态的糟糕演化。无论哪种方式,有限的样本的数目变大,一个节点的值是由win /NiWi/Ni /NiWi/ Ni为主。
通过值逼近的效率
第二种形式的效率可以通过避免昂贵的且潜在的不准确的随机实现。一种选择是使用前一节中的专家策略来指导随机部署。如果政策是好的,然后推出应该反映更现实的、专家级的游戏进程,从而更可靠地估计一个州的价值。
第二种方法是完全避免的。显然,如果它是一个很好的近似值,但是可以比部署时执行得快,那么执行时间可以节省而不牺牲性能。
近似值可以与专家策略一起使用,以加速蒙特卡罗树搜索。但有一个严重的问题是:如何获得专家政策和价值函数?是否存在训练专家策略和值函数的算法?
Alpha Zero神经网络
Alpha Zero算法通过加速蒙特卡罗树搜索引擎,通过玩游戏来提高专家策略和价值功能。专家政策ππ和近似值函数W W ^ ^都是由深层神经网络表示。实际上,为了提高效率,Alpha Zero使用一种神经网络ff,在游戏状态下,同时产生了下一个动作的概率和近似状态值。(从技术上讲,它在前八场比赛中都有,而一个指标告诉它轮到谁了。)
f(s)→(p W)
f(s)→(p W)
在搜索树中,通过神经网络对树叶进行评估。每个子节点初始化为N =0N= 0,W =0W= 0,并与PP对应于网络的预测。扩展节点的值被设置为预测值,然后该值将被备份到树中。
选择和备份保持不变。简单地说,在备份期间,父节点访问计数将递增,其值根据WW增加。
搜索树跟踪另一个选择、扩展和备份步骤:
Alpha Zero算法的核心思想是可以改进神经网络的预测,利用蒙特卡罗树搜索生成的游戏可以提供训练数据。神经网络的政策部分被训练的预测概率pp s0s0匹配概率得到提高。在运行蒙特卡罗树搜索之后,改进的策略预测是:
πi = N1 /τi
πi = Ni1 /τ
对于一个恒定的τ。τ接近零值产生的政策,根据蒙特卡洛树搜索的评估选择最好的移动。
通过对预测值进行训练,提高神经网络的值,使其与游戏的最终赢/输/平局结果相匹配,其损失函数为:
(W-Z)2 +πTlnp +λ∥θ∥22
(W-Z)2 +πTln p +λ为θ为22
训练完全是在自我娱乐中完成的。设置一个统计与一组随机初始化的神经网络参数。这个神经网络随后被用于多个游戏中发挥作用。在这些游戏中,对于每一个移动,用于计算ππ蒙特卡洛树搜索。每个游戏的最终结果确定为ZZ游戏的价值。
DeepMind为人们提供了一种干净而稳定的学习算法,可以有效地利用自玩的数据来训练游戏。虽然目前的Zero算法只适用于离散的游戏,但它是否会被扩展到MDPs或未来的部分还未可知。