跳转至

第 8 章 模仿学习与动作分块

没有可写的奖励、只有专家示范时,最直接的做法是把示范当监督数据训练策略,即行为克隆。第 3 章已指出这条路的软肋:策略一旦偏离示范分布,误差会自我放大。本章讲两件事:怎么在算法上纠正这个偏差(DAgger 与逆强化学习),以及怎么让"一次预测一段动作"同时压住误差累积与推理延迟(动作分块、ACT、扩散策略)。

1. 行为克隆的目标与复合误差

行为克隆(behaviour cloning, BC)把示范当成 \((s,a)\) 对,最大化专家动作的似然:

\[ \min_\theta\ \mathbb E_{(s,a)\sim\mathcal D}\left[-\log\pi_\theta(a\mid s)\right] \]

连续动作下若用单峰高斯,这等价于最小化均方误差。这个选择在示范多模态时会出问题:同一状态下专家可能从左边或右边绕过障碍,两种动作都正确,而 MSE 的最优解是两者的平均——平均值往往正好撞上障碍。

这就是 BC 的第一个结构性缺陷:单峰假设与多峰示范不匹配。解法是让策略能表达多峰分布——混合密度网络、隐变量模型,或者把动作生成交给扩散模型(见「扩散策略」)。

第二个缺陷是复合误差。给定单步误差 \(\epsilon\),回合长度 \(T\) 时 BC 的误差上界是 \(O(T^2\epsilon)\):一步偏差把状态推到示范没覆盖的地方,那里没有正确标签,下一步偏差更大。对比之下,若每步都能得到纠正,上界降为 \(O(T\epsilon)\)。两者的差距随回合变长而放大,这是所有改进路线的出发点。

2. 交互式纠正:DAgger

数据集聚合(dataset aggregation, DAgger)用最直接的方式拿到纠正信号:让当前策略自己跑,把访问到的状态记下来,请专家对这些状态标注动作,再把新数据并入训练集。如此循环:

flowchart LR
    bc["在聚合数据上训练 π"] --> roll["π 与环境交互<br/>记录访问到的状态"]
    roll --> label["专家对访问状态标注动作"]
    label --> agg["并入聚合数据集"]
    agg --> bc

算法本身只多了一步"专家在线标注",代价却实在:专家要在策略跑偏的状态下给出正确动作,人工成本随轮次增长。仿真环境里可以把脚本策略或规划器当专家,成本降到接近零;真机场景则常用"人工接管"的形态,只在策略明显失败时介入。

收益是误差上界从 \(O(T^2\epsilon)\) 降到 \(O(T\epsilon)\)(Ross、Gordon、Bagnell,2011),因为训练分布逐步覆盖了策略实际会访问的状态。这条结论也解释了为什么"多采一些偏离状态下的恢复示范"比"把同样的正确轨迹多录几遍"更有效。

3. 逆强化学习与 GAIL

行为克隆直接学动作,另一条路先回答"专家在优化什么"。逆强化学习(inverse reinforcement learning, IRL)从示范反推回报函数,再按该回报做强化学习。最大熵逆强化学习把示范视为"在约束下最随机的专家行为",解出一个能解释示范的回报分布。

生成式对抗模仿学习(generative adversarial imitation learning, GAIL)把它做成对抗训练:判别器区分"专家转移"与"策略转移",判别器的输出当回报信号:

\[ r(s,a)=-\log\left(1-D(s,a)\right) \]

策略的目标是骗过判别器,因此学到的是"行为分布接近专家",而不是逐点复制动作。它不需要手工奖励,也不需要显式解出回报函数;代价是训练不稳定(对抗目标)、回报不可迁移(换任务要重训判别器),且对示范覆盖的要求并没有降低。

判据:有奖励写就做 RL,只有示范就做 IL

任务成败能写成程序可判的回报时,强化学习的上限更高;只有示范、且示范覆盖了任务的主要状态时,行为克隆与 DAgger 更直接。两者混用时,示范进回放池、回报继续算。

4. 动作分块与 ACT

逐步推理有两个工程问题:每一步都要跑一次网络,推理延迟直接限制控制频率;单步预测的误差会逐步累积。动作分块(action chunking)把两者一起处理:策略一次输出未来 \(K\) 步的动作

\[ \hat a_{t:t+K}=\pi_\theta(o_t) \]

执行时只走前若干步,然后重新观测、重新预测。这样单位时间内的推理次数降到 \(1/K\),而每次预测看到的是同一段历史,块内的动作天然平滑。

块长 \(K\) 是权衡:\(K\) 大则推理便宜、动作连贯,但开环时间长,遇到扰动反应慢;\(K\) 小则反应快,但推理次数回升、块间接缝变多。接缝的处理办法是时间集成(temporal ensembling):相邻两次预测在重叠区间上做加权平均,权重随预测年龄指数衰减

\[ w_i=\exp\left(-m\,(i-t)\right) \]

越新的预测权重越大,旧预测只用来平滑过渡。ACT(action chunking with transformers)把这条思路做成 Transformer 结构:编码器读观测序列,解码器一次输出一个块;训练时可选地加一个条件变分自编码器(CVAE)隐变量,用来吸收示范的多模态。

5. 扩散策略

扩散模型把动作生成写成去噪过程:从纯噪声开始,逐步预测并减去噪声,最后得到一段动作。训练目标是预测加进去的噪声:

\[ \mathcal L(\theta)=\mathbb E_{k,\,a^0,\,\epsilon}\left[\left\lVert\epsilon-\epsilon_\theta\left(a^k,\,k,\,s\right)\right\rVert^2\right],\qquad a^k=\sqrt{\bar\alpha_k}\,a^0+\sqrt{1-\bar\alpha_k}\,\epsilon \]

其中 \(k\) 是噪声等级,\(a^0\) 是示范动作块,\(\epsilon\sim\mathcal N(0,I)\)。推理时从 \(a^K\sim\mathcal N(0,I)\) 出发迭代去噪,条件里带当前观测。

def diffusion_loss(actions, obs, noise_pred, alphas_bar):
    k = torch.randint(0, len(alphas_bar), (actions.shape[0],), device=actions.device)
    eps = torch.randn_like(actions)
    a_bar = alphas_bar[k].view(-1, 1, 1)              # 每个样本一个噪声等级
    a_k = a_bar.sqrt() * actions + (1 - a_bar).sqrt() * eps
    pred = noise_pred(a_k, k, obs)                     # 条件:观测
    return torch.nn.functional.mse_loss(pred, eps)     # 预测噪声而非动作

扩散策略的核心优势是表达多峰分布:同一观测下两种绕行方式都能被采样到,不会像单峰高斯那样平均成一条撞墙的路径。代价在推理:去噪要迭代多步,单次决策比一次前向贵一个量级。工程上的对冲手段正是动作分块——一次生成 \(K\) 步,把去噪成本摊到 \(K\) 个控制步上。

坑:去噪步数与块长一起定

去噪步数多则动作精细但慢,块长大则推理便宜但反应慢。三者(去噪步数、块长、控制频率)必须一起定,单看任何一项都会得到"要么超时、要么抖"的配置。

6. 选型判据与评测

五种做法的适用面不同,判据是"示范是否多峰、推理预算多少、偏差能否被纠正":

方法 表达能力 推理成本 纠正信号 适用场景
行为克隆(单峰) 单峰 最低 无 示范干净、任务确定性高
行为克隆 + 动作分块 单峰 低 无 高频控制、延迟受限
ACT 多峰(CVAE) 中 无 双臂、长序列精细操作
扩散策略 多峰 高 无 多模态示范、允许低控制频率
DAgger 取决于基座 中 有 能请到专家在线标注

评测要比"平均动作误差"更贴近任务:在留出的初始状态上跑完整回合,报成功率与完成步数;同时记录单次决策延迟与块长,否则推理成本被隐藏。误差随回合长度的曲线能直接看出复合误差——BC 的曲线通常随时间上升,加了纠正信号的方法更平。

示范数据的量与覆盖仍是上限。第 3 章「数据、表示与分布偏移」的质量判据在这里直接生效:动作抖动会被完整学走,失败示范若混入监督目标会让策略模仿失败。

7. 要点

  • 行为克隆把示范当监督数据;单峰假设会平均多峰示范,复合误差随回合长度以 \(O(T^2\epsilon)\) 放大。
  • DAgger 让策略自己跑、专家标注访问状态,上界降到 \(O(T\epsilon)\);代价是专家在线标注。
  • 逆强化学习先反推回报,GAIL 用判别器给出隐式回报;两者换来免手工奖励,代价是不稳定与不可迁移。
  • 动作分块一次预测 \(K\) 步,把推理成本摊薄、让块内动作平滑;块长与反应性直接冲突,接缝用时间集成处理。
  • 扩散策略表达多峰分布,训练是噪声预测、推理是迭代去噪,成本由去噪步数与块长共同决定。
  • 评测要在留出初始状态上跑完整回合,报成功率、完成步数与决策延迟;平均动作误差不能代表任务成败。

参考文献与延伸阅读

  • Ross, S., Gordon, G. J., & Bagnell, J. A. A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning. AISTATS, 2011. PMLR
  • Ho, J., & Ermon, S. Generative Adversarial Imitation Learning. NeurIPS, 2016. arXiv
  • Zhao, T. Z., Kumar, V., Levine, S., & Finn, C. Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware. RSS, 2023. arXiv
  • Chi, C., Feng, S., Du, Y., et al. Diffusion Policy: Visuomotor Policy Learning via Action Diffusion. RSS, 2023. arXiv