VQ-BeT:把「动作」先压缩成「词」,再用 GPT 风格 Transformer 生成
🎯 为什么重要:连续动作生成里,「扩散」和「Transformer」两条路还没合流
模仿学习里,处理「多模态动作分布」(同一个观察可能对应多个合理动作)有两条主流路:
💡 核心思想:Residual VQ-VAE 把动作切成「粗词 + 细词」
VQ-BeT 把模型拆成两阶段:先训一个 Residual VQ-VAE,把动作 $a_{t:t+n}$(或动作块)压成 $N_q$ 层 codebook 索引;然后训一个 GPT 风格 Transformer,预测这些索引 + 一个连续 offset。
🛠️ 四个让「动作 Token 化」真正 work 的关键设计
| 设计 | 心智 | 为什么必要 / 怎么实现 |
|---|---|---|
| ① Residual VQ(残差量化) | 第 1 层 VQ 吃原向量;第 2 层 VQ 吃残差 $x-z_{q1}$,递归 $N_q$ 层 | 单层 VQ 表达力不够(消融图 5 显示掉点明显);残差形式让 codebook 形成层次聚类:主码=粗粒度模态,副码=细粒度微调。实验中 $N_q=2$ 就够 |
| ② 主/副码非等权 | Loss 里 $L^{code}=L^{focal}_{i=1}+\beta\cdot L^{focal}_{i>1}$,$\beta$ 加权副码 | 等权 $\beta=1$ 反而掉点——主码「选模态」的语义比副码「微调」更重要;非等权让模型聚焦多模态决策 |
| ③ Offset 头补回量化损失 | 额外预测一个连续 offset $\zeta_{offset}(o_t)$ 加到解码后的动作中心 | 纯离散 token 会有量化误差;offset 用 L1 损失监督,把「词的中心」精修到「真值」——保留 VQ 的多模态结构 + 拿回 MSE 级精度 |
| ④ 并行预测,非自回归 | 主码、副码、offset 在 Transformer 输出端并行预测(非 autoregressive) | autoregressive 在 sim 任务上反而掉点(虽然真机因果预测略好);并行 = 单次前向 = 比 Diffusion Policy 快 32×(GPU)/ 25×(CPU) |
k-means 是非参数、无梯度的——它对 $\ell_2$ 距离敏感,对高维动作(比如 action chunk 把 16 步 × 7 维 = 112 维拼一起)会陷入「维度灾难」;而且 $k$ 是人工选的,调一次就要重训。Residual VQ-VAE 是参数化的神经网络,codebook 在端到端反向传播中自动调整,能学出「任务真正需要的语义聚类」。这就是 BeT → VQ-BeT 的核心升级。
📊 关键结果:5/7~6/7 sim 任务排第一,真机长程任务比 Diffusion Policy 高 73%
| 维度 | 数字(来自原文 Table 1-6) |
|---|---|
| 仿真任务覆盖 | 8 个 benchmark:PushT、Image PushT、Kitchen、Image Kitchen、UR3 BlockPush、BlockPush、Multimodal Ant、nuScenes |
| 无条件生成(Tab.2) | PushT IoU 0.78(DiffPolicy-T 0.74, BeT 0.39);Multimodal Ant 3.22(DiffPolicy-T 2.90);BlockPush 1.79(BeT 1.67)——7 个任务中 5 个最佳 |
| 目标条件生成(Tab.1) | 7 个任务中 6 个最佳;PushT IoU 0.39(CFG-BESO 0.25, C-BESO 0.30);Kitchen 3.78(C-BESO 3.75) |
| nuScenes 自动驾驶(Tab.4) | L2 误差 0.73(部分信息模型中最低,超过专门为自驾设计的 Agent-Driver 0.74);碰撞率 0.29 |
| 真机短任务(Tab.5) | 5 个单/双阶段任务:VQ-BeT 47/50 vs DiffPol-T 45/50 vs BC 29/50 vs BC-w-Depth 27/50 |
| 真机长程任务(Tab.5 下半 + Tab.6) | 2-4 个连续子任务(30 次试验):VQ-BeT 19/30 vs DiffPol-T 11/30——相对提升 73%,且 DiffPol-T 在 Task 3 末段崩到 2/10(Tab.6 子任务明细) |
| 推理速度 | RTX A4000 GPU:18.06 ms(DiffPol-T 573.49 ms,32× 提升);4 核 Intel CPU:207.25 ms(DiffPol-T 5243.82 ms,25× 提升) |
| 消融(Fig.5) | 去掉 Residual 层 / 去掉 offset / 等权 $\beta=1$ 都明显掉点;Residual VQ + offset + 非等权是「必需三件套」 |
🌐 在领域中的位置
VQ-BeT 和 Diffusion Policy 是 2023-2024 动作生成的两条平行路:Diffusion 表达力强但慢,VQ-BeT 快且通用。它的「token 化动作」思路后来被 FAST(Flash Attention Tokenizer) 和 π0 继承,成为 VLA 模型的动作头候选方案之一。关联线索:latent action / tokenized policy / 模仿学习。
❓ 常见误区
VQ-BeT 是 RL 还是模仿学习?
纯模仿学习(行为克隆)。两阶段都是监督学习:Stage 1 用 Residual VQ-VAE 自监督重建动作;Stage 2 用 focal + L1 损益预测 code 和 offset。没有 reward、没有环境交互。
它和 VQ-VAE 的关系是什么?
VQ-VAE 是图像/音频领域的「离散表示学习」经典工具(van den Oord 2017)。VQ-BeT 把 VQ-VAE 搬到动作空间,且升级为 Residual VQ-VAE( cascaded $N_q$ 层),让动作被切成「粗-细」两层词。这正是 NLP 里 BPE(byte-pair encoding)的「字符→词根→词」思路在连续动作上的对应。
为什么「主码粗、副码细」能解决多模态?
主码 codebook 通常很小(实验中各任务 $k\in\{8,10,16\}$,见 Table 13),强制把动作分布切成 $k$ 个「大类」——每类对应一个模态(向左抓 / 向右抓 / 等等)。Transformer 通过 focal loss 学会「在当前观察下选哪一类」。副码再在每类内部做精细调整。这种分层正是离散表示擅长多模态的本质。
32× 加速是怎么算出来的?
Diffusion Policy 推理时需要 K 步去噪(典型 K≈10,DDIM),每步都要过一次完整网络;VQ-BeT 是单次前向:Transformer 出主码+副码+offset,decoder 解一次,结束。论文 Table 7 给出:A4000 GPU 上 VQ-BeT 18.06 ms vs DiffPol-T 573.49 ms(≈32×)。在真机 CPU 部署上这个速度差更关键(5243 ms vs 207 ms ≈ 25×)。注:摘要里 "5×" 指仿真单步对比(Table 3),真机闭环比值更大。