枢纽
机器人Kuka
上真机
实时
输入模态vision

PI-QT-Opt:让机器人「先学会预测下一刻」再做 297 件事

Kuang-Huei Lee, Ted Xiao, Adrian Li, Paul Wohlhart, Ian Fischer, Yao Lu(Google Research)。CoRL 2022 · arXiv:2210.08217。 Google 内部 Everyday Robots 机械臂 · foundation_modelsmulti-task RLpredictive info

🧠 一句话心智模型:让一个机器人智能体用同一套参数学会厨房里的 297 件事(move/pick/knock 各种组合),办法是在 QT-Opt 的 Q 学习之外加一个 auxiliary loss——强迫网络同时学会「这一步会发生什么」。这个「预测下一刻」的辅助任务让表征抓住环境动力学,于是 Q 函数学得更快、对没见过的任务还更鲁棒。

🎯 为什么重要:从「专精」走向「通用」的最大瓶颈是表征

2022 年 Google 内部已经在自家厨房场景里跑了几年 QT-Opt(grasping)和 MT-Opt(multi-task)。这些方法能 work,但规模一上来就吃力

核心痛点:当任务数从 10 个涨到 297 个,Q 函数要在同一个网络里同时刻画几百种「状态-动作-奖励」模式。结果:训练慢、灾难性遗忘、零样本泛化差。MT-Opt 试过「每个任务一个 critic head」——但 head 数量到几百就不可行。

PI-QT-Opt 走另一条路:不堆头,而是让表征本身更聪明。核心假设是:环境动力学($s, a \to s'$)是所有任务共享的不变量。如果表征能捕捉「我做了这个动作,世界会怎么变」,那 Q 函数只需要在它之上学「这个变化好不好」——任务多了也不会乱。

2020 前:单任务专家 一个任务一个网络 PI-SAC(Lee et al.)已证 DM-Control / Atari MT-Opt:多 head 共享 encoder + N head N 大到几百就不可行 PI-QT-Opt:单 head + PI task context 一键切换 297 任务共一组参数 3 个 simultaneously 推进的轴: ① 视觉 + 部分可观测 RGB 图像 + 本体感觉 需表征压缩像素 → 状态 ② 297 任务 + 单网络 image / language 任务上下文 单 head 而非 N head ③ Sim → Real zero-shot 只在仿真训练,直接部署真机 RetinaGAN 翻译域
图 1:PI-QT-Opt 把三个 Google Robotics 的研究轴(视觉 RL / 多任务 / sim2real)同时拉满,靠的是一个简洁的辅助损失。

💡 核心思想:让 Q 网络同时学「这一步会发生什么」

Predictive Information(PI)的定义很优雅:它是「过去」和「未来」之间的互信息 $I(X; Y)$。PI-QT-Opt 把 $(s, a)$ 当作过去,$(s', a', r)$ 当作未来,强迫网络学一个能从未来反推过去的表征(contrastive 形式):

$$\hat{I}(X; Y) = \mathbb{E}\left[\log b_\theta(z|y) - \log \frac{1}{K}\sum_{k=1}^{K} b_\theta(z|y_k)\right]$$

直观上:编码器 $e_\theta$ 把过去 $(s, a)$ 压成 $z$,编码器 $b_\theta$ 把未来 $(s', a', r)$ 压成 $y$,然后训练一个判别头 $b(z|y)$ 回答「这个 $z$ 是不是真的对应这个 $y$」。这等价于 CPC(Contrastive Predictive Coding)的 InfoNCE 损失。

共享 Conv backbone(处理 RGB + proprio + task ctx) Q-head(QT-Opt 主任务) Q(s, a) + CEM action sampling PI-head(辅助任务) forward enc e(s,a) + backward enc b(s',a',r) 总损失:$L = L_Q + \lambda \cdot L_{PI}$ 两个 head 共享卷积;分别有专属 MLP 做特化
图 2(对应论文 Fig.1):共享卷积骨干 + 两个 MLP head。PI head 给共享表征注入「动力学感知」,Q head 直接受益。
🔮 直觉:为什么「预测未来」对多任务有帮助?
每个任务的 reward 函数不同,但动力学 $T(s'|s,a)$ 在所有任务里是一样的(同一个厨房、同一只机械臂)。PI 损失强迫共享卷积学到「这一步会让世界怎么变」——这是任务无关的先验。当 Q head 在它之上学具体任务时,不用再花算力去推断动力学,效率自然高,对新任务也更鲁棒。

🛠️ 四个让它在 297 任务上真 work 的设计

设计心智为什么必要
① 单 head + task context 条件化所有任务共用一个 Q 网络,用 image overlay(颜色编码技能)或 language 描述做任务上下文,注入到 Q 网络里MT-Opt 的「每任务一头」到 100+ 任务就不可行;image overlay 让任务条件对新物体也直接可用
② 共享 backbone + 专属 MLPQ-head 和 PI-head 共享 conv,但各自有独立 MLP 做 specialization共享让 PI 监督信号传到表征;专属 MLP 让每个损失还能按自己需求细化
③ RetinaGAN 做 sim2real训练一个 CycleGAN,把仿真图翻译成「看起来像真机」的图,再喂给 RL真机数据有限;翻译后仿真的策略可直接 zero-shot 部署真机,避免真机训练成本
④ Concurrent control真机用并发控制:当前动作还在执行时就开始算下一个blocking control 下真机动作慢且不流畅;concurrent 让动作更 reactive,对 reactive skill(如 knock)尤其重要

📊 关键结果:真机 +50% 起,零样本任务 +28%

真机评估(3 次评估均值 ± 标准差,50 episodes/次)PI-QT-OptQT-Opt相对提升
SayCan Move22.9 ± 8.4%13.93 ± 3.2%+64.4%
SayCan Pick42.0 ± 9.9%28.7 ± 8.0%+46.6%
SayCan Knock54.6 ± 2.4%36.2 ± 11.6%+50.7%
仿真评估(关键数字)结果
训练任务:Move modelPI-QT-Opt 相对 QT-Opt +20%
训练任务:SayCan 297-task modelPI-QT-Opt 相对 QT-Opt +25%
零样本:297-task 模型在 32 个 held-out 任务相对提升 +28%
零样本类型类型 1:新任务组合(同物体);类型 2:新物体(更难)
训练规模batch size 4096,16 TPUv2,大规模异步分布式
对照组:SAC / PI-SAC在这 297 任务上 成功率几乎为 0——证明基础算法选择(QT-Opt)很关键,PI 是锦上添花
PI 与成功的相关性(§5.3)成功 episode 的互信息估计 $I(X;Y)$ 显著高于失败 episode;TD-error 高的 episode 几乎必败且 PI 极低
关键洞察:PI 不是「万能药」——SAC + PI 在 Google 自己的 297 任务上跑不动,PI-SAC 也不行。PI 之所以有效,是搭在一个已经能 work 的基础(QT-Opt)上,让它的表征「更聪明」。这预示了 RL + foundation model 时代的一个原则:表征学习要和策略学习解耦,但表征本身要服务决策

🌐 在领域中的位置

QT-Opt(2018,单任务 grasping 大规模 RL) MT-Opt(2021,多 head 多任务) PI-QT-Opt(单 head + PI 辅助)⭐ RT-1 / RT-2 / SayCan(Transformer + 语言,告别 QT-Opt)

PI-QT-Opt 是 Google Robotics「大规模值函数 RL」路线的收官之作。它确认了「表征学习是多任务 RL 的真正瓶颈」这一判断。但同年(2022 下半年)开始,整个团队转向 RT-1 的 Transformer + 模仿学习路线——因为 QT-Opt 路线再优化也难处理真正的 open-world language instruction。PI-QT-Opt 因此既是 QT-Opt 系列的高水位,也是它的告别作。后续的 RT-X / Q-Transformer 在精神上继承了「表征 + Q 学习」,但骨架已经是 Transformer。

❓ 常见误区

「Predictive Information」和「forward model」是一回事吗?

不是。Forward model 直接预测 $s'$(回归),而 PI 用对比学习估计互信息——只要求「真未来比假未来更可能」,不要求重建具体像素。对比形式更鲁棒(不被像素噪声拖累)、更易训,是 CPC/InfoNCE 在机器人上的应用。

为什么 PI 损失能帮 zero-shot 泛化?

因为动力学是任务无关的。297 个任务里 reward 各异,但「抓起一个苹果会让它离开桌面」这种物理规则在所有任务里都成立。PI 损失强迫表征刻画物理规则;新任务复用同一个动力学感知表征 → zero-shot 也能 work。

SAC 在 297 任务上跑不动,是不是工程没做好?

不是。论文 §3.1 注解里直接写「with our best effort, we were unable to get SAC and PI-SAC working」。原因是QT-Opt 的 distributional Q + CEM 在稀疏奖励 + 高维动作空间下比 SAC 稳得多。这也说明 PI 这种 auxiliary loss 是乘数,不能把 0 变成 1。

297 任务是不是太多,每个任务只能跑得一般?

确实,单任务绝对数字不高(Pick 42%、Knock 54%)。但要注意:同一组参数做到的,而不是 297 个专家。这是 Google 内部「generalist robot」愿景的里程碑——后续 RT-1 / RT-2 用 Transformer 把这条路线推到 700+ 任务、更自然的语言指令。