世界模型与持续学习
Dreamer、域随机化、EWC持续学习、Sim2Real迁移——让机器人预见未来、适应变化。
1. 世界模型概念
世界模型是机器人的"内部物理仿真器"——在想象中预演动作的后果。
$$\begin{aligned} z_t &= e_\phi(o_t) \\ \hat{z}_{t+1} &= d_\theta(z_t, a_t) \\ \hat{o}_{t+1} &= g_\psi(\hat{z}_{t+1}) \end{aligned}$$
2. Dreamer系列
RSSM(循环状态空间模型):确定性状态(GRU)+随机状态(高斯)
Dreamer学习流程:编码观测→RSSM前向传播→观测重建损失+奖励预测损失+KL散度损失→反向传播
关键创新:在潜在空间中"做梦"——用世界模型想象轨迹,在想象中训练Actor-Critic,零真实环境交互。
3. 基于世界模型的规划
World Model MPC:搜索最优动作序列——采样候选序列→在世界模型里模拟→选最优
4. 持续学习
| 方法 | 核心 | 优点 |
|---|---|---|
| EWC | Fisher矩阵约束重要参数 | 不存数据 |
| 回放 | 混合旧任务数据 | 简单有效 |
| PNN | 为新任务添加新参数 | 无遗忘 |
5. Sim2Real
Sim2Real Gap:视觉差距+物理差距+动力学差距+延迟差距
域随机化:训练时随机化物理参数+视觉+传感器噪声→策略对真实世界鲁棒
Sim2Real Pipeline:仿真大量训练(域随机化)→真实少量微调→真实评估
6. Web端简易Sim2Real虚实同步实验
Sim2Real不只是“仿真训练、真机测试”的成功率对比,更重要的是持续观察同一条策略在仿真侧和真实侧是否同步。虚实轨迹一旦开始漂移,通常说明标定、摩擦、延迟、传感器噪声或控制增益里至少有一个环节没有被建模。
实验记录模板
| 变量 | 现象 | 工程解释 | 补救动作 |
|---|---|---|---|
| 传感延迟升高 | 真实轨迹滞后 | 观测到达控制器太晚 | 延迟建模、预测补偿、降低控制周期抖动 |
| 标定偏差增大 | 误差长期偏向一侧 | 外参或零位错误 | 重新标定、在线校准、加入偏置估计 |
| 摩擦差异增大 | 真实侧响应变慢或过冲 | 接触/地面模型不准 | 系统辨识、摩擦随机化、动作平滑 |
完成标准
- 能把同步误差压到0.12以内,并解释最有效的调参项。
- 能区分“随机化不足”和“真实参数估计错误”导致的失败。
- 能写出上线前的Sim2Real验收指标:同步误差、真实成功率、失败视频、回滚条件。
阶段总结
世界模型是具身智能从"反应式"走向"预测式"的关键。Dreamer证明了在想象中学习RL的可行性。持续学习让机器人越用越聪明。
知识地图
| 主题 | 核心问题 | 连接模块 |
|---|---|---|
| 表征学习 | 如何把高维观测压缩成可预测状态 | 视觉编码器、多模态融合 |
| 动力学预测 | 给定状态和动作,未来会怎样 | 模型预测控制、RL、Sim2Real |
| 想象训练 | 能否在模型里采样经验减少真机交互 | Dreamer、Model-based RL |
| 持续学习 | 新任务学习时如何不忘旧任务 | EWC、回放、Adapter、LoRA |
| Sim2Real | 仿真训练如何迁移到真实机器人 | 域随机化、系统辨识、真实微调 |
世界模型训练管线
- 收集数据:随机策略、专家演示或已有RL策略采集$(o_t,a_t,r_t,o_{t+1})$。
- 编码观测:视觉、多模态、本体状态映射到潜在状态$z_t$。
- 预测未来:训练动力学模型$p(z_{t+1}|z_t,a_t)$和奖励/终止预测头。
- 规划或训练:用MPC/CEM搜索动作序列,或在想象轨迹中训练Actor-Critic。
- 真实校准:用真实执行数据修正模型误差,监控预测误差是否随时间漂移。
过渡性小项目:小车世界模型
从一个2D小车环境开始,输入位置、速度和动作,预测下一步状态。先用MLP学习单步预测,再改成多步rollout,观察误差如何随时间累积。
for horizon in [1, 5, 10, 20]:
pred = state
loss = 0
for t in range(horizon):
pred = dynamics_model(pred, actions[t])
loss += mse(pred, states[t + 1])
loss.backward()
扩展:加入图像观测、随机摩擦系数和传感器噪声,测试模型是否能在随机环境中保持预测稳定。
持续学习策略
- 正则化路线:EWC、SI、LwF约束重要参数,适合不能保存大量旧数据的场景。
- 回放路线:保存代表性episode或生成式回放,训练新任务时混合旧任务样本。
- 模块化路线:Adapter、LoRA、Mixture-of-Experts为新任务增加小参数,降低灾难性遗忘。
- 评估路线:必须同时报告新任务性能、旧任务保持率、平均性能和遗忘度。
Sim2Real实践清单
| 差距 | 症状 | 补救 |
|---|---|---|
| 视觉差距 | 真机识别失败、反光误检 | 纹理/光照/相机随机化,真实图像微调 |
| 动力学差距 | 仿真能走,真机打滑或震荡 | 系统辨识、摩擦/质量随机化、控制频率匹配 |
| 延迟差距 | 真实执行滞后、超调 | 延迟建模、动作平滑、预测补偿 |
| 接触差距 | 插入、抓取、碰撞任务失败 | 力觉闭环、软接触建模、真实少量微调 |
实验任务与指标
- 训练单步和多步世界模型,报告1/5/10/20步预测MSE曲线。
- 用CEM在世界模型中规划动作序列,比较随机策略、MPC、真实环境最优轨迹。
- 实现EWC,在两个连续任务上报告新任务成功率、旧任务保持率和遗忘度。
- 做一次域随机化实验,比较无随机化、视觉随机化、动力学随机化、联合随机化的真机/仿真差距。
- 完成Web端虚实同步实验,记录同步误差、真实成功率和导致漂移的主要变量。
能力清单与下一阶段前置要求
完成本阶段后,应能解释世界模型和仿真器的差异,能训练一个可评估的动力学预测模型,能设计Sim2Real随机化范围。进入真实机器人部署前,需要掌握安全边界、日志采集、回滚机制和离线评估。
推荐论文与开源项目
建议阅读 World Models、PlaNet、DreamerV1/V2/V3、MuZero、TD-MPC、EWC,并实践 Isaac Lab、ManiSkill、Meta-World、robosuite 等环境。
教材式自测与学习进度
概念自测
- 解释世界模型、仿真器和动力学模型三者的区别。
- 说明为什么单步预测误差低,不代表长时规划一定可靠。
- 解释RSSM中确定性状态和随机状态分别承担什么作用。
- 说明Dreamer为什么可以在潜在空间里训练Actor-Critic。
- 解释模型误差如何导致MPC选择“模型里好、真实中坏”的动作。
- 比较域随机化和系统辨识的取舍。
- 说明灾难性遗忘在机器人持续学习中为什么危险。
- 解释为什么真实机器人持续学习必须保留回滚策略。
推导练习
- 写出单步动力学预测损失,并扩展为多步rollout损失。
- 定义模型预测误差随horizon变化的曲线,并解释误差爆炸的原因。
- 写出CEM采样-评估-重拟合动作分布的伪代码。
- 写出EWC正则项,并说明Fisher信息为什么代表参数重要性。
- 设计一个Sim2Real评估表,区分视觉差距、动力学差距和控制延迟。
工程检查点
- 数据集覆盖足够多状态和动作,而不是只覆盖成功轨迹。
- 世界模型报告单步误差、多步误差、奖励预测误差和终止预测误差。
- 规划器包含动作边界、碰撞惩罚、安全停止和计算时间限制。
- Sim2Real实验记录随机化范围、真实参数估计和失败视频。
- 持续学习实验同时评估新任务性能和旧任务保持率。
进度追踪
| 里程碑 | 验收标准 | 完成 |
|---|---|---|
| 训练单步模型 | 验证集MSE稳定低于无动作基线 | □ |
| 评估多步误差 | 画出1/5/10/20步误差曲线 | □ |
| 接入MPC | 世界模型规划优于随机策略 | □ |
| 加入随机化 | 策略在未见参数下仍能完成任务 | □ |
| 完成持续学习 | 旧任务保持率、新任务成功率、遗忘度都有记录 | □ |
学习产出
- 一张世界模型结构图,标出encoder、dynamics、decoder、reward head。
- 一组预测可视化,对比真实未来帧和模型想象未来帧。
- 一张Sim2Real差距表,列出每个差距的症状和补救手段。
- 一份持续学习实验报告,包含遗忘度和保持率。
- 一段模型失败案例复盘,说明是数据覆盖不足还是模型表达不足。
扩展挑战
- 把状态输入从低维向量升级为RGB图像,比较潜在空间预测难度。
- 为MPC加入碰撞代价和能耗代价,观察行为是否更安全。
- 把CEM替换成梯度优化或MPPI,比较实时性和解质量。
- 用真实少量数据做模型微调,评估Sim2Real误差变化。
- 为持续学习加入回放缓冲区,比较EWC、回放和LoRA adapter。