通过世界模型掌握多样化控制任务
Mastering diverse control tasks through world models
https://doi.org/10.1038/s41586-025-08744-2
在人工智能领域,开发一种能够解决广泛任务的通用算法一直是一个根本性的挑战。尽管当前的强化学习算法可以轻松应用于与其设计目标相似的任务,但要将其配置用于新的应用领域仍需要大量的人类专业知识和实验1,2。在这里,我们提出了第三代 Dreamer 算法,这是一种通用算法,在超过 150 个多样化的任务中表现优于专门设计的方法,并且只需使用单一配置。Dreamer 通过学习环境模型,并通过“想象”未来的场景来改进其行为策略。基于归一化、平衡和变换等鲁棒性技术,使得跨领域的学习过程保持稳定。据我们所知,Dreamer 是第一个无需人类数据或课程指导,就能从零开始在 Minecraft 中收集钻石的算法。这一成就是人工智能领域提出的一个重大挑战,它要求从像素输入和稀疏奖励中探索远见卓识的策略,而这些必须在一个开放世界环境中完成3。我们的工作使得在不需要大量实验调整的情况下解决复杂的控制问题成为可能,从而让强化学习具备了更广泛的适用性。
强化学习使计算机能够通过交互来解决任务,例如在围棋和 Dota 等游戏中超越人类水平4,5。它也是提升大型语言模型性能的重要组成部分,使其表现超出预训练数据所展示的能力6。尽管近端策略优化(PPO)算法7已成为强化学习领域的标准算法,但在许多情况下仍需要使用更专业的算法以获得更高的性能。这些专门的算法针对不同应用领域所带来的独特挑战进行了优化,例如连续控制8、离散动作9,10、稀疏奖励11、图像输入12、空间环境13 和棋盘游戏14。
然而,将强化学习算法应用于足够新颖的任务——例如从视频游戏转向机器人任务——通常需要大量的人力、专业知识以及计算资源来调整算法的超参数1。这种脆弱性成为将强化学习应用于新问题的一大瓶颈,并限制了其在计算成本高昂或调参不可行的任务中的适用性。开发一种无需重新配置即可学会掌握新领域的通用算法,是人工智能的核心挑战之一,也将为强化学习开辟出广泛的实际应用场景。
在此,我们提出 Dreamer,这是一种通用算法,在使用固定超参数的情况下,在广泛的领域中优于各类专业专家算法,使得强化学习可以便捷地应用于新问题。该算法基于“学习世界模型”的理念,使智能体具备丰富的感知能力以及对未来进行想象的能力15–17。如图 1 所示,这个世界模型预测潜在动作的结果,一个价值网络(critic 神经网络)评估每个结果的价值,而一个策略网络(actor 神经网络)则选择能达成最优结果的动作。
尽管这一理念直观上具有吸引力,但如何稳健地学习并利用世界模型以实现强大的任务表现,仍然是一个尚未解决的问题18。Dreamer 通过一系列基于归一化、平衡和变换的鲁棒性技术克服了这一挑战。我们在图 2 所总结的多个领域中超过 150 个任务上观察到了稳定的训练效果,同时在模型规模和训练预算方面也表现出良好的适应性。值得注意的是,更大的模型不仅得分更高,而且完成任务所需的交互次数更少,这为实践者提供了一种可预测的方式来提升性能和数据效率。
为了推动强化学习的边界,我们考虑了广受欢迎的视频游戏 Minecraft,近年来该游戏已成为研究热点19–21,并举办了国际竞赛,旨在开发能够自主学习在 Minecraft 中收集钻石的算法3。由于稀疏奖励、探索难度大、时间跨度长以及这个开放世界游戏的程序生成多样性,人们普遍认为在没有人类数据的情况下解决这个问题是对人工智能的重大挑战19。正因为这些困难,以往的方法不得不依赖人类专家数据和领域特定的课程设置20,21。据我们所知,Dreamer 是第一个在不使用任何人类数据或课程指导的情况下,从零开始成功在 Minecraft 中收集钻石的算法。
学习算法
我们提出了第三代 Dreamer 算法22,23。该算法由三个神经网络组成:世界模型用于预测潜在动作的结果,价值网络(critic)评估每个结果的价值,策略网络(actor)则选择能够达成最有价值结果的动作。这三个组件通过从经验回放中获取的数据进行并发训练,同时智能体也在与环境进行交互。为了在不同领域中取得成功,这三个组件都需要适应不同的信号幅度,并在其目标函数中稳健地平衡各项损失。这是一项挑战,因为我们的目标不仅是应对同一领域内的相似任务,还要在固定超参数的情况下跨多个不同领域进行学习。本节将介绍这些模型组件及其鲁棒的损失函数。
世界模型学习
世界模型通过自编码24 学习感官输入的紧凑表示,并通过预测潜在动作下的未来状态和奖励来支持规划能力。我们将世界模型实现为一个递归的状态空间模型25,如图 1 所示。首先,编码器将每个训练序列时间步 t 的感官输入 xt 映射为随机表示 zt。然后,一个带有递归状态 ht 的序列模型根据过去的动作 at−1 来预测这一系列表示。ht 和 zt 的拼接构成了模型状态,从中我们预测奖励 rt 和回合继续标志 ct ∈ {0, 1},并重构输入以确保表示具有信息性:
在这里,波浪号(~)表示从其对应分布中采样的随机变量。图 3 展示了世界模型对视频的长期预测结果。扩展数据图 1 中展示了更多的视频预测结果。编码器和解码器对于图像输入使用卷积神经网络(CNN),而对于向量输入则使用多层感知机(MLP)。状态动态模型、奖励预测器和回合继续标志预测器也都是 MLP。
表示(representation)是从一组 softmax 分布中采样得到的,并且我们在采样步骤中采用了直通梯度法(straight-through gradients)23。给定一个长度为 T 的序列批次,包含输入 x₁:ₜ、动作 a₁:ₜ、奖励 r₁:ₜ 和回合继续标志 c₁:ₜ,世界模型参数 ϕ 通过端到端优化,以最小化预测损失 Lpred、动态损失 Ldyn 和表示损失 Lrep,对应的损失权重分别为 βpred = 1,βdyn = 1 和 βrep = 0.1:
其中 Eqϕ 表示期望值。
预测损失通过后文将描述的 symlog 平方损失 来训练解码器和奖励预测器,并通过逻辑回归来训练回合继续标志预测器。动态损失通过最小化预测器 pϕ(zt∣ht) 与下一个随机表示 qϕ(zt∣ht, xt) 之间的 Kullback–Leibler (KL) 散度,来训练序列模型预测下一个表示。表示损失则反过来训练表示使其更具可预测性,这使我们能够在想象训练期间使用一个因子化的动态预测器以实现快速采样。
这两个损失在 stop-gradient 算子 sg(⋅) 和损失尺度上有所不同。为了避免出现一种退化解(即动态模型很容易被预测,但却不包含任何关于输入的信息),我们采用了 free bits26 技术,将动态损失和表示损失裁剪到低于 1 nat ≈ 1.44 bit 的阈值。当这些损失已经很好地被最小化时,该方法会暂时禁用它们,从而让学习过程专注于预测损失:
以前的世界模型需要根据环境的视觉复杂性对表示损失进行不同的缩放22。复杂的场景包含对控制任务不必要的细节,因此需要更强的正则化项来简化表示,使其更容易预测。而对于任务中像素级细节至关重要的简单图形,则需要较弱的正则化项以提取精细特征。我们发现,将 free bits 与较小的表示损失权重相结合,可以解决这一困境,使得在不同领域中使用固定的超参数成为可能。此外,如后文所述,使用 symlog 函数 对向量观测值进行变换,可以防止输入过大以及重构梯度过大,从而进一步稳定与表示损失之间的权衡。
在早期实验中,我们偶尔观察到 Kullback–Leibler(KL)损失出现尖峰,这与深度变分自编码器的相关报道一致27。为防止这种情况,我们将编码器和动态预测器的分类分布参数化为 1% 的均匀分布与 99% 的神经网络输出的混合形式,从而避免它们变得完全确定性,确保 KL 损失表现良好。更多模型细节和超参数详见补充信息部分。
价值网络(Critic)学习
由于 Critic 回归的目标依赖于其自身的预测,我们通过将 Critic 正则化为趋近于其自身参数的指数移动平均值(exponentially moving average)来稳定学习过程。这与之前强化学习中使用的目标网络 (target networks)类似9,但允许我们使用当前 Critic 网络来计算回报。我们还注意到,在训练初期,随机初始化的奖励预测器和 Critic 网络可能会导致预测出巨大的奖励值,从而延迟学习的开始。因此,我们将奖励预测器和 Critic 的输出权重矩阵初始化为零,以缓解这一问题并加速早期学习。
策略网络(Actor)学习
策略网络学习选择能够最大化回报的动作,同时通过一个熵正则项来进行探索。然而,该正则项的合适尺度取决于环境中奖励的尺度和频率。理想情况下,如果奖励稀疏,我们希望智能体更多地探索;如果奖励密集或接近当前状态,则应更多地利用。同时,探索的程度不应受到环境中奖励任意缩放的影响。这就要求我们在保留奖励频率信息的同时,对回报的尺度进行归一化。
回报分布可能是多模态的,并且可能包含离群值,尤其是在某些随机环境中,一些回合可获得的回报明显高于其他回合。如果仅根据观测到的最小和最大回报进行归一化,将会过度压缩回报的尺度,可能导致次优收敛。为了增强对这些离群值的鲁棒性,我们通过批次维度上第 5 百分位到第 95 百分位(Per)之间的范围来计算回报区间,并使用指数移动平均(EMA)对估计结果进行平滑处理:
以往的研究通常会归一化优势值,而不是回报,无论显著的回报是否触手可及,都会平等地强调回报和熵。当奖励稀疏时,放大优势值可能会放大噪声,这种噪声会超过熵正则化器的作用,从而阻碍探索。通过标准差对奖励或回报进行归一化,在标准差接近零的稀疏奖励情况下可能会失败,这会过度放大奖励并导致不稳定。约束优化的目标是在所有状态下平均实现固定的熵,无论可实现的回报如何,这种方法虽然稳健,但在稀疏奖励下探索缓慢,在密集奖励下收敛值较低。我们没有找到适用于这些方法的跨领域的稳定超参数。回报归一化通过设置分母上限克服了这些挑战,在稀疏奖励下能够快速探索,并在多样化领域中实现高性能收敛。
稳健的预测
使用对数作为变换函数将不允许我们预测取负值的目标。因此,我们选择了一个来自双对称对数函数族32 的函数,并将其命名为 symlog 作为变换函数,其逆变换函数为 symexp :
symlog 函数 对大正值和大负值的绝对值进行压缩。这使得在需要时,优化过程可以快速将网络预测推向较大的数值。symlog 函数在原点附近近似于线性函数(恒等变换),因此不会影响对足够小的目标值的学习。
之前有人提出过一种非对称的变换方法用于 Critic 学习33,但我们发现它在不同领域上的平均效果较差。
对于可能带有噪声的目标(如奖励或回报),我们进一步引入了 symexp 两热损失 (two-hot loss)。在此方法中,网络输出的是在一个指数间隔的区间 bin(bi ∈ B)上的 softmax 分布的 logits。预测结果通过这些区间位置与其对应预测概率加权后的加权平均值得到。重要的是,由于该加权平均值可以落在各个区间之间,网络能够输出所支持区间内的任意连续值:
网络使用两热编码 (two-hot encoded targets)10,28 进行训练,这是对连续值的一种 one-hot 编码的推广。一个标量的两热编码是一个具有 ∣B∣ 个元素的向量,除与该标量最接近的两个区间(bin)对应的索引 k 和 k + 1 外,其余元素均为 0。这两个位置上的元素之和为 1,并根据标量距离两个区间的远近,线性地赋予更靠近的那个区间更高的权重。
网络通过最小化带有软目标(soft targets)的分类交叉熵损失(categorical cross entropy loss)来进行训练。该损失仅依赖于分配给各个区间的概率,而不依赖于与区间位置相关联的连续值,从而完全将梯度的大小与信号的尺度解耦 :
应用这些原则后,Dreamer 对向量观测值进行处理时使用了 symlog 函数 ,无论是作为编码器的输入还是解码器的目标;同时,对于奖励预测器和 Critic 网络,则采用了 symexp 两热损失 (synexp two-hot loss)。我们发现,这些技术使得 Dreamer 能够在许多多样化的领域中实现稳健且快速的学习 。
评估
我们在8个领域 (包含超过150个任务)下,使用固定超参数 评估 Dreamer 的通用性。我们设计了实验,将 Dreamer 与文献中表现最好的方法进行比较,而这些方法通常是为特定基准专门设计和调优的。我们还与 PPO7 进行了对比——这是一种标准的强化学习算法,以鲁棒性强著称。我们使用一组固定的超参数运行 PPO,这些参数被选择以在多个领域上最大化性能,并成功复现了 PPO 在 ProcGen34 上的优秀结果。
为了进一步推动强化学习的边界,我们将 Dreamer 应用于具有挑战性的视频游戏 Minecraft,并将其与之前强大的算法进行比较。所有 Dreamer 智能体均在单块 NVIDIA A100 图形处理器(GPU)上训练,使得许多研究实验室能够复现实验结果。目前,Dreamer 的开源实现已经发布,可复现本文中的全部结果。
基准测试
我们在八个领域进行了广泛的实证研究,涵盖连续动作与离散动作、视觉输入与低维输入、密集奖励与稀疏奖励、不同奖励尺度、二维与三维世界,以及程序生成环境。图 4 总结了基准测试结果,比较了 Dreamer 和一系列已有算法在多种领域的表现。Dreamer 在其适用的领域中表现等于或优于最佳专家方法——无论这些方法是基于模型还是无模型方法——并且在所有领域中都优于 PPO。
Atari :这一经典基准包含 57 个 Atari 2600 游戏,预算为 2 亿帧,带来了多样化的挑战35。我们采用“粘滞动作”(sticky action)模拟设置。Dreamer 在仅使用一小部分计算资源的情况下,表现优于强大的 MuZero 算法10。同时,Dreamer 也优于广泛使用的专家算法 Rainbow36 和 IQN37。
ProcGen :这个包含 16 个游戏的基准测试通过随机关卡和视觉干扰来检验智能体的鲁棒性和泛化能力38。在 5,000 万帧的预算下,Dreamer 表现优于调优后的专家算法 PPG34 和 Rainbow38。我们的 PPO 智能体在固定超参数下达到了高度调优的官方 PPO 实现所发表的成绩34。
DMLab :这套 30 个任务包含三维环境,用于测试空间推理和时间推理能力39。在 1 亿帧内,Dreamer 的表现超过了可扩展的 IMPALA 和 R2D2+ 智能体在 10 亿环境步下的成绩,相当于数据效率提升了超过 1000%。我们注意到这些基线并不是专为数据效率设计的,但它们代表了此前大规模下所能达到的性能水平。
Atari100k :这个数据效率基准包含 26 个 Atari 游戏,预算仅为 400,000 帧,相当于 2 小时的游戏时间18。EfficientZero40 是当前最先进的方法,它结合了在线树搜索、优先经验回放和超参数调度,同时还提前重置关卡以增加数据多样性,这使得比较变得困难。在不采用这些复杂机制的情况下,Dreamer 表现优于其余最优方法,包括基于模型的 IRIS、TWM 和 SimPLe 智能体,以及无模型的 SPR41。
Proprio Control Suite :这个基准包含 20 个模拟机器人任务,涉及连续动作、本体感知向量输入,预算为 100 万环境步42。任务范围从传统控制到运动再到机器人操作,涵盖密集和稀疏奖励。Dreamer 在此基准上达到了最先进水平,如 DMPO31 和 TD-MPC243。
Visual Control Suite :这个基准由相同的 20 个连续控制任务组成,但智能体只能接收到高维图像作为输入42。Dreamer 在此基准上建立了新的最先进水平,优于 DrQ-v244 和 TD-MPC243——这两个方法专门针对视觉环境设计,利用了数据增强技术。
BSuite :这个基准包括 23 个环境,共计 468 种配置,专门用于测试信用分配、对奖励尺度和随机性的鲁棒性、记忆能力、泛化能力和探索能力45。Dreamer 在此基准上达到了最先进水平,优于 Boot DQN 和其他方法46。尤其在“尺度鲁棒性”类别中,Dreamer 相比之前算法有显著提升。
Minecraft
在广受欢迎的游戏 Minecraft 中收集钻石一直是人工智能领域长期存在的挑战19–21。在这个游戏中,每一回合都发生在一个唯一、随机生成且无限的三维世界中。每回合持续到玩家死亡或最多 36,000 步(相当于 30 分钟),在此期间,玩家需要通过采集资源和制作工具来发现一连串共 12 种物品。对于经验丰富的玩家而言,获取钻石大约需要 20 分钟21。
我们使用 MineRL 竞赛所提供的动作空间构建了一个离散动作集,其中包含了抽象的制作动作。此外,为了加速方块破坏过程,我们也遵循了之前的研究做法,因为让随机策略学会长时间按住某个按钮数百步是不可行的20,这样我们可以专注于 Minecraft 中固有的核心挑战。详见补充信息部分,其中还与视频预训练(VPT)和 Voyager21,47 进行了对比。
由于该复杂领域的训练时间较长,在 Minecraft 上进行大量调参是非常困难的。因此,我们直接使用 Dreamer 的默认超参数“开箱即用”。如图 5 所示,据我们所知,Dreamer 是第一个无需使用人类数据(如 VPT21 所需)或自适应课程(adaptive curricula)20 即可从零开始在 Minecraft 中收集钻石的算法。所有 Dreamer 智能体都在 1 亿环境步内发现了钻石。所有物品的成功率展示在扩展数据图 2 中。尽管有几种强大的基线方法能够进展到高级物品(如铁镐),但没有任何一个方法成功发现钻石。
消融实验
在图 6 中,我们在一组多样化的 14 个任务上对各种鲁棒性技术和学习信号进行了消融实验,以理解它们的重要性。各个任务的训练曲线包含在补充信息中。我们观察到,所有的鲁棒性技术都对性能有所贡献,其中最重要的是世界模型目标中的 Kullback–Leibler 平衡和 free bits,其次是用于奖励和价值预测的回报归一化和 symexp 两热回归。总体来看,我们发现每个单独的技术在某些任务子集上是关键的,但在其他任务上可能影响不大。
为了研究世界模型的影响,我们通过停止任务特定的奖励和价值预测梯度,或者任务无关的重构梯度,来消融 Dreamer 的学习信号。此前的强化学习算法通常仅依赖于任务特定的学习信号9,10,而 Dreamer 主要依赖其世界模型的无监督目标。这一发现为未来利用无监督数据进行预训练的算法变种提供了可能性。
扩展特性
为了研究 Dreamer 是否可以稳健地扩展,我们在 Crafter48 和一个 DMLab 任务39 上分别训练了 6 种模型规模,参数量从 1,200 万到 4 亿不等,并测试了不同的经验回放比例。回放缓冲比例会影响智能体执行的梯度更新次数。
图 6 显示,在不同模型规模和回放比例下,Dreamer 在固定超参数下仍表现出稳健的学习能力。此外,增加模型规模直接转化为更高的任务性能和更低的数据需求。增加梯度更新次数进一步减少了学习成功行为所需的交互次数。
实验结果表明,Dreamer 在不同模型规模和回放比例下均能稳健学习,提供了一种通过扩展计算资源来可预测地提升其性能 的方法。
先前工作
开发通用算法一直是强化学习研究的长期目标。PPO7 被广泛使用且具有鲁棒性,但需要大量经验数据,并且通常表现不如专门设计的替代方法。MuZero10 使用价值预测模型在离散动作空间中进行规划,但作者未公开其实现,且该算法包含多个复杂组件,难以复现。Gato49 将一个模型拟合到多个任务的专家演示数据上,但无法自主改进。
相比之下,Dreamer 在固定超参数下即可掌握多种环境,不需要专家数据,且其实现是开源的。
Minecraft 近年来成为研究热点。MineRL 提供了多个竞赛环境和多样化的人类数据集,以支持技能探索与学习19。VPT21 通过录制合同玩家使用键盘和鼠标操作的游戏过程,用于行为克隆,随后结合强化学习,在使用 720 块 GPU 训练 9 天后成功获取钻石。Voyager 则利用语言模型调用 MineFlayer 机器人脚本层的命令——该脚本层是专门为游戏定制的,并提供了高级动作接口47。
而 Dreamer 使用 MineRL 竞赛的动作空间,其中包含抽象的制作动作,在仅使用 1 块 GPU、训练 9 天的情况下,从稀疏奖励中自主学会了收集钻石,且无需人类数据。
学习未知环境的动力学模型并将其用于强化学习的思路早在早期算法中就被探索过,例如 PILCO、E2C 和 Visual Foresight16。PlaNet 引入了一个足够精确的动力学模型,使得可以从像素进行规划25。IRIS 和 TWM41 结合了 Transformer 架构,而 R2I 则采用结构化状态空间模型来实现长期记忆50。TD-MPC243 学习确定性的动力学模型,将策略网络与经典规划方法结合,用于处理连续动作,并借鉴了 Dreamer 的一些鲁棒性技术,如基于百分位数的回报归一化。
结论
我们提出了第三代 Dreamer 算法,这是一种通用的强化学习算法,能够在固定超参数 的情况下掌握广泛的任务领域 。Dreamer 不仅在超过 150 个任务上表现出色,还能在不同的数据量和计算预算下稳健地进行学习,推动强化学习向更广泛的实际应用迈进。
据我们所知,Dreamer 是第一个无需任何人类数据或课程指导 ,即可从零开始在 Minecraft 中收集钻石 的算法,这标志着人工智能领域的一个重要里程碑。作为一种基于学习所得世界模型 的高性能算法,Dreamer 为未来的研究方向铺平了道路,包括:
通过互联网视频教会智能体世界知识;
在多个领域间学习一个统一的世界模型,使人工智能体能够逐步积累越来越通用的知识与能力。
文章方法部分 基线算法
PPO :我们采用了已成为强化学习领域标准选择的 PPO 算法7,用于在所有基准测试中与 Dreamer 进行对比(使用固定超参数)。目前已有大量公开的 PPO 实现,它们的任务性能差异较大2。为了确保在固定超参数下对 PPO 在各领域所能达到的最佳性能进行具有代表性的比较,我们选用了 Acme 框架51 中提供的高质量 PPO 实现,并根据推荐设置其超参数(见扩展数据表 6)1,2,同时进一步调优其 epoch 批量大小以适应复杂环境38、学习率和熵正则化系数。
我们将折扣因子设置为与 Dreamer 相同,因为它在多个领域表现良好,并且是文献中常见的选择10,33。我们选择了 IMPALA 网络结构——这是我们在实验中发现比其他结构表现更好的一种38,并将小批量(minibatch)大小设为单块 A100 GPU 所能支持的最大值。
我们在 ProcGen 基准上验证了我们的 PPO 实现和超参数性能,其中 PPO 的高度调优版本已被报道34。我们发现我们的实现与其性能相当或略优。在相同回放比例下,该实现的训练时间与 Dreamer 相当。在训练比率为 32 的情况下,它比 Dreamer 快约 10 倍,除非受到环境运行速度的限制,因为 PPO 固有的经验重用率较低。
其他基线算法 :对于 Minecraft,我们还额外调优并运行了 IMPALA 和 Rainbow 算法,因为在现有文献中尚未报告从零开始端到端学习的成功案例19。我们使用这些算法的 Acme 实现51,采用与 PPO 相同的 IMPALA 网络,并调优学习率和熵正则化项。
在连续控制任务中,我们运行了 TD-MPC243 的官方实现,分别使用本体感知输入和图像输入。我们注意到,该代码对视觉输入应用了数据增强和帧堆叠(frame stacking),这在其论文中并未明确说明,但对其性能至关重要。TD-MPC2 的训练时间为:本体感知输入约 1.3 天,像素输入约 8.0 天。
此外,我们还与文献中报告的一系列调优后的专家算法进行了比较9,10,33,36,41,44,52–54。
基准测试
所有基准测试的聚合得分显示在扩展数据表 1 中。各个任务的具体得分和训练曲线包含在补充信息中。
评估协议 :总结于扩展数据表 2,我们遵循已有标准评估协议。Atari35 使用 57 个任务,带有粘滞动作(sticky actions)55。用于归一化的随机策略和人类参考分数在不同文献中有所不同,我们选择了最常见的参考值,并在补充信息中列出。
DMLab39 使用 30 个任务52,并使用了修正后的动作空间33,56。我们在 1 亿步时进行评估,因为一些先前工作中的 100 亿步运行不可行。由于现有发表的基线在 1 亿步时表现不佳,我们转而将其在 10 亿步时的表现作为比较对象,给予它们 10 倍的数据优势。
ProcGen 使用“困难”难度设置和无限关卡集38。先前工作在不同步数预算下进行比较34,38,考虑到计算成本,我们选择在 5,000 万步下进行比较,且不使用动作重复。
对于仅从稀疏奖励中学习获取钻石的 Minecraft Diamond 任务,我们建立评估协议,在 1 亿环境步时报告回合回报,相当于约 100 天的游戏时间。
Atari100k18 包含 26 个任务,预算为 40 万环境步(动作重复后为 10 万步)。先前研究使用了不同的环境设置,总结于扩展数据表 3,我们选择按照原始介绍的方式使用这些环境。
视觉控制与本体感知控制涵盖相同的 20 个任务22,42,预算为 100 万步。在所有基准中,除非文献规定,我们均不使用动作重复。
环境实例
在早期实验中,我们观察到 Dreamer 和 PPO 的性能对环境实例数量具有鲁棒性。基于我们训练机器上的中央处理器资源,我们默认使用 16 个环境实例。BSuite 要求使用单个环境实例,因此我们在此基准上也使用单个实例。Atari100K 同样使用单个环境实例,因为该基准的总预算为 40 万环境步,而 Atari 游戏的最大回合长度理论上可达 43.2 万环境步。
对于 Minecraft,我们使用远程 CPU 工作进程运行 64 个环境实例,以加速实验,因为该环境执行较慢。
种子与误差条
我们为每个基准下的 Dreamer 和 PPO 分别运行五个随机种子,BSuite 按照基准要求运行十个种子,Minecraft 也运行十个种子,以可靠地报告成功获得钻石的运行比例。所有曲线显示的是种子平均值,阴影区域表示一个标准差。
计算选择
本文中所有的 Dreamer 和 PPO 智能体都在单块 NVIDIA A100 GPU 上进行训练。Dreamer 默认使用 2 亿参数的模型规模。回放缓冲比例控制着计算成本与数据效率之间的权衡(如图 6 所分析),并根据每个基准的步数预算进行调整。
前代版本
我们提出了 Dreamer 系列工作的第三代算法。在需要区分的情况下,我们将此算法称为 DreamerV3 。
- DreamerV1 算法
22 仅限于连续控制;
- DreamerV2 算法
23 在 Atari 上超越了人类表现;
- DreamerV3 算法
则实现了在多种基准上的开箱即用学习能力。
我们总结 DreamerV3 引入的主要改进如下:
鲁棒性技术 :
观测值 symlog 变换
Kullback–Leibler 平衡与 free bits 结合
循环状态空间模型和 Actor 中分类变量的 1% unimix
百分位回报归一化
奖励头和 Critic 使用 symexp 两热损失
网络架构 :
block GRU(门控循环单元)
RMSNorm 归一化
sigmoid 线性单元(SiLu)激活函数
优化器 :
自适应梯度裁剪
LaProp(RMSProp 先于动量更新)
经验回放缓冲区 :
更大的容量
在线队列
存储和更新潜在状态
为了适应不同的计算预算并分析对模型规模的鲁棒性,我们定义了一组模型规模(见扩展数据表 4)。这些模型的参数化基于模型维度,该维度大致以 1.5 倍递增,交替为 2 的幂次或 2 的幂次乘以 1.5。这样生成的张量形状符合硬件效率所需的 8 的倍数。
不同网络组件的尺寸由模型维度决定:
MLP 层数固定,隐藏单元数等于模型维度;
序列模型中的循环单元数量为模型维度的 8 倍,分为 8 个与 MLP 同样大小的模块;
最接近输入数据的卷积编码器和解码器层使用通道数为模型维度的 1/16;
每个潜在变量使用的编码数也为模型维度的 1/16;
隐藏层数量和潜在变量数量在所有模型规模中保持不变;
所有超参数(包括学习率和批大小)在不同模型规模之间保持一致。
扩展数据表 5 展示了 Dreamer 的超参数设置。该设置在所有基准测试中保持一致,包括:本体感知输入与视觉输入、连续动作与离散动作、二维与三维领域。我们不使用 学习率退火(annealing)、优先经验回放(prioritized replay)、权重衰减(weight decay)或 dropout。
网络结构
图像通过步长为 2 的卷积操作编码至分辨率 6 × 6 或 4 × 4,然后展平,并通过转置卷积(步长也为 2)进行解码,输出层使用 sigmoid 激活函数。
向量输入首先经过 symlog 变换 ,然后使用三层 MLP 进行编码和解码。
策略网络(Actor)和价值网络(Critic)同样由三层 MLP 构成,而奖励预测器和回合继续标志预测器则使用单层 MLP。
序列模型采用了一个带有块对角循环权重矩阵 (block-diagonal recurrent weights)的 GRU57,共分为八个模块(blocks),从而在不显著增加参数数量和计算量的前提下支持大量记忆单元。
GRU 在每个时间步的输入是采样得到的潜在变量 zt、动作 at 和循环状态的线性嵌入表示,允许模块之间的信息混合。
分布建模
编码器、动态预测器和策略网络所输出的分布均为混合分布:其中 99% 来自预测的 softmax 输出,1% 来自均匀分布59,以防止出现零概率和无限大的对数概率。
奖励和价值网络输出的是在指数间隔区间 b ∈ B 上的 softmax 分布,并使用两热编码 (two-hot encoded)目标进行训练:
在上述公式中,δ 表示指示函数 (indicator function)。为了确保智能体在初始化时不“臆造”奖励和价值,我们对两热分布(two-hot distribution)的输出权重初始化为零。
在计算跨多个数量级的区间 bin 上 softmax 分布的期望预测值时,求和顺序会影响结果。正负区间应分别从小到大 进行累加,然后再相加。具体实现请参考源代码。
优化器
我们采用了自适应梯度裁剪 (adaptive gradient clipping)60,当每个张量的梯度 L2 范数超过其对应权重矩阵 L2 范数的 30% 时对其进行裁剪,默认参数 ϵ = 10−3。这种梯度裁剪方式将裁剪阈值与损失尺度解耦,使得在更换损失函数或调整损失尺度时无需重新设定裁剪阈值。
我们使用 LaProp 优化器 61 应用裁剪后的梯度,其中设置 ϵ = 10−20,并采用默认参数 β₁ = 0.9 和 β₂ = 0.99。LaProp 先通过 RMSProp 对梯度进行归一化,然后通过动量(momentum)对其进行平滑处理,而不是像 Adam62 那样直接在原始梯度上同时计算动量和归一化项。这一简单的改变允许使用更小的 epsilon,并避免了我们在 Adam 中观察到的一些不稳定性。
经验回放
我们使用一个带有在线队列 (online queue)的均匀回放缓冲区 (uniform replay buffer)来实现 Dreamer。具体来说,每个小批量数据首先由非重叠的在线轨迹构成,再由回放缓冲区中随机均匀采样的轨迹补充完整。
在数据收集过程中,我们将潜在状态(latent states)存储到回放缓冲区中,以便在回放轨迹上初始化世界模型,并将训练 rollout 所产生的新潜在状态写回缓冲区。
尽管我们比较的一些专家算法使用了优先经验回放 (prioritized replay)64,我们也发现它确实提升了 Dreamer 的性能,但在实验中我们选择了统一回放(uniform replay),以简化实现过程。
我们通过回放比例 (replay ratio)来参数化训练量。该比例表示每采集一个环境步后,用于训练的步数比例(不考虑动作重复)。将回放比例除以一个小批量中的时间步数并除以动作重复次数,即可得到梯度更新步与环境交互步的比率。
例如,在 Atari 上使用动作重复(action repeat)为 4、批量形状为 16 × 64 的情况下,若回放比率为 32,则表示每 128 个环境步进行一次梯度更新,即在 2 亿个环境步中总共进行约 150 万次梯度更新。
Minecraft 游戏描述
Minecraft 是全球最受欢迎的视频游戏之一,拥有每月超过一亿活跃用户。该游戏提供了一个程序生成的三维世界,包含多种不同的生物群系(biomes),如平原、森林、丛林、山脉、沙漠、针叶林、雪原、冰柱地、沼泽、稀树草原、荒地、海滩、岩石海岸、河流和海洋。
这个世界由大小为 1 米的方块组成,玩家可以破坏或放置这些方块。游戏中有大约 30 种不同的生物可供互动或战斗。通过收集资源,玩家可以使用超过 350 种配方来制作新物品,并沿着科技树逐步发展,同时还要确保生存所需的安全与食物供应。
Minecraft 中存在大量可能的任务。作为第一步,研究社区将重点放在一个具有代表性的任务上:获取钻石——这是一种稀有物品,深埋地下,需要沿科技树逐步推进才能获得。
学习环境
我们基于 MineRL v0.4.419 构建了 Minecraft Diamond 环境,它提供了抽象的制作动作。使用的 Minecraft 版本为 1.11.2。我们将该环境以一个适用于强化学习、具有标准化动作空间的忠实版本公开发布。
为了使该环境可用于强化学习,我们定义了一个扁平化的分类动作空间,并通过人工测试发现了原始环境中的一些 bug 并进行了修复。
例如,在破坏钻石矿石时,有时物品会自动进入背包,有时则需要从地面拾取。原始环境中在破坏钻石矿石后会立即结束回合,导致许多成功回合在尚未拾取钻石之前就提前终止,从而没有获得奖励。我们移除了这个提前终止条件,改为在玩家死亡或经过 36,000 步(对应 30 分钟,控制频率为 20 Hz)后才结束回合。
另一个问题是,当快速按下并释放跳跃键时,游戏有时会漏掉输入信号。我们通过将按键保持 200 毫秒来解决这个问题。此外,我们将摄像机俯仰角限制在 120° 范围内,以避免奇异点(singularity)。
观测值与奖励
智能体观察到的信息包括:
一个 64 × 64 × 3 的第一人称图像;
一个包含 400 多种物品库存数量的向量;
一个自回合开始以来最大库存数量的向量,用于告知智能体已达成哪些里程碑;
一个 one-hot 向量表示当前装备的物品;
标量输入表示生命值、饥饿值和氧气值。
我们遵循 MineRL 竞赛环境19 的稀疏奖励结构,该结构对通向钻石的 12 个里程碑给予奖励,依次为:木头、木板、木棍、工作台、木镐、圆石、石镐、铁矿、熔炉、铁锭、铁镐和钻石。
每个物品的奖励在一个回合中仅给予一次,智能体必须学会多次收集某些物品以达成下一个里程碑。为了便于解释回报值,我们为每个里程碑给予 +1 奖励,而不是根据物品价值调整奖励尺度。
此外,我们还为每次失去的一颗心给予 −0.01 奖励,恢复一颗心给予 +0.01 奖励,但我们并未深入研究这一设置是否有效。
动作空间 。尽管MineRL竞赛环境在文献中是一个既定的标准,但它提供了一个复杂的字典型动作空间,需要额外的设置才能连接智能体。这个动作空间包括使用鼠标进行摄像机移动、使用键盘按键进行移动、使用鼠标按钮进行挖掘和交互,以及用于合成和装备物品的抽象库存操作。为了将环境连接到强化学习智能体,我们以最简单的方式将其转换为一个分类动作空间,最终得到扩展数据表7中列出的25个动作。这些动作映射到了键盘按键、鼠标按钮、摄像机移动以及抽象的库存操作。“跳跃”动作同时按下跳跃键和前进键,因为分类动作空间一次只允许执行一个动作,而单独使用跳跃键只会让角色原地跳跃,而不是跳到某个物体上。在文献中,曾使用过类似但更复杂版本的动作空间来进行Minecraft中的课程学习。
破坏速度 。在Minecraft中,破坏方块需要持续按住鼠标左键几秒钟,这在20Hz的帧率下对应数百个时间步。对于一个初始均匀分布的25个动作的分类策略来说,当玩家面前已经有一个木头方块时,成功破坏它的概率约为 10^(-25) × (400~560),几乎不可能从零开始发现这种行为,除非引入关于人类如何使用计算机的先验知识。虽然可以通过特定的归纳偏置(例如学习重复动作)来克服这一挑战,但我们认为,学习在数百个时间步内保持同一个按钮被按下,并不是Minecraft作为人工智能挑战的核心难点。为了使智能体能够学会破坏方块,我们因此遵循了之前的研究方法,提高了方块破坏的速度,使得不同材质的方块可以在几个时间步内被破坏。从调优后的基线可以看出,即使经过这样的调整,当前的学习算法仍然面临显著挑战。
其他环境 。Voyager 使用的是更高层次的 MineFlayer bot 脚本库所提供的抽象动作,例如预定义的行为来探索世界直到找到某种资源,或者自动挖掘32米范围内的指定材料。它还使用高层次的语义观察而非图像。与 Voyager 的环境不同,MineRL 竞赛环境要求视觉感知以及低层的动作控制,比如必须通过跳跃爬上一个方块,或旋转摄像机以正对某个方块以便挖掘。VPT 使用鼠标移动来进行合成操作,并不加快方块破坏速度,使其比 MineRL 竞赛动作空间更具挑战性,但也更容易获取相应的人类数据。为了在这种更具挑战性的设置下进行学习,其作者利用了大量的领域知识,设计了一个由121个不同注视点鼠标移动动作和4,230种有意义的按键组合组成的分层动作空间。总之,我们推荐:如果希望使用简单的设置,可选择 MineRL 竞赛环境及其分类动作空间;如果希望提示语言模型而不涉及感知或低级控制,可使用 Voyager 的动作空间;如果使用人类数据进行训练,则可选择 VPT 的动作空间。
原文链接:https://doi.org/10.1038/s41586-025-08744-2
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.