⏱ ~60 min

概念辨析 · 模仿学习的理论基础

模仿学习(Imitation Learning, IL)的"直觉版本"非常简单——给一堆专家演示监督学习学个策略就行。但这条直觉掩盖了三个数学上回避不掉的硬问题:covariate shift、reward 缺失、多模态动作。这三个问题各自催生了一族算法(DAgger / IRL / Diffusion Policy),它们的形式化基础完全不同。这条辨析把这三族算法讲到能区分"什么时候用哪个"的程度。

💡 一句话总结:IL 三个硬问题各催生一族解法——covariate shift(→ DAgger 在线问专家,把 BC 的 $O(\epsilon T^2)$ 降到 $O(\epsilon T)$)、reward 缺失(→ GAIL/AMP 用判别器当隐式 reward、跑 RL 自动解决分布偏移)、多模态动作(→ Diffusion Policy / Flow Matching 学分布,绕开 MSE 的平均化陷阱)。

模仿学习三大流派图:BC(监督 MLE,covariate shift O(εT²))→ DAgger(在线迭代修正,降到 O(εT))→ GAIL/AMP(对抗式,判别器定义 reward)三卡片横向对比 + 底部专家轨迹 vs 策略轨迹的 covariate shift 偏移示意

速查:何时用哪个
| 场景 | 推荐 | 原因 |
|------|------|------|
| 短 horizon + 大量 demo + 真机不探索 | BC + action chunking | 监督 MLE 最简单,chunk 把 $O(\epsilon T^2)$ 降到 $O(\epsilon (T/N)^2)$ |
| 长 horizon + covariate shift 严重 | GAIL / AMP | 对抗 IL 在 $p_\pi$ 上跑 RL,自动解决分布偏移 |
| 有 MoCap 但无 action(torque) | AMP(判别器输入 $(s,s')$) | MoCap 只有姿态序列,AMP 不依赖 action |
| 多模态动作(拧扳手左/右都行) | Diffusion Policy / Flow Matching | MSE 会把多模平均成无效动作,必须学分布 |
| 真机能在线请专家纠正 | HG-DAgger | no-regret online learning,bound 降到 $O(\epsilon T)$ |

本页内容

基础解释

一句话直觉

让机器人照着师傅的动作学,不靠自己瞎试。好比徒弟跟着师傅炒菜,一招一式照做。

是什么·为什么

模仿学习是给机器人看一堆人类师傅的演示。让它学着输出同样的动作。不靠奖励、不靠试错,像监督学习。

为什么重要:真机试错又慢又危险。给机器人看人类怎么做的,比让它自己摔几万次便宜得多。近三年机器人操作领域,模仿学习已经取代强化学习成主流。

最朴素的版本叫行为克隆。把"看到的画面"当题目,"师傅的动作"当答案。神经网络学着从画面猜动作。就和图像分类一个套路。但同一画面可能有多种合理动作,单一输出碰上多解任务会把它们平均成无效动作。

但朴素版本有个致命病:训练时见的是师傅遇到的画面。部署时机器人自己做错一步,后面的画面就跑偏了。越错越偏,雪崩式失败。这叫协变量偏移。

怎么治:两条主流路子。一是让师傅不停纠正机器人,让机器人见到自己犯错时的画面。二是请一个"风格裁判"打分,只要求机器人整体分布像师傅,不要求逐帧对齐。后者正是 AMP 这类方法的思路。

核心一句话:模仿学习的本质不是"抄动作",是"抄师傅遇到各种情况时怎么应对"。抄得越全,越不容易翻车。

一句话类比:行为克隆之于师傅带徒弟,像抄板书的徒弟——只学师傅讲过的题;裁判式模仿像考级——只要整体弹得像就行,不背谱。

为什么必须先吃透这一篇

机器人操作领域近三年最大变化是 IL 取代 RL 成为主流范式——π0、OpenVLA、GR00T N1、Diffusion Policy 全部建立在 IL 上。但 IL 的"理论陷阱"比 RL 更隐蔽:

  • BC 训练 loss 很低,部署却完全失败——covariate shift 让你以为学到了,实际没学到。
  • 多模态动作被 MSE 平均化,看起来像"学了一个动作",实际是无效的中间态。
  • GAIL/AMP 训练"看起来像 expert",但你不知道学的是分布还是轨迹。

这条辨析贯穿 T05 diffusion policy 谱系T04 motion prior(AMP)、T06 VLAVLA 的 IL 训练)、T07 teleop(数据采集)。


一、Behavioral Cloning:最大似然即"模仿专家动作"

给定专家演示数据集 $\mathcal{D} = \{(o_i, a_i)\}_{i=1}^{N}$,Behavioral Cloning (BC) 把策略学习当成监督学习:

$$\mathcal{L}_{\text{BC}}(\theta) = -\frac{1}{N}\sum_i \log\pi_\theta(a_i\mid o_i)$$

这是条件最大似然(conditional MLE)。

为什么这等价于"模仿"

MSE loss $\|a_i - \mu_\theta(o_i)\|^2$ 等价于假设 $\pi_\theta(a\mid o) = \mathcal{N}(\mu_\theta(o), I)$ 的负对数似然(去掉常数)。交叉熵 loss 等价于 categorical 分布的 MLE。

所以 BC 是显式建模 $p(a\mid o)$ 的最大似然估计——只要模型族能表达真实分布、数据足够多,BC 收敛到 expert 的条件分布。

BC 的两大致命缺陷

  1. Covariate shift:训练分布 $p_{\text{train}}(o) = p_{\text{expert}}(o)$,测试分布 $p_{\text{test}}(o) = p_{\pi}(o)$(策略自己诱导的)。两者不等。
  2. 多模态动作:见第五节。

二、Covariate Shift 的数学解释

形式化

专家轨迹诱导的状态分布:$p_{\text{expert}}(o)$。

学到的策略 $\pi_\theta$ 诱导的状态分布:$p_{\pi_\theta}(o) = \sum_{t} P(o_t = o\mid \tau\sim\pi_\theta)$。

关键不等式:BC 用 $p_{\text{expert}}$ 训练,部署时遇到 $p_{\pi_\theta}$。如果 $\pi_\theta$ 在 $p_{\text{expert}}$ 之外的状态上误差大(通常如此),那么:

$$\mathbb{E}_{o\sim p_{\pi_\theta}}\!\big[\ell(o)\big] \ne \mathbb{E}_{o\sim p_{\text{expert}}}\!\big[\ell(o)\big]$$

且 $p_{\pi_\theta}$ 本身依赖 $\pi_\theta$——$\pi_\theta$ 一旦做错,状态偏离 $p_{\text{expert}}$,更易做错,恶性循环。

Ross 2011 的 $O(\epsilon T^2)$ bound

设单步误差 $\epsilon = \mathbb{E}_{o\sim p_{\text{expert}}}\!\big[\mathbb{P}(\pi_\theta(o)\ne \pi^*(o))\big]$。 [Ross, Gordon, Bagnell 2011](DAgger 论文)证明:

总误差 $J(\pi_\theta) - J(\pi^*) = O(\epsilon T^2)$,$T$ 是 horizon 长度。

直觉推导:每步以 $\epsilon$ 概率偏离,偏离后未来每步又有 $\epsilon$ 误差,总误差 $\approx \sum_{t=0}^{T} \epsilon\cdot (T-t) \sim \epsilon T^2 / 2$。

为什么 quadratic:因为误差级联——一步错让下一步更可能错,错上加错。这是 IL 区别于 RL 的根本痛点:RL 的策略在自己诱导的分布上训练,BC 不是。

工程后果

短 horizon 任务($T\sim 10$)BC 还能用;长 horizon 任务($T\sim 1000$)BC 几乎必然崩——$\epsilon T^2$ 太大。


三、DAgger:迭代消除 covariate shift

DAgger (Dataset Aggregation) [Ross 2011] 的核心 idea:不要只在 $p_{\text{expert}}$ 上训练,要让策略在自己诱导的 $p_{\pi}$ 分布上也得到专家标签

算法


Initialize D = {(o_i, a_i)} from expert demonstrations
For i = 1, 2, ...:
    Train π_i on D
    Run π_i to collect trajectory τ_i (states from p_{π_i})
    For each state o in τ_i: query expert for a* = π_expert(o)
    Add {(o, a*)} to D
Return final π

数学上的洞察

DAgger 把 IL 规约为 no-regret online learning over distributions:

  • 每轮的"loss"是策略在 $p_{\pi_i}$ 上的误差。
  • 累计 regret $\sum_i \mathbb{E}_{o\sim p_{\pi_i}}[\ell(\pi_i, o)] - \min_\pi \sum_i \mathbb{E}_{o\sim p_{\pi_i}}[\ell(\pi, o)]$。
  • 如果算法是 no-regret(如 online gradient descent),regret 是 $o(N)$。
  • Ross 证明:累计 regret $\le O(T\epsilon + \sqrt{T})$,即总误差 $O(\epsilon T + T^{1/2})$——比 BC 的 $O(\epsilon T^2)$ 改善了 $T$ 倍。

为什么 DAgger 在机器人上"工程不流行"

DAgger 要在线查询专家。专家就是人,意味着机器人运行时人要不停纠正它的错误——昂贵、危险、不可规模化。HG-DAgger [Kelly et al. 2018, arxiv:1810.02890](人在线监督)、Safe DAgger 都是工程妥协,但根本问题没解。

这就是为什么 action chunkingT05)虽然只是近似解,反而成为机器人 IL 的事实主流——它不需要任何额外人工就能近似缓解 covariate shift:每条 chunk 长度 $N$ 内开环执行,有效决策数从 $T$ 降到 $T/N$,代入 Ross bound 得 $O(\epsilon (T/N)^2) = O(\epsilon T^2/N^2)$,误差被压低 $N^2$ 倍。


四、GAIL / AMP:对抗式 IL 与隐式 reward

GAIL 的形式化

GAIL (Generative Adversarial Imitation Learning) [Ho & Ermon 2016] 把 IL 写成 IRL(inverse RL)+ RL 闭环:

  • 学一个判别器 $D_\phi(s,a)$,区分专家 $(s,a)\sim\mathcal{D}_{\text{expert}}$ 和策略 $(s,a)\sim\pi$。
  • 判别器 loss:$\min_\phi\; \mathbb{E}_{\text{expert}}[-\log D_\phi] + \mathbb{E}_{\pi}[-\log(1-D_\phi)]$。
  • 策略用判别器输出当 reward:$r(s,a) = -\log(1 - D_\phi(s,a))$,跑 RL(如 PPO)。
  • 两者交替更新。

和 BC 的根本区别

维度BCGAIL
Loss监督 MLE对抗 min-max
Reward显式(来自 expert action)隐式(判别器学出来)
协变量偏移严重自动解决(策略在自己分布上跑 RL)
数据需求只要 (o, a) 对需要跑 RL rollout
多模态看模型族取决于策略分布建模

关键:GAIL 不学"模仿 expert 动作",而学"模仿 expert 占用度量(occupancy measure)" $\rho_\pi(s,a) = \sum_t \gamma^t P(s_t=s,a_t=a\mid \pi)$。这是分布匹配而非动作匹配——策略可以在 expert 没见过的状态上正确行动,因为 RL 训练让它跑过那些状态。

AMP:把 GAIL 搬到机器人 motion prior

AMP [Peng 2021] 的关键改动:判别器输入是 $(s, s')$(observation-only 状态转移对),不是 $(s, a)$。因为 MoCap 只有姿态序列,没有 action(torque)。

详见 P-AMP-2021 的精确公式。AMP 用 LSGAN + R1 gradient penalty ($w_{gp}=10$),style reward 是 $r^S = \max(0, 1 - 0.25(D-1)^2)$,和 task reward 加权 $w^G r^G + w^S r^S$(论文固定 $w^G=w^S=0.5$)。

GAIL/AMP vs BC:何时用哪个

场景用 BC用 GAIL/AMP
有大量 expert 演示 + 短 horizon也可以
长 horizon + 多阶段❌ covariate shift 太严重✅ RL 自动探索
有 MoCap 数据但没 action❌ BC 需要 action✅ AMP 用 $(s,s')$
真机训练✅ 不需 RL rollout❌ RL 探索危险
计算资源少✅ 监督学习❌ RL+GAN 计算贵

五、Distribution Matching vs Trajectory Matching

这是 IL 理论里最微妙的一对概念。

Distribution matching(占用度量匹配)

GAIL/AMP 学的是让 $\rho_\pi(s,a)$ 接近 $\rho_{\text{expert}}(s,a)$。形式化:

$$\min_\pi\; D_{\text{JS}}\big(\rho_\pi\,\|\,\rho_{\text{expert}}\big)$$

判别器是 Jensen-Shannon 散度的代理。策略可以走与 expert 不同的轨迹,只要访问同样的 (s,a) 对

Trajectory matching(轨迹匹配)

DeepMimic [Peng 2018] 学的是让 $\pi$ 的轨迹和 expert 轨迹逐帧对齐

$$r_t = w^p\exp\!\big(-\|s_t - s_t^{\text{ref}}\|^2/\sigma^2\big) + w^v\exp(\ldots) + \ldots$$

需要时间对齐(reference state initialization, phase variable)。策略必须"踩在"参考帧上

两者对比

维度Distribution matchingTrajectory matching
代表GAIL, AMPDeepMimic, motion tracking
时间对齐不需要需要(phase / RSI
探索自由度
多风格容易(一个判别器学多风格)难(一段参考一个 policy)
适合任务自由探索(locomotion 多 gait)精确复现(特技、武术)

现代趋势:从 trajectory matching(DeepMimic)→ distribution matching(AMP)→ 再到 BFMlatent skill 当 universal prior),自由度越来越大。详见 T04 motion prior 谱系


六、多模态动作分布:为什么 MSE 失败

问题设定

策略要学的条件分布 $p(a\mid o)$ 是多模态的。例如拧扳手,左转和右转都正确:

$$p(a\mid o) = 0.5\,\delta(a - a_{\text{left}}) + 0.5\,\delta(a - a_{\text{right}})$$

MSE 失败的数学

MSE 回归:$\hat{\mu}(o) = \arg\min_\mu \mathbb{E}_{a\sim p}\!\big[\|a - \mu\|^2\big]$。一阶条件:$\hat{\mu}(o) = \mathbb{E}_{a\sim p}[a\mid o]$。

对上面双模分布:$\hat{\mu}(o) = 0.5 a_{\text{left}} + 0.5 a_{\text{right}}$。如果 $a_{\text{left}} = -a_{\text{right}}$(对称),$\hat{\mu}(o) = 0$——什么也不做

更一般地,MSE 假设单峰高斯,多模态被强行平均化成无效动作。

三种解法

1. Mixture of Gaussians / Categorical mixture

策略输出 $K$ 个高斯分量:

$$\pi(a\mid o) = \sum_{k=1}^{K} w_k(o)\,\mathcal{N}(a\mid \mu_k(o), \Sigma_k(o))$$

用 log-likelihood 训练。$K$ 通常取 5-10。

问题:$K$ 要预先指定;mode 数变化时 $K$ 不够;训练不稳定(EM-like 优化)。

2. Diffusion Policy

学一个去噪过程:$a_T\sim\mathcal{N}(0,I)$,迭代 $a_{t-1} = a_t - \sigma_t \epsilon_\theta(a_t, t, o) + \sigma_t z$,$z\sim\mathcal{N}(0,I)$。

关键:高斯噪声初始化是连续的,去噪轨迹被训练数据"吸引子"分叉成多个 mode。自然支持任意数量的 mode

详见 P-DiffusionPolicy-2023T05

3. Flow Matching(π0)

学一个向量场 $v_\theta(a_t, t, o)$,把噪声 $a_0$ 连续传输到动作 $a_1$:

$$\frac{da_t}{dt} = v_\theta(a_t, t, o),\quad a_0\sim\mathcal{N}(0,I)$$

推理解 ODE,10 步 Euler 就够。

相比 diffusion 的优势:路径是近似直线,ODE 比 SDE 易解,训练更稳。π0 / GR00T / RDT 都用 flow matching。

详见 P-pi0-2024

多模态的代价

  • Diffusion / Flow 推理慢(10-50 步 vs 单步 MSE)。Consistency Policy、OneDP 把它压到 1-2 步,但有性能损失。
  • 训练数据要更多——多模态分布的建模比单峰难。
  • 评估更难——MSE 的 single-step metric 不适用。

七、IL 的样本复杂度结论

Ross 2011 的 $O(\epsilon T^2)$ bound

BC 在 $\epsilon$ 单步误差下,$T$ 步 horizon,总误差 $O(\epsilon T^2)$。

含义:长 horizon 任务($T$ 大)需要 $\epsilon$ 极小。$\epsilon=0.01$、$T=100$ 时 $O(100)$——还行;$T=1000$ 时 $O(10000)$——崩。

DAgger 的 $O(\epsilon T)$ bound

DAgger 通过迭代在 $p_\pi$ 上收集专家标签,把 bound 降到 $O(\epsilon T + T^{1/2})$。

现代实证结论

  • Action chunking 把有效 horizon 缩短 $N$ 倍,近似降到 $O(\epsilon (T/N)^2)$。Diffusion Policy 用 $N=16$,π0 用 $N=50$。
  • Diffusion Policy / ACT 通过 CVAE / diffusion 更好地拟合专家分布,使单步误差 $\epsilon$ 变小,但形式化 bound 还没人证。
  • Block 2025 [arXiv:2507.09061] 给了 chunkingcompounding error 的首个理论 bound,但前提是 chunk 内开环执行稳定——这本身就是假设。(待核:尚未在 papers.jsonl 收录,引文来自 T05 转述。)

八、IL vs RL 范式对比

维度ILRL
数据演示 (o, a)交互 (s, a, r, s')
Reward隐式(expert action)显式
探索无(沿 expert 轨迹)必需
Covariate shift严重(BC) / 自动解决(GAIL)不存在(策略在自己分布上训练)
多模态动作需特殊建模(diffusion/flow/mixture)拟合 demo 分布不直接拟合 demo,单模态高斯策略(SAC)即可;多模态在 RL 里不是结构问题
Sim-to-real数据驱动,依赖演示质量reward 驱动,依赖仿真精度
真机安全性高(学专家)低(要探索)

现代趋势:IL + RL 混合。先 IL 冷启动,再 RL fine-tune(如 ReinFlow、VLA-RFT)。IL 给"接近专家"的起点,RL 给自我改进。


九、概念辨析表

方法Loss解决什么何时用
BC监督 MLE模仿 action短 horizon + 大量 expert demo
DAgger在线迭代 + expert labelCovariate shift能在线请专家纠正
GAIL对抗 min-max + RL隐式 reward + covariate shift有 expert 但不想写 reward
AMP对抗 (s,s') + RL用 MoCap 当 rewardlocomotion、animation
Diffusion Policy条件去噪扩散多模态动作 + chunking灵巧操作(π0 系)
ACTCVAE ELBO + chunking多模态 + 推理快双臂操作(ALOHA
DeepMimicreference tracking reward精确轨迹复现单一参考特技
Mixture / VAElog-likelihood显式多模态简单多模态场景

十、常见误用

  • BC 训练 loss 很低就以为学好了:训练 loss 低只说明在 $p_{\text{expert}}$ 上拟合好,部署在 $p_\pi$ 上完全可能崩。必须做 closed-loop eval。
  • MSE 回归动作处理多模态:如第六节所述,会把两个 mode 平均成无效动作。多模态必须用 diffusion / flow / mixture。
  • action chunking "解决了" covariate shift:只是缩短有效 horizon、推迟 covariate shift,不是消除。chunk 滚动累积的误差仍能推出策略训练分布。
  • 用 GAIL 替代 BC 当万能药:GAIL 训练贵(要跑 RL),调参敏感(GAN 不稳),不一定比 BC + chunking 好。
  • 把 AMP 的判别器输入设为 $(s,a)$:MoCap 没有 action(torque),判别器只能用 $(s, s')$。这是 AMP 区别于 GAIL 的核心改动,容易漏。
  • 混淆 multimodal action 和 multimodal input:前者指 $p(a\mid o)$ 有多 mode(diffusion policy 解决);后者指输入有视觉+语言(VLA)。共用 "multimodal" 这个词但完全不同。
  • BC 数据多了就好:BC 数据多只降 $\epsilon$,但 $O(\epsilon T^2)$ 还是 $T^2$。长 horizon 必须用 DAgger / GAIL / chunking。
  • 用 trajectory matching 学多 gait:DeepMimic 一段参考一个 policy,多 gait 要么训多个要么手动切换。AMP 自动涌现 gait 切换。
  • diffusion policy 直接用于真机高频控制:50 步去噪在 30 Hz 上吃力。要么用 flow matching(π0),要么用 consistency distillation(Consistency Policy)压到 1-2 步。

十一、开放问题

  • covariate shift 的"零样本"解药:除了 DAgger 式在线查询,能否从离线数据里"虚拟"出 $p_\pi$?最近有 work 用 learned dynamics model 做 rollout,但 sim-real gap 仍在。
  • 多模态动作的样本复杂度:Diffusion Policy 要多少 demo 才能稳定学多模态?DP3 说 10 条就够(用 3D 点云),2D 要 100-200。理论 bound 缺。
  • GAIL / AMP 的 mode collapse:判别器过强时 policy 找到一两个高分姿态反复刷分。gradient penalty、style reward clip、混合数据集都是缓解,没根治。
  • IL + RL 的最佳混合:先 IL 后 RL?同时 IL+RL?IL warm start + RL fine-tune?ReinFlow、VLA-RFT、GR00T 都在尝试,仍未收敛。
  • 跨本体 IL:从 A 机器人的演示能否学给 B 机器人?跨本体 IL(cross-embodiment IL)是 OpenX 的目标,但仍未解决——不同本体的 action 空间不同。

复盘:误区、检查点与 FAQ

常见误区

"训练 loss 很低就是学好了" —— 错。低 loss 只说明在师傅见过的画面上拟合好。部署时机器人自己跑偏到从没见过的画面,可能立刻崩盘。必须做闭环测试,不能只看开环 loss。

"动作 chunking 解决了协变量偏移" —— 不准确。chunking(一次预测未来 N 步)只是缩短有效视野、推迟协变量偏移,不是消除。chunk 滚动累积的误差仍能把策略推到训练分布外

"用均方误差回归动作就够了" —— 多模态动作会翻车。拧扳手既可以左转也可以右转,均方误差会把两个正确答案平均成"不动"。多模态要用扩散、流匹配或混合分布建模。

检查点

Q1

模仿学习和强化学习在"数据从哪来"上的根本差别是什么?

💡 显示参考答案
  • 模仿学习从人类演示学,不靠试错;强化学习靠自己试、靠奖励学。
  • 根本差别:数据从哪来。
Q2

用徒弟炒菜的类比解释:为什么"抄师傅讲过的题"会在新题目上翻车?

💡 显示参考答案
  • 抄板书的徒弟只会做师傅讲过的题;新题目稍变就崩。
  • 对应行为克隆的协变量偏移。
Q3

协变量偏移是怎么"雪崩式"放大的?

💡 显示参考答案
  • 机器人走错一步→后面画面跑偏到训练分布外→更错→雪崩式失败。
  • 入门层「越错越偏,雪崩式失败」直接说明。
Q4

治协变量偏移的两条主流路子分别是什么?

💡 显示参考答案
  • 两条:DAgger(让师傅不停纠正机器人)和裁判式(GAIL/AMP,整体分布对齐)。
  • 入门层「两条主流路子」给了。
Q5

假设你要学"端起杯子放到右边"这个动作,只有人类演示。均方误差回归动作会遇到什么问题?

💡 显示参考答案
  • 均方误差在多解任务上会把多种合理动作平均成无效中间态。
  • 入门层 已补「单一输出碰上多解任务会把它们平均成无效动作」。

FAQ

Q1:行为克隆到底什么时候够用?

短视野任务(10 步以内)+ 大量演示 + 闭环评估通过,行为克隆就够。操作类短任务、ALOHA 双臂、ACT 都在这条线上。长视野任务(家务、导航)几乎必然崩,必须上 DAgger 或裁判式。

Q2:DAgger 为什么在机器人上不流行?

DAgger 要"在线请师傅纠正"——机器人运行时人要不停贴标签,又贵又危险。HG-DAgger、Safe DAgger 是工程妥协,但根本问题没解。所以大家宁愿用 action chunking 这种近似方案。

Q3:AMP / GAIL 这类"裁判式"模仿学习和行为克隆的核心差别?

行为克隆抄动作,裁判式抄分布。裁判式不要求逐帧对齐师傅,只要机器人访问的"状态-动作"整体分布像师傅就行。这让机器人能在师傅没见过的状态上正确行动,自动解决协变量偏移。


深度辨析 → site/concepts/C-imitation-learning-theory.html

相关