← 返回 2026-02-13

在开放世界中通过代码做梦实现课程学习 Dreaming in Code for Curriculum Learning in Open-Ended Worlds

Konstantinos Mitsides, Maxence Faldor, Antoine Cully 📅 2026-02-09 👍 6 2026-07-13 08:35
基础模型 开放世界 强化学习 环境设计 程序生成 课程学习

用基础模型生成可执行环境代码来构建课程,让智能体在开放世界中持续学习

前置知识

开放世界学习(Open-Ended Learning)

开放世界学习是一种智能范式,智能体在一个不断扩展的环境中持续学习,没有预设的终态或固定的任务边界。与传统的单一任务强化学习不同,开放世界强调智能体需要掌握多种技能并将其组合以应对越来越复杂的挑战。Craftax 就是一个典型的开放世界环境,包含9层地牢、多种生物群系、复杂的科技树和生存机制,智能体需要从基础生存逐步推进到高级战斗和探索。

本文的核心目标就是在这种开放世界中解决智能体遇到的学习瓶颈问题,理解开放世界的特性是理解论文动机的前提。

无监督环境设计(Unsupervised Environment Design, UED)

UED 是一种自动课程学习框架,将训练过程建模为教师和学生之间的博弈。教师负责生成或选择训练环境以最大化某个效用函数(如智能体的regret),学生(智能体)则在这些环境中优化策略。经典的 UED 方法包括 PLR(优先级关卡重放)和基于 regret 的方法。UED 的目标是自动维护一个金发姑娘难度——既不太难也不太容易,从而最大化学习效率。

DiCode 本质上是一个 UED 框架,但它将环境搜索空间从低维参数扩展到了可执行代码空间,理解传统 UED 方法的局限性是理解本文创新点的关键。

可学习性(Learnability)

可学习性是一个衡量环境对当前智能体的训练价值的指标。给定智能体在某个环境上的成功率为 $p$,可学习性定义为 $p(1-p)$。这个公式的核心思想是:当 $p=0.5$ 时可学习性最高——智能体有时成功有时失败,说明这个环境处于其能力边缘,通过训练有最大的提升空间。Rutherford et al. (2024) 发现常用的 PVL 和 MaxMC 启发式指标与可学习性相关性很差,因此本文采用可学习性作为关卡选择的核心指标。

可学习性是 DiCode 的关卡选择和归档策略的核心驱动力,决定了哪些生成的环境会被保留并用于训练。

优先级关卡重放(Prioritized Level Replay, PLR)

PLR 是一种广泛使用的 UED 方法,它维护一个关卡重放缓冲区,根据关卡的分数和新鲜度来采样训练关卡。具体来说,采样概率由两个项组成:基于分数的排序加权 $h(S_i)^{1/\beta}$ 和基于新鲜度的 $c - C_i$(其中 $c$ 是总采样次数,$C_i$ 是上次采样时间)。温度参数 $\beta$ 控制优先化的锐度,$\tau$ 在分数采样和新鲜度采样之间权衡。PLR 在实践中效果很好,但通常在低维参数空间中操作。

DiCode 在归档关卡的重放策略中直接采用了 PLR 机制,用可学习性分数替代了原来的 MaxMC 分数。

部分可观察马尔可夫决策过程(POMDP)与欠指定 POMDP(UPOMDP)

POMDP 是强化学习的标准建模框架,包含状态空间 $S$、动作空间 $A$、观测函数 $I$、奖励函数 $r$、转移函数 $T$、初始状态分布 $\rho$ 和折扣因子 $\gamma$。UPOMDP 在此基础上引入了关卡 $\lambda$ 的概念,其中 $r$、$T$ 和 $\rho$ 都依赖于 $\lambda$。这意味着不同的关卡本质上是不同的 POMDP 实例,智能体需要在关卡分布 $\Lambda(y)$ 上优化期望回报 $\mathbb{E}_{\lambda \sim \Lambda(y)}[J(\pi_x, \lambda)]$。

UPOMDP 是 DiCode 的理论基础框架,它形式化了不同关卡等于不同POMDP的核心思想,使得生成新关卡等价于从分布中采样新的POMDP实例。

PPO-GTrXL

PPO-GTrXL 是 Proximal Policy Optimization 与 Gated Transformer-XL 的组合,是目前 Craftax 上最先进的求解器。GTrXL 是一种用于强化学习的 Transformer 架构,通过门控机制稳定训练,能够处理长序列依赖。在 Craftax 中,智能体需要记住之前收集的资源和当前目标,GTrXL 的记忆能力对此至关重要。在本文的实验中,所有方法(DiCode、PLR、SFL、DR)都统一使用 PPO-GTrXL 作为底层优化器,以隔离课程机制的贡献。

理解底层优化器的选择有助于理解实验设计的公平性——所有方法使用相同的架构,差异仅来自课程策略。

研究动机

在开放世界强化学习中,智能体常常经历一个令人沮丧的模式:初期快速进步后遭遇显著的性能高原。以 Craftax 为例,这个包含9层地牢、多种生物群系和复杂科技树的环境,智能体往往在掌握基础生存技能后就停滞不前。尽管现有 UED 方法(如 PLR、SFL)在自动课程学习方面取得了一定进展,但它们通常被限制在低维参数空间中,依赖于设计空间是光滑且结构良好的假设。这些方法通过调整一组固定参数来生成不同的环境布局,但无法创建具有结构进化的新环境——例如从有脚手架的简单版演变为需要完整资源链的真实版。在 Craftax 这样的开放世界中,智能体面临的挑战是多层级的依赖关系:必须先收集木材、放置工作台、制作工具,才能挖掘更高级的矿石,进而制作更好的装备来应对更强的敌人。这种深度层次化的依赖使得传统的参数化环境设计方法难以构建有效的课程。

本文的目标是本文的目标是设计一种新的 UED 框架,能够在复杂的开放世界中持续为智能体提供既有新颖性又有可学习性的训练环境。具体来说,作者希望利用基础模型(FM)的强大生成能力来创建可执行的环境代码,这些代码定义了新的 POMDP 实例(包括初始状态分布 $\rho_\lambda$、转移函数 $T_\lambda$ 和目标 $g_\lambda$),从而构建一个跨越智能体能力差距的课程。核心目标不是提高样本效率,而是通过生成中间环境来使原本不可达的行为变得可学习。

与已有工作不同的是,与已有工作的关键区别在于三个层面。首先,与 OMNI-EPIC 等专注于发现孤立有趣行为的方法不同,DiCode 明确设计为编排环境序列以搭建学习课程。其次,与 GenSim 和 Eurekaverse 等在机器人领域生成低级运动控制环境的方法不同,DiCode 演化的是高级任务语义和进度逻辑。第三,与使用结构化 JSON 配置的 EnvGen 不同,DiCode 使用图灵完备的编程语言(Python),极大地提高了表达能力和灵活性。DiCode 的做梦不是生成随机环境,而是根据智能体当前的能力边界条件化地生成,这种闭环反馈是其成功的关键。

核心方法

Dreaming in Code(DiCode)的核心直觉可以类比为一位经验丰富的老师:当学生在某个复杂任务上卡住时,老师不是直接给学生一个更难的题目,而是创造一个脚手架式的中间任务——既保留了核心技能要求,又去除了学生已经掌握的前置条件。在 DiCode 中,这个老师是基础模型,它通过生成可执行的 Python 代码来创建这些中间训练环境。整体技术路线分为两个交替进行的过程:训练循环和生成循环。训练循环负责在目标环境、新生成环境和归档环境的混合批次上训练智能体;生成循环则通过四步流程(选择父关卡、生成描述、生成代码、编译验证)来持续产出新的训练环境。所有生成的环境都由固定的游戏引擎执行,确保物理有效性和一致的游戏机制。

DiCode 的核心创新在于将环境生成从参数搜索提升到了代码生成层面。在传统 UED 中,一个关卡通常是一个随机种子,实例化单一静态布局下的不变游戏规则。而在 DiCode 中,一个关卡是可执行代码,程序化地定义了世界生成和交互规则。这意味着每个生成的 $\lambda$ 指定了一个独特的 POMDP,具有独特的转移动力学 $T_\lambda$(如战斗公式、资源交互规则)和随机初始状态分布 $\rho_\lambda$。这种代码级别的生成能力使得 FM 可以执行精细的语义操作——例如移除资源脚手架以增加难度或添加新的战斗场景——而不仅仅是调整数值参数。此外,奖励结构被设计为 $r_\lambda(s,a) = r_{\text{target}}(s,a) \cdot I_{\text{init}} + I_{\text{success}} \cdot B_t$,其中 $B_t = \max(d, 2 \times R_{t-1})$ 是自适应缩放的完成奖励,确保随着智能体进步,奖励保持吸引力。

方法步骤详情

DiCode 的生成循环包含四个顺序步骤。第一步:从归档(Archive)中选择一个父关卡。归档是一个有向图结构,节点是关卡(包含可执行代码、元数据和性能统计),边代表父子关系。选择策略定义了候选集 $A_{\text{cand}} = \{\lambda \in A \mid S(\lambda) \in \{A, B\} \land \forall c \in C(\lambda), S(c) = D\}$,其中状态映射 $S(\lambda)$ 根据成功率分为 A(>=75%)、B(50-75%)、C(25-50%)、D(<25%)四级。然后以可学习性分数为概率采样父关卡。第二步:基础模型接收父关卡描述 $\lambda_p$、其性能 profile $\text{perf}_p$、目标环境性能 $\text{perf}_{\text{target}}$ 和变异指令 $m_1$,生成新关卡的自然语言描述 $h \sim P_{\text{FM}}(\cdot | c_1^{\text{target}}, \text{perf}_p, \text{perf}_{\text{target}}, m_1)$。第三步:另一个 FM 推理步骤将描述转化为可执行 Python 代码。第四步:编译验证,智能体在新关卡中执行短轨迹以过滤编译失败或运行时错误的代码。训练时,每个更新分配 20% 的模拟预算给目标环境以防止分布偏移,其余分配给新生成关卡和归档关卡重放。

技术新颖性

DiCode 的技术新颖性体现在多个方面。首先,这是第一个将 FM 的代码生成能力与 UED 的课程学习原则系统性结合的框架。与 OMNI-EPIC(关注孤立行为发现)不同,DiCode 明确优化了环境序列以搭建学习课程。其次,DiCode 引入了自适应的完成奖励机制 $B_t$,它基于智能体在目标环境上的预期回报 $R_{t-1}$ 进行缩放,确保生成的关卡始终对智能体有训练价值。第三,FM 展现出了教师般的行为:通过分析智能体的性能 profile,它能自动识别出何时需要移除脚手架(如 Level 112 到 143 中移除了预建工作站和额外资源),这种语义级别的环境演化是传统参数化方法无法实现的。第四,DiCode 的异步生成机制——FM 推理与 RL 训练并发进行——有效缓解了大型模型推理延迟的问题。

Dreaming in Code 框架概览
Figure 1: Dreaming in Code 框架概览
DiCode 课程可视化(迭代 15-100)
Figure 4: DiCode 课程可视化(迭代 15-100)

实验结果

在 Craftax 基准上的实验表明,DiCode 在多个维度上显著优于所有基线方法。总体性能方面,DiCode 达到最终平均回报 48.33,比最强基线 41.54 提高了约 16%,且在训练早期就建立了统计显著的领先优势。更关键的是,DiCode 在层次化技能获取上展现了结构性突破。在工具性里程碑上,DiCode 在 Make Iron Armour 上达到 45% 的成功率,远超最强基线的 14%,说明课程成功教会了智能体先装备再冒险的策略。在探索能力上,DiCode 智能体在 30% 的 episode 中进入 Gnomish Mines(Floor 2),而最强基线仅为 9%。最令人印象深刻的是后期战斗任务:基线方法在 Defeat Gnome Warrior 和 Defeat Gnome Archer 上的成功率降至 0%,而 DiCode 分别达到 11% 和 9%,证明做梦这些特定战斗场景创造了必要的梯度信号。在资源密集型任务如 Make Diamond Sword 上,DiCode 的成功率(6%)是基线(3%)的两倍。训练过程中,新生成关卡的平均成功率稳定在 0.5 附近,表明生成器成功维持了智能体的最近发展区。消融实验进一步表明,去除闭环反馈后(DiCode-OL),性能下降约 15%(40.91 vs 48.33),与基础 RL 基线(41.54)相当,证实了闭环课程的必要性。

所有实验的超参数
Table 1: 所有实验的超参数
SFL 特定超参数
Table 2: SFL 特定超参数
PLR 和 DR 的超参数
Table 3: PLR 和 DR 的超参数
DiCode 特定超参数
Table 4: DiCode 特定超参数
基础模型超参数
Table 5: 基础模型超参数
各方法的训练时间
Table 6: 各方法的训练时间
消融实验结果
Table 7: 消融实验结果
Craftax 上的性能对比
Figure 2: Craftax 上的性能对比
成就分解:最终成功率
Figure 3: 成就分解:最终成功率
完整成就成功率
Figure 5: 完整成就成功率
成就学习曲线
Figure 6: 成就学习曲线
闭环反馈的影响
Figure 7: 闭环反馈的影响
查看结构化数据
任务指标本文基线提升
Craftax 整体 Mean Episode Return 48.33 41.54 (PPO-GTrXL) +16.4%
Make Iron Armour Success Rate (%) 45 14 +31pp
Enter Gnomish Mines Success Rate (%) 30 9 +21pp
Defeat Gnome Warrior Success Rate (%) 11 0 从不可达到可学习
Defeat Gnome Archer Success Rate (%) 9 0 从不可达到可学习
Make Diamond Sword Success Rate (%) 6 3 +100%相对提升
DiCode vs DiCode-OL Final Return 48.33 40.91 (DiCode-OL) +18.1%

局限与改进

论文坦诚地讨论了几个重要局限。首先,虽然依赖固定游戏引擎确保了物理有效性(防止了模型基方法常见的幻觉问题),但同时也限制了创新的范围——模型可以配置世界,但不能从零发明全新的物理定律或游戏机制。其次,大型基础模型的推理延迟带来了显著的计算开销:DiCode 的训练时间约为 48 小时,而基线方法仅需约 10.5 小时。虽然异步生成在一定程度上缓解了这个问题,但 FM 推理仍然是瓶颈。第三,当前框架仅在 Craftax 这一个基准上验证,虽然 Craftax 本身是一个具有深度层次化依赖的复杂环境,但 DiCode 在其他开放世界(如 NetHack、Minecraft)或机器人领域的泛化能力尚未验证。第四,论文使用的是 Qwen3-235B 这样的大参数模型,对于资源有限的研究者来说,较小模型是否也能产生同等质量的课程代码尚不清楚。第五,奖励设计中的自适应完成奖励 $B_t$ 和 20% 目标环境预算等超参数可能需要针对不同领域进行调优。

独立分析的弱点

独立分析来看,DiCode 存在几个值得改进的弱点。第一,编译验证阶段过于简单——当前方法只是执行短轨迹来过滤运行时错误,不进行自我修正。虽然论文提到迭代修正的计算成本超过了收益,但在生成复杂环境时,编译失败率可能很高,导致有效生成率低。未来可以探索轻量级的静态分析或形式化验证来提高通过率。第二,关卡的终止条件完全依赖预定义的成就列表,缺乏灵活的中间奖励信号。在极长的课程链中,稀疏的成就奖励可能导致信用分配困难。第三,FM 的 prompt 工程虽然精心设计,但仍然高度依赖手工编写的系统提示和知识库注入,缺乏对 prompt 质量的自动化评估和优化机制。第四,父子关卡之间的变异目前完全由 FM 隐式完成,缺乏显式的变异算子或约束,可能导致生成的课程有时偏离最优路径。第五,归档的有向图结构虽然记录了演化历史,但没有充分利用图结构进行全局课程规划——例如识别关键的瓶颈节点并优先发展。

未来方向

论文提出和可延伸的未来方向包括多个维度。首先,将 DiCode 扩展到更多样化的开放世界环境,特别是那些具有真实物理引擎的机器人仿真环境(如 MuJoCo),将验证框架的通用性。其次,探索更高效的基础模型替代方案——随着小型高质量代码模型(如 DeepSeek-Coder)的快速发展,DiCode 的推理成本有望大幅降低。第三,将 DiCode 与更复杂的课程规划算法结合,例如使用蒙特卡洛树搜索(MCTS)在课程空间中进行前瞻性规划,而不仅仅是贪心选择。第四,研究如何让 FM 自动学习何时生成新环境、何时强化现有环境的元策略,而不是固定每 v=2 个迭代生成一次。第五,将 DiCode 的思想扩展到多智能体场景,其中课程需要协调多个智能体的能力发展。第六,探索如何将 FM 从环境生成器升级为环境评判器——不仅生成代码,还能评估已有环境的训练价值,形成生成评估的闭环。

复现评估

DiCode 在复现性方面做出了显著努力。论文提供了完整的源代码(GitHub 仓库公开),使用开源权重的 Qwen3-235B 模型(通过 Hugging Face API 调用),避免了对商业 API 的依赖。实验使用 JAX 框架在 NVIDIA L40s 和 RTX A6000 GPU 上进行,底层 RL 架构 PPO-GTrXL 有公开实现。详细的超参数在论文的附录中完整列出(Table 1-5),包括学习率调度、PPO 参数、GTrXL 架构细节等。然而,复现的主要障碍在于计算资源:单次完整实验(5 个种子,2x10^9 步)约需 48 小时的 GPU 时间加上大量 FM API 调用。虽然论文使用开源模型,但 Qwen3-235B 的部署需要相当的 GPU 资源。此外,MiniCraftax(Craftax 的课程学习版本)虽然是定制的,但论文提供了完整的 API 文档和代码示例。总体而言,复现难度中等偏高,主要瓶颈是计算资源而非方法本身的复杂性。