PI-QT-Opt:让机器人「先学会预测下一刻」再做 297 件事
🎯 为什么重要:从「专精」走向「通用」的最大瓶颈是表征
2022 年 Google 内部已经在自家厨房场景里跑了几年 QT-Opt(grasping)和 MT-Opt(multi-task)。这些方法能 work,但规模一上来就吃力:
PI-QT-Opt 走另一条路:不堆头,而是让表征本身更聪明。核心假设是:环境动力学($s, a \to s'$)是所有任务共享的不变量。如果表征能捕捉「我做了这个动作,世界会怎么变」,那 Q 函数只需要在它之上学「这个变化好不好」——任务多了也不会乱。
💡 核心思想:让 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 损失。
每个任务的 reward 函数不同,但动力学 $T(s'|s,a)$ 在所有任务里是一样的(同一个厨房、同一只机械臂)。PI 损失强迫共享卷积学到「这一步会让世界怎么变」——这是任务无关的先验。当 Q head 在它之上学具体任务时,不用再花算力去推断动力学,效率自然高,对新任务也更鲁棒。
🛠️ 四个让它在 297 任务上真 work 的设计
| 设计 | 心智 | 为什么必要 |
|---|---|---|
| ① 单 head + task context 条件化 | 所有任务共用一个 Q 网络,用 image overlay(颜色编码技能)或 language 描述做任务上下文,注入到 Q 网络里 | MT-Opt 的「每任务一头」到 100+ 任务就不可行;image overlay 让任务条件对新物体也直接可用 |
| ② 共享 backbone + 专属 MLP | Q-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-Opt | QT-Opt | 相对提升 |
|---|---|---|---|
| SayCan Move | 22.9 ± 8.4% | 13.93 ± 3.2% | +64.4% |
| SayCan Pick | 42.0 ± 9.9% | 28.7 ± 8.0% | +46.6% |
| SayCan Knock | 54.6 ± 2.4% | 36.2 ± 11.6% | +50.7% |
| 仿真评估(关键数字) | 结果 |
|---|---|
| 训练任务:Move model | PI-QT-Opt 相对 QT-Opt +20% |
| 训练任务:SayCan 297-task model | PI-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-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+ 任务、更自然的语言指令。