一句话定位
BeT 把连续动作用 k-means 离散成「动作簇 + 残差偏移」两部分,套在 minGPT 解码器上,用「分类头(Focal loss)预测动作簇 + 逐簇偏移头(掩码多任务回归)纠偏」的双头结构,让标准 transformer 原生地克隆无标签、多模态的示范数据——是「动作 tokenize / 多模态动作表示」这条路线的开山之作(NeurIPS 2022)。
背景与定位
论文针对的是行为克隆(Behavioral Cloning, BC)的一个根本假设缺陷:主流 BC 假设数据来自「单模态专家、只解一个任务」,因此架构里往往内置高斯先验、用 MSE 回归动作。但真实的、人类采集的示范数据是次优的、有噪声的、天然多模态的——同一起点可以左转也可以右转,同一任务不同人有不同做法。用 MSE 拟合这种数据会「取模态平均」(论文 Fig. 2:MSE-BC 为了最小化误差干脆输出 0 动作),把多个模态抹平成一个无效的中间动作。
已有的多模态方案各有代价:显式生成模型(VAE SPiRL 类、Normalizing Flow PARROT)需要复杂训练、且不吃历史上下文;Implicit-BC(IBC,能量模型)能建模多模态但采样慢、易过拟合;Trajectory Transformer Janner 2021 用 minGPT 但建模的是「状态-动作联合分布」,必须离散化观测,无法扩展到视觉等高维观测。goal-conditioned 方法则回避了问题——给定 goal 就退化成单模态。
BeT 的立意是「原生地 clone 多模态数据本身」,不需要 goal、不需要 reward、不需要在线交互。三个关键洞察:(1) 借 transformer 的多 token 上下文预测能力建模多模态动作;(2) 用 k-means 把连续动作聚成离散 bin,从而把高维连续多模态动作分布转成类别分布,绕开复杂生成模型;(3) 并行学一个残差动作纠偏器,保证采样出的动作能用于在线 rollout。这套「离散化 token + 连续残差」的思路,后来被 vq-bet、rt-1、rt-2、乃至各类 VLA 的动作 tokenizer 反复继承。作者是 Nur Muhammad (Mahi) Shafiullah、Zichen Jeff Cui、Ariuntuya Altanzaya、Lerrel Pinto(NYU)。
模型架构
策略骨干(policy backbone):直接复用 Karpathy 的 minGPT minGPT(transformer decoder),几乎原样,唯一改动是把输入 token 转换层换成线性投影层,以接收连续观测(而非离散 token)。层间用 dropout 正则。BeT 不是 VLM/VLA,输入是低维状态或经预训练视觉编码器压过的特征向量——纯策略网络。
动作表示(离散 token + 连续残差)——BeT 的核心创新:
- 动作 tokenize:对数据集里所有动作先跑 k-means,得到 k 个动作中心 {A₁,…,Aₖ}。每个动作 a 分解成两部分:类别变量 ⌊a⌋ = argminᵢ‖a−Aᵢ‖²(最近的动作 bin),残差 ⟨a⟩ = a − A_⌊a⌋。给定中心、bin 索引、残差可确定性重建 a = A_⌊a⌋ + ⟨a⟩。k-means 编/解码器一旦学好,训练与测试全程冻结。
- 双头:minGPT 主干上挂两个头。① 分类头:对每个观测输出 k 维类别分布(预测动作属于哪个 bin);② 偏移头(offset head):对每个观测输出一个 k × dim(A) 矩阵,即为每一个 bin 都预测一个残差向量。
- 测试期采样:输入最近 h 个观测 → minGPT 给出最后一个位置的 k 维 bin 概率 + k×dim(A) 偏移矩阵 → 按概率采一个 bin c → 取该 bin 对应的偏移 ⟨â_c⟩ → 重建连续动作 â = A_c + ⟨â_c⟩ 执行。
memory / 历史上下文:放松 Markov 假设,建模 P(aₜ | oₜ, oₜ₋₁, …, oₜ₋ₕ₊₁),历史长度 h 就是 transformer 的 context size。消融显示历史对上下文相关的多模态(如 Fig. 5 的三模态点质量)至关重要。
视觉编码器:CARLA 视觉观测用冻结的、ImageNet 预训练 ResNet-18,把 224×224×3 RGB 压成 512 维实值向量喂给 minGPT。
逐环境配置数字(论文 Table 4):
| 超参 | Point-mass | CARLA | Block-push | Kitchen |
|---|---|---|---|---|
| Layers | 1 | 3 | 4 | 6 |
| Attention heads | 2 | 4 | 4 | 6 |
| Embedding width | 20 | 256 | 72 | 120 |
| Dropout | 0.1 | 0.6 | 0.1 | 0.1 |
| Context size h | 2 | 10 | 5 | 10 |
| Training epochs | 10 | 40 | 350 | 50 |
| Batch size | 64 | 128 | 64 | 64 |
| bins k | 2; 3 | 32 | 24 | 64 |
模型规模:最小的 point-mass 约 10⁴ 参数,最大的 Kitchen 约 10⁶ 参数——刻意下采样的小 transformer。
数据
全部是离线、无 reward、无 goal 标签的示范数据,覆盖 5 个环境(含 2 个诊断用点质量玩具环境):
- Point-mass #1 / #2:2D 观测+动作。#1 有两模态(岔口左转 vs 右转),200 条示范;#2 有三模态(一条直线 + 两条「Z」形),用于展示历史上下文的作用。
- CARLA 自驾(Town04 地图、CARLA 0.9.13):观测 224×224×3 RGB,动作 2D(油门-刹车 + 转向)。100 条示范,用内置 PID agent 采集,围绕两个中心街区分左右两条路线(干净的双模态),执行前注入噪声以增加变化;刻意不放其他交通参与者。
- Block-push(来自 IBC Florence 2021 的 PyBullet 多模态推块环境):XArm 机械臂把两个块(红/绿)推进两个方块目标,顺序与配对随意。1000 条示范,由硬编码控制器生成,两个独立的多模态轴:(a) 先推红还是先推绿各 50%,(b) 红块推到红方块还是绿方块各 50% → 组合出 4 种模态,加上推同一块的多种方式的额外随机性。
- Franka Kitchen(来自 Relay Policy Learning Gupta 2019):Franka Emika Panda 机械臂,9 维动作(关节+末端位置),60 维观测(后 30 维是 goal 信息,本文全部置零以模拟无 goal 标签)。用 RPL 原始数据集的 566 条人类 VR 头显示范(注意:选原始版而非 D4RL 版,因为 D4RL 版带任务/reward 标签);每条示范完成 4 个物体交互,7 个可交互物体(微波炉、水壶、滑门柜、铰链柜、灯开关、两个灶台旋钮);含两类多模态——人类示范固有噪声 + 示范者意图差异。
动作标注:不需要——BeT 就是在无标签动作上自监督地跑 k-means 得到离散 label。sim-vs-real:全部为仿真(含视觉仿真 CARLA)。无 co-training。
训练方法
目标:BC 的最大似然 argmax_θ ∏ₜ P(aₜ | oₜ; θ),但拆成分类 + 回归两个子目标:
- 分类头(选 bin)用 Focal loss:L_focal(pₜ) = −(1−pₜ)^γ log(pₜ),是交叉熵加 (1−pₜ)^γ 项。它对低概率类的梯度更陡、对高概率类更宽容,源自目标检测里解决类别不平衡的做法——这里帮 BeT 即使某些 k-means bin 在数据里出现频率不均也能学到。
- 偏移头(纠偏)用掩码多任务损失(借自 Fast R-CNN 的 masked multi-task loss):MT-Loss = Σⱼ I[⌊a⌋=j] · ‖⟨a⟩ − ⟨âⱼ⟩‖²,Iverson 括号保证只有 ground-truth 那个 bin 的偏移才回传损失,防止模型试图用每个 bin 的偏移都去拟合真值。
- 合并损失:L_focal + α·L_mt,α 只是让初始两项损失同量级的标定系数。
流程:先在全体动作上跑一次 k-means 固定编/解码器 → 再训 minGPT 主干(采样长度 h 的轨迹子序列,喂观测序列,同时算 Focal loss 与 MT-loss)。纯离线模仿学习,无 RL、无在线交互、无蒸馏。
共享超参(论文 Table 5):Optimizer Adam;learning rate 1e-4;weight decay 0.1;betas (0.9, 0.95);gradient clip norm 1.0。作者强调只要不过拟合,很宽的参数范围都能给出好结果。
(工程补记:GitHub 于 2022-11-17 更正了 Block-push 公布的 window_size 与 batch_size 两个超参以复现论文结果。)
Infra(训练 / 推理工程)
- 训练硬件:state-based 环境全在单张 NVIDIA RTX 3080上跑;image-based(CARLA)用 RTX 8000。没有集群,桌面级单卡。
- 训练时长:即使小 batch,最大数据集(Block-push)也在一小时内训完(单桌面 GPU);对比最强 baseline IBC 同任务需约 14 小时。
- 并行/精度:未披露(模型极小,单卡即可,无需并行策略)。
- 推理 / 控制延迟(Kitchen 环境,单步决策一个动作,RTX 3080 + AMD Threadripper 5950x,三次平均):BeT 2.8 ms vs IBC 52 ms vs MLP 0.5 ms(最快对照)vs Trajectory Transformer 867.86 ms(即便用了 attention caching 等技巧)。
- 完整评测 rollout耗时:BeT 1.65 s vs IBC 17.70 s。
- 边缘/真机部署:本文未涉及(纯仿真)。
评测 benchmark
在 CARLA(100 rollouts)、Block-push、Kitchen(各 1000 rollouts)上对比 6 个 baseline:RBC(MLP+MSE)、1-NN、LWR、VAE、Normalizing Flow、IBC。
任务成功率(论文 Table 1):
- CARLA 到达目标成功率:BeT 0.98(与 RBC 0.98 持平;被 LWR 1.0 微弱超过——CARLA 是干净双模态,简单方法也能过)。
- Block-push(Reach R1/R2、Push P1/P2):BeT 1 / 0.99 / 0.96 / 0.71,全面碾压——IBC 只有 0.98/0.04/0.01/0,其余 baseline 双块推进(P2)几乎全 0。这是 BeT 优势最突出的场景:既有极端环境随机 + 多模态,又要长时程地「锁定一个模态并坚持」。
- Kitchen(完成 n 个任务的概率,280 步内,n=2/3/4/5):BeT 0.93 / 0.71 / 0.44 / 0.02,最强;IBC 0.87/0.61/0.24/0,LWR 0.83/0.52/0.21/0,1-NN 0.72/0.44/0.17/0,其余多为 0。
多模态覆盖(论文 Table 2)——BeT 不塌缩到单一模态:
- CARLA 左/右转:BeT 0.34 / 0.64(示范 0.50/0.50),几乎唯一覆盖两个模态的方法(IBC 0.12/0.13 但大量 OOD,其余全部塌缩到右转或全挂)。
- Block-push 首个到达块(红/绿)BeT 0.54/0.46、红块目标(红/绿)0.43/0.44、绿块目标 0.41/0.40——四个多模态轴都接近示范的 0.5/0.5,其余 baseline 的 push 目标分布几乎全 0。
- Kitchen 任务序列经验熵:BeT 2.47(示范 2.96),最接近示范;IBC 2.41、LWR 2.29、1-NN 2.12,RBC 0(完全塌缩)。
消融(论文 Table 3,按 BeT 均值归一):
- 去掉 binning(no binning):Block-push 骤降到 0.25、Kitchen 0.68——离散 bin 是多模态能力的来源。
- 去掉 offset(no offsets):Kitchen 降到 0.78(动作维度最高,离散化损失最大,纠偏最关键)。
- 去掉历史(no history):CARLA 降到 0.65。
- 换骨干:MLP(Block-push 0、Kitchen 0.05)、Temporal Conv(0.01/0.26)、LSTM(0.03/0.04)全部远低于 minGPT,且更难稳定训练。
- 换离散化:GPT-MDN(混合密度网络)CARLA 仅 0.30;uniform quantization 接近但整体仍不如 k-means。
创新点与影响
贡献:
- 动作离散化 + 残差偏移这套「一个连续动作 = 一个 k-means bin token + 一个连续残差」的分解,把多模态连续动作建模转成 transformer 天然擅长的类别预测,避开了复杂生成模型 / 指数级 bin / test-time 优化。这是后续大量「tokenized action」工作(VLA 的动作 tokenizer、vq-bet 等)的直接思想源头,也是这条 embodied 路线里被引用为「seminal for tokenized/multimodal action representations」的原因。
- 借目标检测的两个工具(Focal loss 处理 bin 频率不均、masked multi-task loss 做逐类偏移回归)跨领域移植到行为克隆。
- 用 conditional(P(a|o))而非 joint(P(a,o))建模,使 BeT 不必离散化观测,从而能吃高维视觉观测(相较 Trajectory Transformer 是关键区别;论文估算 Kitchen 上 BeT 比 TT 省约 4761× 的历史编码计算)。
- 极轻量(10⁴–10⁶ 参数、单桌面卡一小时内训完、推理比 IBC 快约 20×),却在多模态长时程任务上大幅超越 IBC。
改变了什么:确立了「离散动作 token + 连续纠偏」作为多模态模仿学习的一种标准范式,把 GPT 式序列模型正式引入连续控制的行为克隆。
作者自陈局限(Sec. 5 Discussion):
- 真正激动人心的用途——从真实世界人类示范/交互中学多样行为——本文尚未触及(全为仿真)。
- 如何在在线交互中从 BeT 里抽取一个特定的单模态策略(通过蒸馏或用合适的 “prompt”)以作为在线 RL 的先验,是留待未来的方向。
- (隐含)离散化任何连续动作空间都会损失保真度,靠 offset 头缓解但不能完全消除;bin 数 k 是 log-likelihood 损失与 MSE 损失之间的权衡(附录 C.2)。
原始链接
- arXiv 摘要:https://arxiv.org/abs/2206.11251
- arXiv PDF:https://arxiv.org/pdf/2206.11251
- GitHub(复现代码):https://github.com/notmahi/bet
- miniBET(可直接嵌入自己项目的精简版 / Conditional BeT):https://github.com/notmahi/miniBET
- 数据集(OSF):https://osf.io/983qz/
- 项目页与视频:https://mahis.life/bet/
- 发表:NeurIPS 2022
一手源存档(sources/)
- behavior-transformer-bet—github-readme — GitHub notmahi/bet README 快照(含环境搭建、复现步骤、Block-push 超参更正说明)
- arXiv 原文 PDF(不入 git):https://arxiv.org/pdf/2206.11251