摘要 (参照 Nature 规范)
在人工智能领域,开发一种能够跨越广泛应用领域、解决多样化任务的通用算法,始终是一项根本性的挑战。当前的强化学习(RL)算法虽然在特定或相似任务上表现出色,但将其配置到新的应用领域时,往往需要大量的人类专业知识和反复的实验调试。这种“脆弱性”不仅限制了强化学习在新问题上的应用,也阻碍了其在计算成本高昂或禁止微调的模型与任务中的潜力发挥。为了突破这一瓶颈,我们提出了第三代Dreamer算法(DreamerV3),这是一个无需针对特定领域重新配置,仅凭单一固定超参数设置,便能在超过150个迥异任务中超越专门方法的通用智能体。
Dreamer的核心机制在于学习一个环境的“世界模型”(world model),并通过在这个内部模型中“想象”未来的各种可能情景来持续优化自身行为。我们引入了一系列基于归一化、平衡和变换的鲁棒性技术,确保了算法在不同领域间学习过程的稳定性。这些技术使得Dreamer能够处理信号尺度差异巨大的各类输入,平衡模型学习中的多个目标,并有效探索奖励稀疏的环境。
我们对Dreamer进行了广泛的实证评估,涵盖了从连续控制、离散动作游戏到三维空间探索等八大类基准测试。结果表明,Dreamer不仅在各项测试中达到或超过了那些为特定基准量身定制的顶尖算法,而且在数据效率上取得了显著提升。尤为引人注目的是,在没有任何人类数据或课程学习辅助的情况下,Dreamer“开箱即用”,成功地在《我的世界》(Minecraft)中从零开始收集到钻石。这一成就长期以来被视为人工智能领域的一大难题,因为它要求智能体在开放世界中,仅凭像素输入和稀疏奖励,探索并执行具有长远眼光的复杂策略。
此外,我们的研究揭示了Dreamer优秀的伸缩性:更大的模型不仅能达到更高的任务分数,还能以更少的环境交互次数解决任务,为从业者提供了一条通过增加计算资源来可预测地提升性能和数据效率的清晰路径。这项工作为解决复杂的控制问题提供了一种无需大量实验的通用方案,极大地拓宽了强化学习的适用范围,使其向着更广泛的实际应用迈出了坚实的一步。
引言:追逐一个通用的“AI之梦”
大家好,我是 Danijar Hafner。今天,我想和大家聊聊一个长久以来萦绕在我和许多AI研究者心中的梦想:创造一个“万能”的学习算法。想象一下,一个AI智能体,你可以把它扔进任何一个新环境——无论是古老的雅达利游戏、复杂的机器人模拟,还是像《我的世界》这样近乎无限的开放世界——它都能像一个经验丰富的玩家一样,自己学会如何去“玩”,而且不需要我们为每个新游戏都 painstakingly 地调整它的“大脑”参数。这就是我们研发 Dreamer 的初衷。
在强化学习的世界里,我们已经有了很多强大的工具,比如 PPO 算法,它像一把“瑞士军刀”,在很多地方都挺好用。但问题是,当你面对一个真正棘手的、全新的挑战时,这把“军刀”可能就不够锋利了。你得换上“专家工具”——那些为特定问题(比如连续控制或稀疏奖励)量身打造的算法。这个过程需要大量的专业知识、计算资源和反复试验,就像为每一款新游戏都雇佣一位顶级工程师团队从头开始调试。这极大地限制了强化学习走向更广阔天地的脚步。
生活化类比:学习新技能的我们这就像我们人类学习新技能。我们不会因为学会了骑自行车,再去学游泳时就需要“重置大脑参数”。我们拥有一套通用的学习框架。我们会观察、思考、在脑中预演(“如果我这样划水会怎么样?”),然后去尝试。我们想要赋予AI的,正是这种“举一反三”、在想象中学习的能力。
我们提出的 Dreamer,正是朝着这个梦想迈出的重要一步。它的核心思想非常直观,甚至有些浪漫:在行动之前,先在“梦境”中预演未来。它在自己的“脑海”里建立一个关于世界如何运转的模型——我们称之为“世界模型”。有了这个模型,它就可以在不与真实世界交互的情况下,想象出执行某个动作后可能发生的一系列后果,从而选出通往成功的最佳路径。这,就是“在想象中学习”(Learning in Imagination)。
Dreamer的核心架构:三大支柱
Dreamer的内部世界由三个紧密协作的神经网络组成,它们就像一个高效的决策团队,共同推动智能体学习和成长。
静态示意图:Dreamer 的三大核心组件
此图展示了世界模型、演员和评论家三者如何协同工作。智能体与环境交互收集经验,用于训练世界模型。随后,演员和评论家完全在世界模型所产生的“想象”轨迹中进行学习和优化。
- 世界模型 (The Prophet - 预言家): 这是 Dreamer 的基石。它像一位预言家,通过观察真实世界(比如游戏画面),学习其内在的物理规律和因果关系。但它并不需要完美复刻每一帧像素,而是学习到一个紧凑、抽象的“世界表征” \(z_t\)。基于这个抽象理解,它能预测在采取某个动作 \(a_t\) 后,世界会进入怎样的下一个抽象状态,以及会得到什么奖励 \(r_t\)。
- 评论家 (The Judge - 审判官): 这位审判官的工作,是评估世界模型“梦境”中的每一种可能性。它看着世界模型生成的想象轨迹,然后给出一个价值判断:“这条路看起来很有前途,最终能获得高分”或者“这条路死路一条,赶紧换!”。它学习的是一个价值函数 \(v_\psi\),用来估算在某个状态下,未来可能获得的总回报。
- 演员 (The Protagonist - 主角): 最后登场的是我们的主角——演员网络。它接收来自世界模型的“剧本”(想象的轨迹)和评论家的“评价”(价值判断),然后决定下一步该怎么“演”,也就是选择具体的动作 \(a_t\)。它的目标很简单:选择能让评论家给出最高评价的动作序列。
这三者构成了一个完美的闭环:演员在世界模型的“梦境”中探索,评论家为探索提供指导,而整个梦境的质量又通过与真实世界的对比不断提升。这个过程完全在紧凑的潜在空间(latent space)中进行,因此极为高效。
成功的秘诀:让“梦境”稳定而强大的四项鲁棒性技术
听起来很美好,但要让这个“做梦”的系统稳定工作,尤其是在千差万别的环境中,是一个巨大的挑战。想象一下,一个梦境系统,如果对梦里的“物理定律”过于敏感,或者对“情绪”(奖励信号)的波动反应过度,那它很快就会崩溃。我们为此开发了一系列关键的鲁棒性技术,这才是 DreamerV3 能够“一招鲜,吃遍天”的真正秘诀。
1. Symlog 变换与 Two-Hot 编码:驯服极端信号的“智能标尺”
在不同的任务里,信号的尺度天差地别。比如,雅达利游戏的分数可能是几百分,而机器人控制任务的奖励可能只是-1到1之间的小数。如果用传统的均方误差损失来预测这些值,一个巨大的奖励信号可能会产生爆炸性的梯度,让学习过程瞬间“翻车”。
我们的解决方案是 `symlog` 函数,一个简单的对称对数变换: \[ \text{symlog}(x) = \text{sign}(x) \log(|x| + 1) \] 它的反函数是 `symexp`: \[ \text{symexp}(x) = \text{sign}(x) (\exp(|x|) - 1) \]
生活化类比:地震的里氏震级`symlog` 的作用很像地震的里氏震级。它把能量差异巨大的地震(从微小震动到毁灭性强震)压缩到一个更容易理解和比较的尺度上。对于微小的信号(\(|x|\) 接近0),它近似于恒等函数 \(y=x\),保留了细节;对于巨大的信号,它则像对数一样进行压缩,防止梯度爆炸,同时还能处理负数。
对于奖励和价值这类可能更“嘈杂”的信号,我们更进一步,使用了 `symexp two-hot` 损失。我们不再让网络直接预测一个精确的数值,而是预测这个数值落在一系列预设“桶”中的概率分布。这就像把一个困难的“回归问题”转换成了一个更容易的“分类问题”,完全解耦了梯度大小和目标值的尺度。
交互动画1:Symlog 智能标尺
拖动滑块,观察输入值 (x) 如何通过 Symlog 函数进行变换。注意看,当输入值接近零时,输出值几乎与之相等;而当输入值变得很大或很小时,输出值被有效“压缩”,从而稳定了学习过程。
拖动滑块改变输入值:
输入 (x): 50.0
Symlog(x): 3.9
2. 百分位回报归一化:动态调整的“激励系统”
智能体应该多大程度上进行“探索”,多大程度上“利用”已知策略?这取决于奖励的稀疏程度。如果奖励很密集,我们希望它能快速利用;如果奖励很稀疏,我们又希望它有足够的耐心去探索。传统的固定熵奖励很难适应这种变化。
我们设计了一种巧妙的回报归一化方法。我们不使用均值和标准差(这在稀疏奖励下会因标准差接近零而失效),而是计算一批想象轨迹回报的第5和第95百分位数之间的范围 \(S\)。然后,我们用这个范围去缩放回报值,但设置了一个下限 \(L=1\),避免在回报很小时过度放大噪声: \[ \mathcal{L}(\theta) = -\mathbb{E}_{\pi_\theta} \left[ \text{sg}\left(\frac{R_t^\lambda}{ \max(L, S) }\right) \log \pi_\theta(a_t|s_t) + \eta \mathcal{H}[\pi_\theta(a_t|s_t)] \right] \]
生活化类比:一位优秀的教练这套机制就像一位聪明的教练。当队伍(智能体)在一场得分很高的比赛中(密集奖励),教练会说:“大家表现都不错,我们关注战术执行的稳定性”,他会“归一化”每个人的功劳,避免大家冒进。但如果队伍陷入得分荒(稀疏奖励),哪怕只是一个微小的进步,教练也会大加赞赏(不缩放小回报),以维持士气,鼓励大家继续尝试。
交互动画2:自适应激励系统
切换奖励模式,观察回报归一化机制如何工作。在“密集奖励”下,回报范围 S 较大,会缩放回报值。在“稀疏奖励”下,范围 S 较小,系统会避免过度放大潜在的噪声,保持探索的稳定性。
模式: 密集
范围 S: 0.00
3. KL 平衡与 Free Bits:高效学习的“课程表”
世界模型的学习目标是多重的:既要准确重建观测(\( \mathcal{L}_{pred} \)),又要准确预测未来状态的动态(\( \mathcal{L}_{dyn} \))。这两个目标有时会冲突。如果过于强调可预测性,模型可能会学到一个非常简单但毫无信息的“空白”表征,因为“空白”的未来总是容易预测的。
我们使用了两种技巧来平衡学习:
- Stop-Gradient: 在计算动态损失 \( \mathcal{L}_{dyn} \) 时,我们阻止梯度流回表征编码器;而在计算表征损失 \( \mathcal{L}_{rep} \) 时,我们阻止梯度流回动态预测器。这就像告诉模型:“你,编码器,专心把世界信息编码好,让它变得更容易被预测。而你,预测器,专心学习如何预测当前编码出的信息。”
- Free Bits: 我们为KL散度损失设置了一个下限(比如1 nat)。这意味着,如果模型的预测已经足够好了(损失低于这个阈值),我们就不再惩罚它了,让它把“精力”集中在更重要的重建任务上。
生活化类比:聪明的学生这就像一个聪明的学生安排复习计划。“Free Bits”如同他对他说:“你的数学公式背得已经滚瓜烂熟了(KL损失低于阈值),没必要再花时间了,快去复习更薄弱的物理概念(重建损失)吧!” 这种机制让学习资源得到了最有效的分配。
交互动画3:学习课程表 (KL 与 Free Bits)
拖动滑块改变真实分布(Q,蓝色)与预测分布(P,紫色)的距离。观察 KL 散度值的变化。当两个分布足够接近,KL 值低于“Free Bits”阈值(1.0)时,系统会提示“任务已掌握”,表示学习资源可以被分配到其他地方。
拖动滑块改变Q的均值:
KL 散度: 0.00
状态: ...
4. 想象中的 Actor-Critic 学习:高效的“思维实验”
传统的强化学习算法需要在真实环境中进行大量的试错,这非常耗时且昂贵。Dreamer 的一大优势是,它的核心决策模块(演员和评论家)几乎完全在世界模型生成的“梦境”中进行训练。这极大地提高了数据效率。
在每个训练步骤中,我们从真实经验中取一个起点,然后让世界模型向前“想象”一段固定的长度(比如15步)。演员在这个想象出的世界里做出决策,评论家则评估这些决策的优劣。整个学习过程都在这个快速、可控的虚拟环境中完成,就像在进行一场高效的思维实验。
交互动画4:在梦境中抉择
智能体(白球)从一个真实状态开始。它会“想象”出多条未来的路径(粒子流)。评论家会评估这些路径,高价值的路径会变得更亮。演员则会选择通往最光明未来的第一步。你可以点击画布重置并开始新的“梦境”。
终极挑战:《我的世界》与通用性的证明
为了真正检验 Dreamer 的通用性和鲁棒性,我们选择了一个被誉为“AI领域珠穆朗玛峰”的挑战——在《我的世界》中从零开始采集钻石。为什么这个任务这么难?
- 奖励极其稀疏:你可能要玩几十分钟,经过砍树、合成、挖矿等一系列复杂操作后,才能得到一次奖励。
- 视野长远:为了最终的钻石,你需要先有木镐,再有石镐,最后才有铁镐。每一步都为了一个非常遥远的目标服务。
- 开放世界:每次游戏开始,你都身处一个程序化生成的、独一无二的全新世界。没有固定的地图,没有固定的攻略。
之前的许多方法都需要依赖大量的人类游戏录像,或者精心设计的“课程学习”来引导AI。而我们做的,只是把未经任何修改、拥有固定超参数的 Dreamer 直接扔进了这个世界。
结果是惊人的。Dreamer 凭借其强大的世界模型和想象能力,自主地学会了整个科技树的攀升过程,最终,在没有人类帮助的情况下,成功采集到了钻石。据我们所知,这是第一个实现此成就的算法。这不仅仅是一次成功,它雄辩地证明了,通过在内部世界模型中进行想象和规划,是通往通用人工智能的一条极有希望的道路。
静态示意图:通往钻石之路
在《我的世界》中,获取钻石需要遵循一个严格的技术依赖链。此图简化展示了从最基础的木头到最终获得钻石的关键步骤。
当然,我们的验证不止于此。在超过150个任务的广泛基准测试中,从雅达利到机器人控制,DreamerV3 都用同一套参数设置,取得了与那些经过精心调优的专家算法相媲美甚至超越的成绩。这证明了它的通用性并非偶然。
交互动画5:通用算法的力量
这个动画展示了通用算法的理念。一个核心的 Dreamer 智能体(中心发光的球体)能够应对各种不同的环境(旋转的图标),而无需改变其核心代码或超参数。这与为每个任务定制一个专门智能体(褪色的外围图标)形成了鲜明对比。
结论与展望:梦的下一个篇章
通过 DreamerV3,我们证明了学习一个世界模型并利用它在“想象”中进行规划,是构建通用、鲁棒且高效的强化学习智能体的可行路径。我们所开发的系列鲁棒性技术,使得这一美好愿景能够在复杂多变的任务中稳定实现。
更令人兴奋的是,这项工作为未来开启了新的大门。既然 Dreamer 主要依赖其世界模型的无监督学习目标,这意味着我们可以预先在一个庞大的、无标签的数据集(比如海量的网络视频)上训练一个通用的世界模型。这个模型将具备关于世界运作方式的丰富先验知识。然后,我们可以将这个“见多识广”的模型应用到具体的任务中,让智能体在已有知识的基础上快速学习。这或许就是通往能够不断积累知识、能力日益增长的通用人工智能的阶梯。
这个梦想,我们才刚刚开始。感谢大家的关注。
附录:技术细节深入探讨
A. 世界模型损失函数
世界模型的训练目标是最小化一个复合损失函数 \( \mathcal{L}(\phi) \),它由三部分组成,通过超参数 \( \beta \) 进行加权: \[ \mathcal{L}(\phi) \approx \mathbb{E}_{q_\phi} \left[ \sum_{t=1}^{T} (\beta_{\text{pred}}\mathcal{L}_{\text{pred}}(\phi) + \beta_{\text{dyn}}\mathcal{L}_{\text{dyn}}(\phi) + \beta_{\text{rep}}\mathcal{L}_{\text{rep}}(\phi)) \right] \] 其中,\( T \) 是训练序列的长度。
- 预测损失 (\( \mathcal{L}_{\text{pred}} \)): 这一项负责训练解码器、奖励预测器和终止信号预测器。其核心目标是让模型的状态 \( (h_t, z_t) \) 能够准确地重建原始观测 \(x_t\),并预测即时奖励 \(r_t\) 和是否继续 \(c_t\)。 \[ \mathcal{L}_{\text{pred}}(\phi) \dot{=} -\log p_\phi(x_t|z_t,h_t) - \log p_\phi(r_t|z_t,h_t) - \log p_\phi(c_t|z_t,h_t) \] 对于图像使用标准交叉熵,对于奖励和向量观测,则使用我们前面提到的鲁棒损失函数。
- 动态损失 (\( \mathcal{L}_{\text{dyn}} \)): 该损失训练序列模型(即 recurrent state \(h_t\) 的演化),使其能够预测下一个抽象状态 \(z_t\)。我们通过最小化预测的先验分布 \( p_\phi(z_t|h_t) \) 与从真实观测编码得到的后验分布 \( q_\phi(z_t|h_t, x_t) \) 之间的KL散度来实现。注意,后验分布的梯度被停止(`sg`),以确保表征 \(z_t\) 是被“追赶”的目标,而不是为了迎合预测而改变。 \[ \mathcal{L}_{\text{dyn}}(\phi) \dot{=} \max(1, \text{KL}[sg(q_\phi(z_t|h_t,x_t)) || p_\phi(z_t|h_t)]) \]
- 表征损失 (\( \mathcal{L}_{\text{rep}} \)): 这一项与动态损失相反,它训练编码器,使得编码出的后验分布 \( q_\phi \) 朝着动态预测的先验分布 \( p_\phi \) 靠拢。这鼓励模型学习那些更容易被其内部动态所预测的特征。这里,先验分布的梯度被停止。 \[ \mathcal{L}_{\text{rep}}(\phi) \dot{=} \max(1, \text{KL}[q_\phi(z_t|h_t,x_t) || sg(p_\phi(z_t|h_t))]) \]
这种“推拉”式的梯度控制,结合“Free Bits”机制,是模型能够平衡信息编码与动态预测,从而学习到有用表征的关键。
B. 演员与评论家学习
演员和评论家完全在世界模型生成的想象轨迹中学习。 评论家的目标是预测在当前演员策略 \(\pi_\theta\) 下的未来回报分布。我们使用 \(\lambda\)-return 作为其学习目标 \(R_t^\lambda\),它巧妙地结合了多步想象奖励和未来价值的估计: \[ R_t^\lambda \dot{=} r_t + \gamma c_t ((1-\lambda)v_{t+1} + \lambda R_{t+1}^\lambda) \] 其中 \(v_t\) 是评论家对状态 \(s_t\) 的价值预测,\(\gamma\) 是折扣因子,\(\lambda\) 控制着多步回报和价值引导之间的权衡。评论家通过最大似然损失 \( \mathcal{L}(\psi) = -\sum_t \log P_\psi(R_t^\lambda|s_t) \) 来学习预测这个目标的分布。
演员的目标是最大化经过我们特殊归一化处理后的回报。我们使用 REINFORCE 梯度估计器,其损失函数为: \[ \mathcal{L}(\theta) = -\mathbb{E}_{\pi_\theta} \left[ \text{sg}\left(\frac{R_t^\lambda}{\max(L, S)}\right) \log \pi_\theta(a_t|s_t) + \eta \mathcal{H}[\pi_\theta(a_t|s_t)] \right] \] 其中 \(S\) 是回报的5-95百分位范围,\(L=1\)是下限,\(\eta\)是熵正则化系数,\(\mathcal{H}\)是策略熵,用于鼓励探索。
C. 伸缩性(Scaling)属性
一个通用算法的重要特性是其性能应该随着计算资源的增加而可预测地提升。我们对 DreamerV3 进行了严格的伸缩性测试,包括改变模型的大小(从1200万到4亿参数)和重放比率(replay ratio,即每个真实环境步骤对应多少次梯度更新)。
实验结果令人振奋:
- 模型大小:更大的模型不仅获得了更高的最终分数,而且学习速度更快,即达到同样性能水平所需的与环境的交互次数更少。
- 重放比率:增加重放比率,即进行更多的计算,也能稳定地提升性能和数据效率。