MCTS based方法(即AlphaGo系列)在很多棋类领域取得了巨大成功,但在这些任务中,模拟器都是完美的、可获得的。但是,在实际问题中,环境动力学通常是复杂且未知的。这项工作提出了MuZero算法,该算法通过将基于树的搜索与学习的模型相结合,可以在一系列具有挑战性和视觉复杂的领域中实现超人的性能,而无需了解其基本动态。 MuZero学习了一个模型,该模型在进行迭代应用时可以预测与规划最直接相关的量:reward,policy和value function。MuZero在57种不同的Atari游戏上达到了最新水平。在不了解游戏规则的情况下在围棋,国际象棋和将棋上匹配了游戏规则附带的AlphaZero算法的超人性能。
文章目录
- 1. Introduction
- 2. PriorWork
- 3. MuZero Algorithm
- 4. Results
- Appendix
- A. Comparison to AlphaZero
- B. Search
- C. Hyperparameters
- D. Data Generation
- E. Network Input
- Representation Function
- Dynamics Function
- F. Network Architecture
- G. Training
- H. Reanalyze
1. Introduction
现有的规划算法都是基于环境动力学已知,例如游戏规则或精确的模拟器。
现有的model-based强化学习方法大多专注于重建真实的环境状态或是完整的观测序列。
但是,先前的MBRL工作在诸如Atari 2600游戏之类的视觉丰富领域还远远没有达到最新水平。 取而代之的是,最成功的方法是基于无模型的RL,它们直接从与环境的相互作用中估计最佳的策略和/或价值。 但是,在需要精确和复杂的超前预测的领域(例如国际象棋和围棋)中,无模型算法反过来与现有技术相去甚远。
MuZero建立在AlphaZero强大的搜索和基于搜索的策略迭代算法的基础上,但是将学习到的模型整合到训练过程中。 MuZero还将AlphaZero扩展到了更广泛的环境,包括单个智能体域(而不是棋类中的两个玩家)和中间时间步长的非零奖励(棋类为zero-sum)。
该算法的主要思想(如图一所示)是预测未来与规划直接相关的那些方面。该模型将观察结果(例如Go棋盘的图像或Atari屏幕的图像)作为输入,并将其转换为hidden state (可参考Value Prediction Network)。然后,通过接收先前的隐藏状态和假设的下一个动作的循环过程来迭代地更新该隐藏状态(类似使用options更新后的abstract state)。在这些步骤的每一个步骤中,模型都会预测策略(例如,下棋的动作),价值函数(例如,预测的获胜者)和即时奖励(例如,通过下棋获得的分数)。该模型是端到端训练的,其唯一目标是准确估算这三个重要量,以匹配通过搜索产生的策略和价值的改进估算以及观察到的奖励。对于隐藏状态:
① 没有直接的约束或要求去重建原始观测值所需的所有信息,从而大大减少了模型必须维护和预测的信息量;
② 不要求隐藏状态与环境的未知真实状态匹配;
③ 没有任何其他对状态语义的约束。
相反,隐藏状态可以自由地以与预测当前和未来的价值和策略相关的任何方式来表示状态。直观上,代理可以在内部发明导致最准确计划的规则或动态。
2. PriorWork
作为中间步骤,基于模型的RL会构建环境模型。传统上,此模型由马尔可夫决策过程(MDP)表示,该过程包括两个部分:状态转换模型(预测下一个状态)和奖励模型(预测在该过渡期间的预期奖励)。该模型通常以所选动作或时间上抽象的行为(例如options)为条件。一旦构建了模型,就可以直接应用MDP规划算法(例如值迭代或MCTS)来计算MDP的最优值或最优策略。在大型或部分观测的环境中,算法必须首先构造模型应预测的状态表示。表示学习,模型学习和规划之间的这种三方分离可能存在问题,因为agent无法出于有效规划的目的优化其表示或模型,因此,例如,建模错误可能会在规划期间加重。
基于模型的RL的常见方法集中于直接在像素级别对观察流建模。据推测,深层的随机模型可以减轻复合误差的问题。 但是,在大规模问题中,像素级粒度的规划在计算上不易处理。其他方法可建立潜在状态空间模型,该模型足以重建像素级的观察流或预测其未来的潜在状态,这有助于进行更有效的规划,但仍将大部分模型功能集中在潜在无关的细节上。 这些现有方法均未构建可促进视觉复杂领域(如Atari)中有效规划的模型。 即使在数据效率方面,结果也落后于经过良好调整的无模型方法。
最近已经开发了一种完全不同的基于模型的RL方法,其端到端集中在预测值函数上。 这些方法的主要思想是构造一个抽象MDP模型,以便在抽象MDP中进行规划等同于在实际环境中进行规划。 通过确保值等效来实现这种等效,即从相同的真实状态开始,通过抽象MDP的轨迹的累积奖励与实际环境中的轨迹的累积奖励相匹配。
Predictron首先引入了用于预测值的价值等效模型(无动作)。 尽管基础模型仍然采用MDP的形式,但并不需要其转换模型来匹配环境中的实际状态。 相反,MDP模型被视为深度神经网络的隐藏层。 对展开的MDP进行训练,以使预期的累积奖励总和与实际环境(例如实际环境)的预期值相匹配,通过TD-learning。
价值等效模型随后被扩展为优化价值(有行动)。 TreeQN学习了一个抽象的MDP模型,使得对该模型的树搜索(由树结构的神经网络表示)近似于最优值函数。 价值迭代网络学习局部MDP模型,从而使该模型上的价值迭代(由卷积神经网络表示)近似于最优价值函数。价值预测网络是MuZero的最接近的先驱:它们学习基于实际行动的MDP模型,对展开的MDP进行训练,使得根据简单的前瞻性搜索生成的实际操作序列,累积的奖励总和与实际环境相匹配。 与MuZero不同,它没有策略预测,而搜索仅利用值预测。
3. MuZero Algorithm
模型
μθ?在每一时间步
t的
k=1...K个步长上进行预测,条件为过去的观测值
o1?,...,ot?和将来的行动
at?,...,at+k?。该模型预测了未来的三个项:
- 策略
ptk?≈π(at+k+1?∣o1?,...,ot?,at?,...,at+k?);
- 值函数
vtk?≈E[ut+k+1?+γut+k+2?+...∣o1?,...,ot?,at?,...,at+k?];
- 即时奖励
rtk?≈ut+k?。
u是真实的、观察到的奖励;
π是选择真实actions的策略;
γ为环境的衰减函数。
模型由a representation function, a dynamics function, and a prediction function组成(下述公式与符号省略时刻
t的下标)。
- The dynamics function:
rk,sk=gθ?(sk?1,ak)
该模型计算给定状态和操作的预期回报和状态转换,是一个递归过程,在每个假设步骤k处计算即时回报
rk?和内部状态
sk?。注意,内部状态
sk?没有附加环境状态的语义,它只是整个模型的隐藏状态,其唯一目的是准确预测相关的未来量:策略、价值和回报。本文对动力学函数作了确定性的表示。
- The prediction function:
pk,vk=fθ?(sk)
策略和价值函数是通过prediction function从内部状态sk计算的,类似于AlphaZero的联合策略和价值网络;
- The representation function:
s0=hθ?(o1?,...,ot?)
根状态s0使用representation function初始化,该函数对过去的观察进行编码,同样,它除了支持未来的预测外,没有特殊的语义。
给定这样一个模型,就有可能根据过去的观察结果
o1?,...,ot?来搜索假设的未来轨迹
a1?,...,ak?。 例如,原始搜索可以简单地选择使值函数最大化的
k个步骤的动作序列。 更笼统地说,我们可以将任何MDP规划算法应用于由动力学函数引起的内部奖励和状态空间。 具体来说,我们使用类似于AlphaZero搜索的MCTS算法,该算法被普遍推广为允许单个代理域和中间奖励。 在每个内部节点,它利用当前模型参数
θ产生策略,价值和奖励的估计值。 MCTS算法输出建议的策略
πt?和估计的价值
vt?。
共同训练模型的所有参数
μθ?={hθ?,fθ?,gθ?},以针对每个假设步
k将策略,价值和奖励准确匹配到经过
k个实际时间步后观察到的相应目标值。与AlphaZero相似,改进的策略目标是通过MCTS搜索生成的,且提高价值目标是通过玩游戏或MDP生成的。但是,与AlphaZero不同,我们通过从搜索值引导n步进入未来,允许有折扣和中间奖励的long episodes,
zt?=ut+1?+γut+2?+γn?1ut+n?+γnvt+n?。棋盘游戏中的最终结果(输,平,赢)被视为情节的最后一步所产生的奖励
ut?∈{?1,0,+1}。
- 第一个目标是使预测策略
ptk?与搜索策略
πt+k?之间的误差最小;
- 第二个目标是使预测值
vtk?和值目标
zt+k?之间的误差最小;
- 第三个目标是使预测奖励
rtk?和观测奖励
ut+k?之间的误差最小;
- 最后,还添加了L2正则化项。
因此,总损失为:
4. Results
我们使用
K=5个假设步骤训练MuZero。 在棋盘游戏中训练了100万个mini-batch,大小为2048,在Atari中为1024。 在训练和评估期间,MuZero在棋盘游戏中每次搜索使用了800次模拟,在Atari中每次搜索使用了50次模拟。 The representation function使用与AlphaZero相同的卷积和残差架构,但具有16个残差块而不是20。The dynamics function uses使用与The representation function相同的架构,而the prediction function使用与AlphaZero相同的架构。 所有网络都使用256 hidden planes。
Appendix
A. Comparison to AlphaZero
AlphaGo Zero 和 AlphaZero中规划过程利用了两个独立的组件:
- 模拟器实现游戏规则,该规则用于在遍历搜索树时更新游戏状态;
- 神经网络共同预测模拟器产生的相应位置的策略和值(参见图1 A)。
具体来说,AlphaGo Zero和AlphaZero在三个地方使用了游戏规则的知识:
- 搜索树中的状态转换;
- 搜索树的每个节点处可用的动作;
- 搜索树中的终止节点 。
在MuZero中,所有这些都已替换为使用神经网络学习的单个隐式模型(请参见图1 B):
- State transition
AlphaZero可以使用真实动力学过程的完美模拟器。 相反,MuZero在搜索中采用了学习的动力学模型。 在这种模型下,树中的每个节点都由一个对应的隐藏状态表示。 通过为模型提供隐藏状态sk?1?和动作
ak?,搜索算法可以过渡到新的节点
sk?=g(sk?1?,ak?);
- Actions available
AlphaZero使用从模拟器获得的一组合理动作来mask网络在搜索树中各处产生的先验信息。 MuZero仅在可查询环境的搜索树的根处masks合理动作,而不会在搜索树内执行任何屏蔽操作。这是可能的,因为网络会迅速学会不预测要在其训练的轨迹上从未发生过的动作。 - Terminal nodes
AlphaZero在表示终止状态的树节点处停止搜索,并使用模拟器提供的终止价值,而不是网络产生的价值。 MuZero不会对终止节点进行特殊处理,而是始终使用网络预测的值。 在树内,搜索可以越过终止节点,在这种情况下,网络被期望始终预测相同的值。 这可以通过在训练过程中将终止状态视为absorbing states来实现。
此外,MuZero旨在在一般强化学习环境中运行:单智能体,任意大小的衰减中间奖励。相比之下,AlphaGo Zero和AlphaZero设计为可在两人游戏中操作,终止奖励为
±1。
B. Search
我们的方法基于高置信度边界的蒙特卡洛树搜索,该方法可以渐进地收敛到单智能体领域中的最优策略和zero-sum博弈中的极小值函数。搜索树的每个节点都与内部状态
s相关联。 对于每个来自
s的动作,都有一个边
(s,a),该边存储一组统计信息
{N(s,a),
Q(s,a),
P(s,a),
R(s,a),
S(s,a)},分别代表访问次数N,平均值Q,策略P,奖励R和状态转换S。与AlphaZero相似,搜索分为三个阶段,重复进行多次模拟。
- Selection:
每次模拟都从内部根状态s0开始,并在模拟到达叶节点
sl时结束。 对于模拟的每个假设时间步
k=1,...,l,通过最大化置信区间的上限(式二),根据存储的内部状态
sk?1的统计信息选择一个动作
ak:
常数c1?和
c2?用于控制先验
P(s,a)相对于值
Q(s,a)的影响,因为节点的访问频率更高。 在我们的实验中,
c1?=1.25和
c2?=19652。对于
k
状态转换和奖励表中查找下一个状态和奖励, sk=S(sk?1,ak),rk=R(sk?1,ak)。
- Expansion:
在模拟的最后时间l,奖励和状态由动力学函数计算,
rl,sl=gθ?(sl?1,al),并存在相应的表格中,
R(sl?1,al)=rl,S(sl?1,al)=sl。策略和价值由the prediction function计算
pl,vl=fθ?(sl)。 对应于状态
sl的新节点被添加到搜索树中。 来自新扩展节点的每个边
(sl,a)初始化为
{N(sl,a)=0,Q(sl,a)=0,P(sl,a)=pl}。 注意,搜索算法每次模拟最多只能调用一次动力学函数和预测函数。 计算成本与AlphaZero中的数量级相同。
- Backup:
在模拟结束时,将更新轨迹的统计信息。 Backup一般适用于以下情况:环境可以产生中间奖励,折扣不等于1,并且价值估计是没有界限的(棋类游戏中discount被假设为1,且没有中间奖励)。对于k=l,...,0,我们通过价值函数
vl自举形成累积折现奖励的
(l?k)步估算,并更新相应边上的统计值:
在两人zero-sum游戏中,值函数范围被限制在[0,1]区间内。 这种选择使我们可以使用pUCT规则(等式2)将价值估计与概率结合起来。 但是,由于在许多环境中该值是无界的,因此有必要调整pUCT规则。 一个简单的解决方案是使用在环境中可以观察到的最大分数来重新缩放该值或适当地设置pUCT常数。 但是,这两种解决方案都是特定于游戏的,因此需要在MuZero算法中添加先验知识。 为了避免这种情况,MuZero计算归一化的Q值估计值
Qˉ?∈[0,1],使用到那时为止在搜索树中观察到的最小最大值。 在selection阶段达到某个节点时,该算法使用以下公式计算要在pUCT规则中使用的边缘的标准化Q值:
C. Hyperparameters
为简单起见,我们优先使用与先前工作相同的体系结构选择和超参数。具体来说,我们从网络架构和AlphaZero的搜索选择入手。 对于棋盘游戏,我们每次搜索都使用与AlphaZero中相同的UCB常数,狄利克雷探索噪声和相同的800次模拟。由于Atari中的分支因子小得多,策略也更简单,因此每次搜索仅使用50次模拟来加快实验速度。 如图3B所示,该算法对该选择不是很敏感。 我们还使用与R2D2相同的衰减因子(0.997)和价值转换(请参见网络体系结构部分)。对于文本中未提及的参数值,请参考伪代码。
D. Data Generation
为了生成训练数据,网络的最新检查点(每1000个训练步骤更新一次)用于与MCTS一起玩游戏。 在棋盘游戏,围棋和将棋中,每步进行800次模拟以选择一个动作; 在Atari中,由于行动空间小得多,每步50次模拟就足够了。
对于棋盘游戏,游戏一结束就被发送到训练工作。 由于Atari游戏的长度更长(最多30分钟或108,000帧),因此每200步发送一次中间序列。 在棋盘游戏中,训练工作会在内存重播缓冲区中保留最近收到的100万次游戏; 在Atari(视觉观察较大)中,保留了最近的125,000个长度为200的序列。
在棋盘游戏领域的经验生成过程中,使用了与AlphaZero中所述的探索方案相同的探索方案。 使用此方案的变体,在Atari域中,从每个游戏持续时间内的访问次数分布中采样动作,而不仅仅是前
k个动作。 此外,访问次数分布是使用温度参数
T来参数化的:
T根据网络训练步骤的数量而衰减。 具体来说,对于前500k训练步骤,温度为1;对于接下来的250k训练步骤,温度为0.5;对于其余250k,训练温度为0.25。 这样可以确保随着训练的进行,动作选择变得更加贪婪。
E. Network Input
Representation Function
作为Go、chess和shogi的Representation Function输入的棋盘上的历史状态的表示类似于AlphaZero。在Go和shogi中,我们将最后8个棋盘状态编码;在国际象棋中,我们将历史记录增加到最后100个棋盘状态,以允许正确预测平局。
对于Atari,Representation Function的输入包括分辨率为96x96的最后32个RGB帧以及导致这些帧中每个帧的最后32个动作。 我们对历史动作进行编码是因为与棋盘游戏不同,Atari中的动作不一定会对观察结果产生可见的影响。 RGB帧编码为每种颜色一个平面,并重新缩放到范围
[0,1],分别用于红色,绿色和蓝色。 我们不对RGB输入执行其他归一化,白化或其他预处理。 历史动作被编码为简单的偏置平面,缩放为
a/18(Atari中共有18个动作)。
Dynamics Function
Dynamics Function的输入是由Representation Function或Dynamics Function的先前应用程序生成的隐藏状态,并与用于过渡的动作的表示连接在一起。 动作在与隐藏状态具有相同分辨率的平面中进行空间编码。 在Atari中,此分辨率为6x6(请参见“网络架构”中的下采样说明),在棋盘游戏中,该分辨率与棋盘大小相同(围棋为19x19,象棋为8x8,将棋为9x9)。
在围棋中,一个正常的动作(在棋盘上放一个子)被编码为一个全零平面,仅在所放子的位置上为1。pass被编码为一个全零平面。
在国际象棋中,使用8个平面对动作进行编码。 第一个one-hot平面对piece从哪个位置移动进行编码。 接下来的两个平面对piece被移动到的位置进行编码:一个one-hot平面用于对目标位置进行编码(如果在棋盘上);第二个二进制平面,用于指示目标(在棋盘上)是否有效。 这是必要的,因为为简单起见,我们的策略操作空间枚举了所有可能的操作的超集,但并非全部都是合法的,并且我们使用相同的操作空间进行策略预测并对Dynamics Function输入进行编码。 剩余的五个二进制平面用于指示升迁的类型(女王,骑士,主教,车手,无)。
shogi的编码类似,总共有11个平面。 我们使用前8个平面来指示棋子从何处移动-要么是棋盘位置(第一个独热平面),要么是7种类型的囚犯之一(剩余7个二进制平面)。 接下来的两个平面用于象棋一样对目标进行编码。 剩下的二进制平面指示该举动是否为升迁。
在Atari中,动作被编码为一个独热向量,该向量被适当地平铺到平面中。
F. Network Architecture
prediction function
pk,vk=fθ?(sk)使用与AlphaZero相同的结构:一或两个卷积层保留分辨率,但减少平面数,然后是一个完全连接的层以达到输出大小。
对于Atari中的价值和奖励预测,我们使用可逆变换
h(x)=sign(x)(∣x∣+1
ε=0.001 。然后,我们对标量奖励和价值目标应用转换
?,以获得等效的分类表示。我们使用大小为601的离散支撑集,对-300和300之间的每个整数提供一个支撑。在此变换下,每个标量表示为其两个相邻支撑的线性组合,从而可以通过
x=xlow??plow?+xhigh??phigh?恢复原始值。例如,将目标3.7表示为对3的支持权重为0.3,对4支持的权重为0.7。该网络的价值和奖励输出也使用一个大小为601的softmax输出建模。在推断过程中,通过首先在它们各自的softmax分布下计算它们的期望值,然后通过反转缩放变换来获得实际值和奖励。价值和奖励的缩放和转换在网络端透明地发生,并且对于算法的其余部分不可见。
Representation和Dynamics Function都使用与AlphaZero相同的体系结构,但是具有16个而不是20个残差块。 对于每个卷积,我们使用3x3内核和256个隐藏平面。
对于Atari来说,观测值具有较大的空间分辨率,Representation Function从一系列步长为2的卷积开始以降低空间分辨率。 具体来说,从输入分辨率为96x96和128个平面(32个历史帧,每个有3个颜色通道,与广播到平面的相应32个动作串联起来)开始,我们进行以下降采样:
对于dynamics function(始终以6x6的降采样分辨率进行操作),首先将动作编码为图像,然后将其与上一步的隐藏状态沿平面尺寸堆叠在一起。
G. Training
在训练过程中,MuZero网络将展开K个假设步,并与从MCTS actors生成的轨迹采样的序列对齐。 通过从replaybuffer中的任何游戏中采样状态来选择序列,然后从该状态展开K步。在Atari中,根据优先级重播提取样本,优先级
P(i)=∑k?pkα?piα??,其中
pi?=∣vi??zi?∣,
v是搜索值,
z是观察到的n步return。 为了校正优先采样带来的采样偏差,我们使用重要性权重
wi?=(N1??Pi?1?)β缩放损失。实验中设置
α=β=1。对于棋盘游戏,对状态进行统一采样。
序列的每个观测值
ot?都具有对应的MCTS策略
πt?,估计值
vt?和环境奖励
ut?。 在每个展开步k中,网络都会对该步的价值,策略和奖励目标产生损失,这些损失加起来会产生MuZero网络的总损失(请参见公式1)。 注意,在没有中间奖励的棋盘游戏中,我们忽略了奖励预测损失。 对于棋盘游戏,我们直接引导至游戏结束,这相当于预测最终结果; 对于Atari,我们将引导n = 10步。
为了在不同的展开步骤中保持大致相似的梯度大小,我们在两个不同的位置缩放梯度:
- 我们将每个head的损失按
K1?进行缩放,其中K是展开步数。 这样可以确保总梯度具有相似的幅度,而与我们展开多少步无关;
- 我们还将动力学函数开始处的梯度缩放
21?。 这样可以确保应用于动力学功能的总梯度保持恒定。
在本文报道的实验中,我们总是以K = 5步展开。 有关详细的说明,请参见图1。
为了改善学习过程并限制激活,我们还将隐藏状态缩放到与动作输入
([0,1])相同的范围:
sscaled?=max(s)?min(s)s?min(s)?.
H. Reanalyze
为了提高MuZero的采样效率,我们引入了该算法的第二种变体MuZero Reanalyze。MuZero Reanalyze重新审视其过去的时间步,并使用最新的模型参数重新执行其搜索,可能导致比原始搜索更好质量的策略。 在MuZero训练期间,此新策略被用作80%更新的策略目标。此外,目标网络
v?=fθ??(s0),基于最近的参数
θ?,用于为值函数提供更新的,稳定的n步自举目标,
zt?=ut+1?+γut+2?+...+γn?1ut+n?+γnvt+n??。此外,还对其他几个超参数进行了调整,主要是为了增加样本的重复使用率和避免过度拟合值函数。 具体而言,每个状态抽取了2.0个样本,而不是0.1个; 价值目标权重降低至0.25,而策略和奖励目标权重为1.0; 并且将n步返回降低为n = 5步,而不是n = 10步。