一句话定位
DayDreamer 把 dreamer-v2 世界模型算法原封不动地搬到 4 台真实机器人上做在线学习——不用仿真器、不用 demonstration、不做人工 reset:一台 Unitree A1 四足机器人从躺在地上开始,1 小时真实交互内学会翻身、站立、行走,之后被推倒还能在 10 分钟内学会抗推或迅速自行翻正;两台机械臂(UR5、XArm)纯从相机图像 + 稀疏奖励学会抓取放置多个物体,效果接近人类操作员;一台 Sphero 轮式机器人纯靠图像学会导航到目标点、自动消解朝向的视觉歧义。全程使用同一套超参数,证明 Dreamer 类隐空间想象 RL 可以直接作为真实机器人学习的强基线。CoRL 2022。
背景与定位
真实机器人上的深度 RL 长期被样本效率卡住:从头在物理世界里试错学习通常需要成千上万条真实交互,成本高、危险、磨损硬件。因此机器人学习的主流路径是”仿真中训练 + 域随机化 + 迁移到真实世界”(如 Isaac Gym 大规模并行仿真、RMA、Rudin et al. 2021),或用大规模机器人机队采集离线数据(QT-Opt、MT-Opt、RoboNet、Bridge Data),再不然依赖专家演示。但仿真器本身很难精确刻画真实世界的复杂动力学(尤其软体物体、接触丰富的操作任务),仿真训出的策略也不会随真实世界变化而自适应。
世界模型这条线由 planet(RSSM,2018)打通”从像素学隐动力学 + 在隐空间规划”,dreamer-v1(Dream to Control, 2019)把”纯隐空间想象学 actor-critic”的范式立起来,dreamer-v2(2020)用离散隐 + KL balancing 把世界模型学得足够准、在 Atari 上首次让纯世界模型 agent 打平顶级 model-free(Rainbow/IQN)。但这些工作全部在仿真器或游戏环境里完成——此前没有人验证 Dreamer 能否在真实机器人上直接在线学习。DayDreamer 要回答的正是这个问题:不改动 Dreamer 算法本身,只补上真实世界部署所需的系统工程(尤其是把学习与动作解耦成异步的 actor/learner 两个进程),看它能否在多种机器人本体、动作空间、传感模态、奖励结构上都学出成功策略。稍早的 Visual Foresight(Finn & Levine 系列)也在真实世界端到端学习,但走的是像素空间视频预测 + 在线规划,长时程任务代价高昂;DayDreamer 用隐空间动力学替代像素空间预测,使策略优化能在紧凑隐状态上做大批量并行。论文同期也是 dreamer-v3(2023,一套超参跨 150+ 任务)之前,Dreamer 系列首次走出仿真、落地物理硬件的验证。
模型架构
DayDreamer 直接复用 DreamerV2 的 RSSM + actor-critic 架构(未提出新算法),核心改动在于把学习流程拆成两个并行运行的进程:
世界模型(RSSM,四个联合优化的部件,参数 θ):
- Encoder:
enc_θ(s_t | s_{t-1}, a_{t-1}, x_t)—— 融合当前时刻所有传感模态(本体感觉关节读数、力传感器、RGB/RGB-D 图像等)到随机表征 z_t。 - Dynamics:
dyn_θ(s_t | s_{t-1}, a_{t-1})—— 用递归状态 h_t 预测下一时刻表征,不看当前输入(先验),这是让 agent 能在隐空间纯想象、不依赖解码真实图像的关键。 - Decoder:
dec_θ(s_t) ≈ x_t—— 从隐状态重建原始传感输入,提供丰富学习信号并支持人工检查模型预测;学 behavior 阶段不需要。 - Reward network:
rew_θ(s_{t+1}) ≈ r_t—— 因为真实世界任务的奖励要机器人自己通过交互发现(而非从仿真器读取 ground truth),奖励网络在这里是必需组件(也支持从解码后的传感读数手工设计奖励)。
Actor-Critic(在世界模型隐空间里纯想象学习):
- Actor
π(a_t | s_t):学习让预测未来奖励之和最大化的动作分布。 - Critic
v(s_t):用 TD 学习回归 λ-return(V_t^λ = r_t + γ[(1-λ)v(s_{t+1}) + λV_{t+1}^λ],V_H^λ = v(s_H)),使算法能考虑规划视野之外(论文正文表述为 H=16 步)的长期收益;critic 用滑动更新的 target network 稳定训练。连续动作任务用重参数化梯度直接经可微动力学网络回传,离散动作任务用 REINFORCE 梯度(沿用 dreamer-v2 的选择),并加熵正则防止策略坍缩为确定性。actor-critic 的梯度不回传进世界模型(避免模型被过度乐观地拟合)。想象阶段的策略优化可在单卡上跑 16K 批大小的并行 rollout(类似专用仿真器如 Isaac Gym 的并行规模),因为完全不需要解码传感输入。
关键系统改动——异步 actor/learner 解耦: 与标准 DreamerV2 不同,DayDreamer 把数据采集(actor 线程,实时与机器人交互、计算动作)和神经网络训练(learner 线程,持续从回放缓冲采样训练世界模型与 actor-critic)拆成两个并行运行的进程,以满足高控制频率(如四足 20Hz)下的低延迟动作计算需求,同时也加速了低频环境(机械臂)的学习。这带来一个直接后果:不再需要 DreamerV2 里的 train_every(训练频率)超参数,因为学习本来就在与数据采集并行、不做速率限制地持续进行。
Appendix D 超参数配置(全部实验共用同一套):
| 类别 | 超参数 | 值 |
|---|---|---|
| General | 回放容量(FIFO) | 10⁶ |
| General | Start learning | 10⁴ |
| General | Batch size B | 32 |
| General | Batch length T | 32 |
| General | MLP 规模 | 4 层 × 512 |
| General | 激活函数 | LayerNorm + ELU |
| World Model | RSSM 隐层规模 | 512 |
| World Model | 隐变量数 | 32 |
| World Model | 每变量类别数 | 32 |
| World Model | KL balancing | 0.8 |
| Actor Critic | 想象 horizon H | 15 |
| Actor Critic | Discount γ | 0.95 |
| Actor Critic | Return λ | 0.95 |
| Actor Critic | Target 更新间隔 | 100 |
| Optimizer(全部) | 梯度裁剪 | 100 |
| Optimizer(全部) | 学习率 | 10⁻⁴ |
| Optimizer(全部) | Adam ε | 10⁻⁶ |
(世界模型沿用离散分类隐——32 个变量 × 32 类——与 dreamer-v2 一致;正文讨论 λ-return 时提到”规划视野 H=16”,与附录表 H=15 的计数口径略有出入,原文未做说明。)
数据
DayDreamer 没有离线数据集——数据完全来自机器人在真实世界里的在线交互,四个任务的数据规模与结构分别是:
- 回放缓冲:FIFO 结构,容量 10⁶ 步(存图像/本体读数 x、动作 a、奖励 r、折扣 γ 序列);世界模型训练每批采 B=32 条长度 T=32 的子序列。
- A1 四足(本体感觉 + 连续动作):输入为电机角度、姿态、角速度;20Hz 通过 PD 控制器实现的连续电机角度指令;训练时长 1 小时(无 resets,人工干预仅限训练区域边界处,不改变机器人当前关节/朝向);随后 10 分钟在线适应推力扰动。
- UR5 机械臂(视觉 + 本体,离散动作):输入为关节角、夹爪位置、末端笛卡尔位置 + 第三人称 RGB 图像;2Hz 离散动作(沿 X/Y/Z 增量移动 + 夹爪开合切换);稀疏奖励(抓到 +1,同侧松开 −1,正确放入对侧 +10);训练 8 小时,3 个球形物体。
- XArm 机械臂(RGB-D 视觉 + 本体,离散动作):约 0.5Hz,第三人称 RealSense 相机(RGB+深度)+ 本体感觉;软体物体(用绳连接夹爪防止卡角);训练 10 小时;夜间训练以保持光照恒定(附录 A 另有日出光照突变下的适应曲线)。
- Sphero Ollie 轮式机器人(纯图像,连续动作):2Hz 连续扭矩指令;仅 RGB 图像输入(无本体感觉),需要从历史图像序列推断朝向(单帧有歧义);密集奖励(负 L2 距离);每 100 步用大功率随机动作重置位置;训练 2 小时。
- 全部数据来自单机器人的单次在线运行,不使用多机器人机队采集、无演示数据、无仿真数据混入训练(仿真仅在 GitHub 配置里出现
a1_simtask 作为调试/对照配置,正式结果全部来自*_real)。
训练方法
核心算法不变:仍是 DreamerV2 的”学世界模型 → 在隐空间想象学 actor-critic → 部署到真实环境采集更多数据”闭环,四个部件(world model 的 ELBO 目标 + actor 的 λ-return 最大化 + critic 的 TD 回归)联合但分离优化,具体优化器超参见上表。
关键工程改动是训练流程的解耦,而非算法:
- 一个 learner 线程持续从回放缓冲采样、训练世界模型和 actor-critic 网络。
- 一个(或两个,取决于任务)actor 线程并行地与机器人交互、计算动作,不等待学习步完成。
- 这一解耦是论文相对 dreamer-v2 的直接差异点:DreamerV2 原本有
train_every(训练频率)超参数把训练步和环境步按固定比例耦合;DayDreamer 中训练与数据采集完全并行、不做速率限制,因此这个超参数被去掉。 - 连续动作(A1 四足、Sphero)用重参数化梯度经可微动力学反传;离散动作(UR5、XArm 的末端移动+夹爪开合)用 REINFORCE 梯度——延续 dreamer-v2 里”连续用重参数化、离散用 REINFORCE”的选择,并加熵正则维持探索。
- 实现构建在官方 DreamerV2(TensorFlow 2)代码基础上,扩展支持多传感模态融合与机器人特定的动作空间(连续电机角度 / 离散末端增量+夹爪 / 连续扭矩)。
Infra(训练 / 推理工程)
- 代码栈:TensorFlow 2,构建在官方 DreamerV2 实现之上(
embodied/agents/dreamerv2plus)。 - 硬件划分(按 GitHub README 的运行命令):learner 与 actor 跑在不同进程、可分配到不同设备——A1(20Hz 高控制频率)learner 和 actor 各占一张 GPU(
CUDA_VISIBLE_DEVICES=0/1,均--tf.platform gpu);XArm 与 UR5(控制频率更低,0.5–2Hz)learner 用 GPU、actor 用 CPU(--tf.platform cpu --tf.jit False),说明低频任务的动作计算不需要独立 GPU。 - 并行度:想象阶段的 actor-critic 优化可用批大小 16K 在单 GPU 上并行 rollout(因为只在隐空间推演、不解码图像),量级上与专用并行仿真器(如 Isaac Gym)相当。
- 精度:论文未披露具体训练精度(fp16/fp32)设置;沿用官方 DreamerV2 实现的默认配置(未披露具体数值)。
- 控制频率(即推理侧的实时约束):A1 20Hz、UR5 2Hz、XArm 约 0.5Hz、Sphero 2Hz——世界模型推理与动作计算必须在对应控制周期内完成,这是解耦 actor/learner 架构存在的直接原因。论文未给出具体推理延迟(ms)数字(未披露)。
- 训练时长(真实世界 wall-clock,即”样本效率”的直接体现):A1 站立行走 1 小时 + 适应推力 10 分钟;UR5 拾取放置 8 小时;XArm 拾取放置 10 小时;Sphero 导航 2 小时。全部为单机器人、单次运行,无需仿真预训练或多机数据采集。
评测 benchmark
论文没有单一的跨任务汇总指标,而是逐机器人对比 Dreamer 与该任务领域对应的强 baseline(均来自论文正文实验图):
A1 四足行走(连续动作、低维输入)vs SAC:Dreamer 在 1 小时内学会翻身、站立、行走(最大奖励 14);SAC 同等预算下只学会翻身,站不起来也走不了,且训练中需人工把机器人从腿部死锁姿态解救出来。随后 Dreamer 在被推倒扰动下 10 分钟内学会抗推或快速翻正。
UR5 视觉拾放(离散动作、稀疏奖励、多物体)vs Rainbow DQN / PPO / 人类:Dreamer 在 8 小时内达到约 2.5 个物体/分钟的拾取速率,逼近人类水平(人类基线由 3 名操作员用手柄控制 UR5 采集 20 分钟得到);Rainbow 和 PPO 都只学会”抓取后立刻在原侧松开”的短视局部最优,作者推测是二者需要的样本量在真实世界不可行地大。
XArm 视觉拾放(离散动作、RGB-D、软体物体+绳连接)vs Rainbow / 人类:Dreamer 在 10 小时内达到约 3.1 个物体/分钟,与人类水平相当;Rainbow 收敛到与 UR5 实验相同的”抓了就放回原侧”局部最优、未能学会任务。附录 A 报告日出光照剧变导致性能骤降后,Dreamer 在约 5 小时内自适应恢复并反超此前水平(无需重训练)。
Sphero 导航(连续动作、纯图像输入)vs DrQv2:Dreamer 在 2 小时内学会持续导航到目标并停留,平均到目标距离达到 0.15(按场地尺寸归一);DrQv2(专为像素连续控制设计的 model-free 方法)达到相近水平——与 Yarats et al. (2021) 在仿真环境的结论一致,即该类任务上两类算法性能相当。
附录 B 给出想象轨迹的定性可视化(把 UR5/XArm 隐想象 rollout 解码回图像,用于检查 actor 的”意图”),非定量评测。
创新点与影响
贡献:① 首次验证 Dreamer 系世界模型算法可以不改动算法本身,直接在 4 台真实机器人(不同本体、动作空间、传感模态、奖励结构)上做纯在线学习,完全不依赖仿真器、演示数据或人工 reset;② 提出异步 actor/learner 解耦这一关键系统工程,使同一套算法既能满足高频控制(四足 20Hz)的延迟要求,也能加速低频任务的学习,并因此去掉了 DreamerV2 里训练/采集速率耦合的超参数;③ 用同一套超参数在 4 个异质任务上都取得成功,为真实世界机器人 RL 建立了一个强基线;④ 开源支持多动作空间/多传感模态的训练基础设施。
影响:证明了世界模型范式可以走出仿真器/游戏环境、直接落地物理机器人在线学习,为后续”真实世界世界模型机器人学习”这条研究线(以及 dreamer-v3 之后进一步扩展到 Minecraft 等复杂开放世界任务)提供了系统工程范本,媒体报道广泛(BBC Panorama、MIT Tech Review、TechCrunch 等)。
作者自述局限:真实硬件上多小时训练会造成磨损,可能需要人工干预或维修;论文未充分探索 Dreamer 与 baseline 在更长训练时间下的性能上限;更具挑战性的任务可能需要结合真实世界快速学习与仿真器的优势,作者将其列为未来方向。
原始链接
- arXiv abstract:https://arxiv.org/abs/2206.14176
- arXiv PDF(v1, 2022-06-28):https://arxiv.org/pdf/2206.14176
- 项目主页(CoRL 2022,含视频、媒体报道列表):https://danijar.com/project/daydreamer/
- GitHub(TensorFlow 2 实现,基于 DreamerV2):https://github.com/danijar/daydreamer
- 机器人硬件部件清单(作者关联仓库):https://github.com/wuphilipp/robot_parts
一手源存档(sources/)
- daydreamer—github-readme — GitHub README 快照
- daydreamer—project — 项目主页文本快照(含摘要、媒体报道列表)
- arXiv 原文 PDF(2206.14176,arXiv 原文 PDF,不入 git)——见上方 arXiv 链接