首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

终极版AlphaGo,DeepMind新算法MuZero作者解读

译者:AI研习社(季一帆)

MuZero是令人振奋的一大步,该算法摆脱了对游戏规则或环境动力学的知识依赖,可以自行学习环境模型并进行规划。即使如此,MuZero仍能够实现AlphaZero的全部功能——这显示出其在许多实际问题的应用可能性!

所有一切不过是统计

MuZero是一种机器学习算法,因此自然要先了解它是如何使用神经网络的。简单来说,该算法使用了AlphaGo和AlphaZero的策略网络和值网络:

策略和值的直观含义如下:

策略p(s,a)表示在状态s时所有可能的动作a分布,据此可以估计最优的动作。类比人类玩家,该策略相当于快速浏览游戏时拟采取的可能动作。

值v(s)估计在当前状态s下获胜的可能性,即通过对所有的未来可能性进行加权平均,确定当前玩家的获胜概率。

这两个网络任何一个都非常强大:只根据策略网络,能够轻易预测每一步的动作,最终得到良好结果;只依赖值网络,始终选择值最高的动作。但是,将这两个估计结合起来可以得到更好的结果。

取胜之路

与AlphaGo和AlphaZero相似,MuZero也使用蒙特卡洛树搜索方法(MCTS)汇总神经网络预测并选择适合当前环境的动作。

MCTS是一种迭代的,最佳优先的树搜索过程。最佳优先意味着搜索树的扩展依赖于搜索树的值估计。与经典方法(如广度优先或深度优先)相比,最佳优先搜索利用启发式估计(如神经网络),这使其在很大的搜索空间中也可以找到有效的解决方案。

MCTS具有三个主要阶段:模拟,扩展和反向传播。通过重复执行这些阶段,MCTS根据节点可能的动作序列逐步构建搜索树。在该树中,每个节点表示未来状态,而节点间的边缘表示从一个状态到下一个状态的动作。

在深入研究之前,首先对该搜索树及逆行介绍,包括MuZero做出的神经网络预测:

圆圈表示树节点,对应环境状态;线表示从一个状态到下一个状态的动作;根节点为当前环境状态,即围棋面板状态。后续章节我们会详细介绍预测和动力学函数。

模拟:从树的根节点出发(图顶部的淡蓝色圆圈),即环境或游戏的当前位置。在每个节点(状态s),使用评分函数U(s,a)比较不同的动作a,并选择最优动作。MuZero中使用的评分函数是将先前的估计p(s,a)与v(s')的值结合起来,即

其中c是比例因子,随着值估计准确性的增加,减少先验的影响。

每选择一个动作,我们都会增加其相关的访问计数n(s,a),以用于UCB比例因子c以及之后的动作选择。

模拟沿着树向下进行,直到尚未扩展的叶子。此时,应用神经网络评估节点,并将评估结果(优先级和值估计)存储在节点中。

扩展:一旦节点达到估计量值后,将其标记为“扩展”,意味着可以将子级添加到节点,以便进行更深入的搜索。在MuZero中,扩展阈值为1,即每个节点在首次评估后都会立即扩展。在进行更深入的搜索之前,较高的扩展阈值可用于收集更可靠的统计信息。

反向传播:最后,将神经网络的值估计传播回搜索树,每个节点都在其下保存所有值估计的连续均值,这使得UCB公式可以随着时间的推移做出越来越准确的决策,从而确保MCTS收敛到最优动作。

中间奖励

细心的读者可能已经注意到,上图还包括r的预测。某一情况(如棋盘游戏)在完全结束后提供反馈(获胜/失败结果),这样可以通过值估计进行建模。但在另外一些情况下,会存在频繁的反馈,即每次从一种状态转换到另一种状态后,都会得到回报r。

只需对UCB公式进行简单修改,就可以通过神经网络预测直接对奖励进行建模,并将其用于搜索。

其中,r(s,a)是指在状态s时执行动作a后观察到的奖励,而折扣因子γ是指对未来奖励的关注程度。

由于总体奖励可以时任意量级的,因此在将其与先验奖励组合之前,我们将奖励/值估计归一化为区间[0,1]:

其中,q_min和q_max分别是整个搜索树中观察到的最小和最大r(s,a)+γ⋅v(s')估计。

过程生成

重复执行以下过程可实现上述MCTS:

在当前环境状态下进行搜索;

根据搜索的统计信息π_t选择一个动作a_(t+1);

根据该动作更新环境,得到新的状态s_(t+1)和奖励u(t+1);

重复上述过程。

动作的选择可以是贪心的(选择访问次数最多的动作),也可以是探索性的:通过一定的温度t控制探索程度,并对与访问次数n(s,a)成比例的动作a进行采样:

当t = 0时,等效贪婪采样;当t = inf时,等效均匀采样。

训练

现在,我们已经学会了运行MCTS来选择动作,并与环境互动生成过程,接下来就可以训练MuZero模型了。

首先,从数据集中采样一条轨迹和一个位置,然后根据该轨迹运行MuZero模型:

可以看到,MuZero算法由以下三部分组成:

表示函数h将一组观察值(棋盘)映射到神经网络的隐藏状态s;

动态函数g根据动作a_(t + 1)将状态s_t映射到下一个状态s_(t + 1),同时估算在此过程的回报r_t,这样模型就能够不断向前扩展;

预测函数f根据状态s_t对策略p_t和值v_t进行估计,应用UCB公式并将其汇入MCTS过程。

根据轨迹选择用于网络输入的观测值和动作。相应地,策略、值和奖励的预测目标是在生成存储的轨迹。

从下图可以看到过程生成(B)与训练(C)之间的一致性:

具体问言,MuZero估计量的训练损失为:

策略:MCTS访问统计信息与预测函数的策略logit之间的交叉熵;

值:N个奖励的折扣和+搜索值/目标网络估计值与预测函数的值之间的交叉熵或均方误差;

奖励:轨迹观测奖励与动态函数估计之间的交叉熵。

重分析

在了解了MuZero的核心思想后,接下来我们将介绍重分析技术,这将显著提高模型对大量数据的搜索效率。

在一般训练过程中,通过与环境的相互作用,我们会生成许多轨迹,并将其存储在重播缓冲区用于训练。那么,我们可以从该数据中获得更多信息吗?

很难。由于需要与环境交互,我们无法更改存储数据的状态、动作或奖励。在《黑客帝国》中可能做到,但在现实世界中则不可能。

幸运的是,我们并不需要这样。只要使用更新的、改进标签的现有输入,就足以继续学习。考虑到MuZero模型和MCTS,我们做出如下改进:

保持轨迹(观测、动作和奖励)不变,重新运行MCTS,就可以生成新的搜索统计信息,从而提供策略和值预测的新目标。

我们知道,在与环境直接交互过程中,使用改进网络进行搜索会获得更好的统计信息。与之相似,在已有轨迹上使用改进网络重新搜索也会获得更好的统计信息,从而可以使用相同的轨迹数据重复改进。

重分析适用于MuZero训练,一般训练循环如下:

设置两组异步通信任务:

一个学习者接收最新轨迹,将最新轨迹保存在重播缓冲区,并根据这些轨迹进行上述训练;

多个行动者定期从学习者那里获取最新的网络检查点,并使用MCTS中的网络选择动作,与环境进行交互生成轨迹。

为实现重分析,引入两个新任务:

重分析缓冲区,用于接收参与者生成的所有轨迹并保留最新轨迹;

多个重分析行动者从重分析缓冲区采样存储的轨迹,使用学习者的最新网络检查点重新运行MCTS,并将生成的轨迹和更新的统计信息发送给学习者。

由于学习者无法区分新轨迹和重分析的轨迹,这使得新轨迹与重分析轨迹的比例更改变得简单。

MuZero命名含义

MuZero的命名基于AlphaZero,其中Zero表示是在没有模仿人类数据的情况下进行训练的,Mu取代Alpha表示使用学习模型进行规划。

更研究一些,Mu还有其他丰富的含义:

结语

希望本文对MuZero的介绍对你有所启发!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210107A04XD700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券