深度教堂

  • 榜单数据10-16 17:00
  • 论文数据10-16 13:30
  • 周报10-17 11:22

模仿学习与行为克隆

未发布阅读约 40 分钟人工撰写已核查审核人 ai-fact-check

CS285CS285 L1–L3

本讲迁移自原课程讲义,经 AI 事实核查未发现存疑项,未逐页人工审核;如有出入,以原始论文和 CS285 课程资料为准。

第 01 讲核心模块课程总纲与基础对应 CS285 L1–L3

学习目标

  • 建立贯穿全书的符号约定:状态 $s$、动作 $a$、策略 $\pi$、奖励 $r$,以及 MDP 的预告。
  • 理解行为克隆(Behavioral Cloning, BC)如何把模仿归约为监督学习,以及固定专家占用分布与部署分布的差异。
  • 能从头推导朴素 BC 误差的二次累积 $O(\epsilon T^2)$,并说清每一步用到的假设。
  • 理解 DAgger 如何通过"在自己犯错的分布上收集标注"把界改善到 $O(\epsilon T)$。
  • 理解多模态动作分布为什么会破坏高斯策略,以及五类解决方案。

这是整套资料的起点。我们从最”朴素”的想法出发——既然有专家演示,为什么不直接用监督学习去模仿专家?沿着这个想法的失败,我们会自然地看清:为什么序列决策问题和普通监督学习有本质区别,为什么”误差会累积”,以及这条思路如何演化出 DAgger、多模态策略乃至今天的 diffusion policy / VLA。理解本模块,你就掌握了理解后续所有 RL 方法的”问题意识”。

学习目标

  • 建立贯穿全书的符号约定:状态 ss、动作 aa、策略 π\pi、奖励 rr,以及 MDP 的预告。
  • 理解行为克隆(Behavioral Cloning, BC)如何把模仿归约为监督学习,以及训练样本的相关性与部署分布变化。
  • 能从头推导朴素 BC 误差的二次累积 O(ϵT2)O(\epsilon T^2),并说清每一步用到的假设。
  • 理解 DAgger 如何通过”在自己犯错的分布上收集标注”把界改善到 O(ϵT)O(\epsilon T)。
  • 理解多模态动作分布为什么会破坏高斯策略,以及五类解决方案。

编者按 · 批判性视角

编者判断: 不宜只把模仿学习视为通往 RL 的”垫脚石”。行为克隆仍是监督微调和多种机器人策略的重要训练方式;公开模型同时采用离散动作 token、扩散、流匹配与动作分块等不同设计,不能概括为单一主流路线。[1] [2] 进一步对照见模块 13(LLM 与 RL)与模块 15(统一视角)。

1. 术语与符号约定

在整套资料中,我们研究一个智能体(agent) 与环境(environment) 交互的序列决策(sequential decision making) 问题。先固定符号,后面所有模块都沿用。

符号含义说明
st∈Ss_t \in \mathcal{S}时刻 tt 的状态 state有时区分”状态 ss“与”观测 oo“:状态满足马尔可夫性,观测可能是状态的部分/带噪函数。
at∈Aa_t \in \mathcal{A}时刻 tt 的动作 action可离散(有限动作集)也可连续(如机器人关节力矩)。
πθ(at∣st)\pi_\theta(a_t\mid s_t)策略 policy参数为 θ\theta 的条件分布;确定性策略写作 at=πθ(st)a_t=\pi_\theta(s_t)。
p(st+1∣st,at)p(s_{t+1}\mid s_t,a_t)状态转移/动态 dynamics环境的”物理规律”,通常未知。这是 RL 与监督学习最大的不同。
r(st,at)r(s_t,a_t)奖励 reward标量反馈,定义”好坏”。本模块暂时用不到,L4 起成为主角。
τ=(s0,a0,…,sT)\tau=(s_0,a_0,\dots,s_T)轨迹 trajectory / rollout一次完整交互序列;其中 TT 是时域(horizon)——一条轨迹的总步数(决策次数),后文误差分析 O(ϵT2)O(\epsilon T^2) 里的 TT 即指此。
γ∈(0,1]\gamma\in(0,1]折扣因子 discount本模块暂不涉及,见模块 02。

本模块只用到前四行:我们先不谈奖励,只谈”有一位专家 π⋆\pi^\star,我们有它产生的一批状态-动作演示 D={(si,ai)}\mathcal{D}=\{(s_i,a_i)\},想训练一个 πθ\pi_\theta 去复制它”。这就是模仿学习(imitation learning)。

本质 Insight

常规监督学习分析往往假设训练样本来自固定分布,并要求训练与测试分布相符。控制问题里,你此刻的动作会决定你下一刻看到什么状态——动作与数据分布相互耦合。这个”闭环”是行为克隆的重要困难之一,可通过数据覆盖、交互式模仿或基于奖励的优化等途径缓解。

1.1 马尔可夫性质与 MDP 预告

我们通常假设状态满足马尔可夫性质(Markov property):给定当前状态 sts_t,未来 st+1s_{t+1} 与过去 s0:t−1s_{0:t-1} 条件独立:

p(st+1∣st,at,st−1,at−1,… )=p(st+1∣st,at).(1.1)p(s_{t+1}\mid s_t,a_t,s_{t-1},a_{t-1},\dots) = p(s_{t+1}\mid s_t,a_t). \tag{1.1}

这就是”状态”这个概念的定义性质:状态是对历史的充分统计量。当环境还提供奖励 rr 和折扣 γ\gamma 时,五元组 (S,A,p,r,γ)(\mathcal{S},\mathcal{A},p,r,\gamma) 就构成一个马尔可夫决策过程(Markov Decision Process, MDP)——这是模块 02 的主题。马尔可夫性描述给定当前状态和动作后的转移;它不意味着不同时刻的犯错事件彼此独立。

图 1:智能体-环境交互闭环。策略输出的动作会改变后续状态分布,这条反馈边是模仿学习困难的根源。

图 1:智能体-环境交互闭环。策略输出的动作会改变后续状态分布,这条反馈边是模仿学习困难的根源。

1.2 状态 ss 与观察 oo:定义与区别

上面的符号表(§1)里,我们把”状态 ss“和”观测 oo“一笔带过。但这两个概念的差别,几乎是理解 RL 里绝大多数困难的钥匙——从”要不要记忆”到”BC 为什么会次优”,根子都在这里。下面正式区分它们。

正式定义:状态 ss vs 观察 oo

  • 状态 sts_t——世界”真实”且完整的描述。 它是对系统的马尔可夫充分刻画:给定 sts_t,未来与历史条件独立,动态只需当前状态即可预测,p(st+1∣st,at,st−1,… )=p(st+1∣st,at)p(s_{t+1}\mid s_t,a_t,s_{t-1},\dots)=p(s_{t+1}\mid s_t,a_t)(即 §1.1 的式(1.1))。换句话说,sts_t 是对历史的充分统计量,不必再往回看。
  • 观察 oto_t——智能体实际感知到的量。 它是真实状态经一层发射 / 观测过程(emission) 得到的,通常有损、部分、带噪:ot∼p(ot∣st)o_t\sim p(o_t\mid s_t),或确定性地 ot=h(st)o_t=h(s_t)。hh 一般不可逆——从单个 oto_t 无法还原出 sts_t。
  • 由此分出两类问题。 若智能体直接在状态上决策、且状态满足马尔可夫性,就是标准的 MDP(马尔可夫决策过程);若智能体只能看到观察 oto_t、而 oto_t 不足以充当充分统计量,就是 POMDP(部分可观测 MDP)。关键结论:观察一般不满足马尔可夫性——单个 oto_t 丢掉了历史里的信息,于是”要不要引入历史 / 记忆”这个问题,根源正在于 o≠so\ne s。

图 2:状态 s 与观察 o 的关系。真实状态 s_t 经发射过程 p(o\mid s) 得到观察 o_t,策略 \pi 只能基于 o_t 决策、输出 a_t,环境再按动态 p(s'\mid s,a) 转移到 s_{t+1}。发射这一层有损,正是 o 通常不满足马尔可夫性、以及 POMDP 之所以难的根源。

图 2:状态 ss 与观察 oo 的关系。真实状态 sts_t 经发射过程 p(o∣s)p(o\mid s) 得到观察 oto_t,策略 π\pi 只能基于 oto_t 决策、输出 ata_t,环境再按动态 p(s′∣s,a)p(s'\mid s,a) 转移到 st+1s_{t+1}。发射这一层有损,正是 oo 通常不满足马尔可夫性、以及 POMDP 之所以难的根源。

什么时候一个量算”状态”、什么时候只是”观察”?下表给出多个具体系统,可以看到:观察几乎总是真实状态的一个”低维、带损投影”。

系统完整状态 ss(马尔可夫充分)智能体的观察 oo为什么 oo 是部分 / 有损的
自动驾驶 / 机器人所有物体的真实位姿与速度、自身关节角与动力学状态单帧摄像头像素(外加有限传感器)单帧看不出速度 / 运动方向,还有遮挡与视野盲区;需多帧才能推断动态
Atari 游戏堆叠多帧(≈ 含运动信息的近似状态)单帧游戏画面单帧看不出球 / 物体的运动方向与速度——DQN 正是用帧堆叠(frame stacking) 把观察近似成状态
扑克 / 不完全信息博弈含所有玩家手牌的全局牌局自己的手牌 + 公共牌 + 下注历史对手手牌原理上不可见——信息被博弈规则永久隐藏,这是天然的 POMDP
倒立摆 / 经典控制(θ,θ˙)(\theta,\dot\theta):角度与角速度仅角度传感器读数 θ\theta缺角速度 θ˙\dot\theta,单个读数无法判断摆在往哪个方向运动
医疗决策病人真实、完整的生理状态化验值 / 生命体征 / 症状记录指标稀疏、有噪、滞后,只测到生理状态的少数侧面
LLM / 对话智能体完整对话历史 + 用户真实意图 + 世界真实事实(近似”状态”)模型看到的 token 上下文看不到用户真实意图与未言明的事实,且上下文窗口有限、会截断历史

回扣模仿学习:为什么 ss 与 oo 的区别对 BC / DAgger 至关重要

  • 课程里的 πθ(at∣st)\pi_\theta(a_t\mid s_t) 严格说应是 πθ(at∣ot)\pi_\theta(a_t\mid o_t)。 本模块为了记号简洁,几乎都把策略写成在状态上决策;但真实智能体(机器人、LLM)拿到的是观察,BC 实际学的是 πθ(at∣ot)\pi_\theta(a_t\mid o_t)——输入是像素 / token,而非上帝视角的 ss。
  • 信息缺失 → 完美拟合也可能次优。 若专家依据完整状态 ss 决策(老司机能感知车速、能看到被遮挡的行人),而学习者只见观察 oo(单帧画面),那么再完美地拟合 o↦ao\mapsto a 也补不回 oo 里没有的信息——存在一个由部分可观测性决定的性能上界。
  • 单帧观察的非马尔可夫性 → 需要历史 / 记忆。 因为 oto_t 不是充分统计量,只看当前观察的策略会”失忆”。补救是把观察或动作历史纳入输入,例如帧堆叠(DQN)或 RNN / Transformer 记忆;动作分块本身不能恢复缺失的隐状态。这也与 §3–§4 的分布漂移与误差累积相互放大——观察越贫乏,策略越易漂到陌生 oo,误差累积越快。
  • 一句话点题: 状态是世界真实的样子,观察是你能看到的样子;RL 里绝大多数难点,都来自二者不相等。

2. 行为克隆:把控制变成监督学习

行为克隆(Behavioral Cloning, BC) 是最直接的模仿学习:把专家演示当作有标注的数据集,状态 ss 是输入、专家动作 aa 是标签,用标准的监督学习拟合一个策略。

θ⋆=arg⁡max⁡θ  E(s,a)∼D[log⁡πθ(a∣s)]⟺arg⁡min⁡θ  E(s,a)∼D[ℓ(πθ(s),a)].(1.2)\theta^\star = \arg\max_\theta \; \mathbb{E}_{(s,a)\sim\mathcal{D}}\big[\log\pi_\theta(a\mid s)\big] \quad\Longleftrightarrow\quad \arg\min_\theta \; \mathbb{E}_{(s,a)\sim\mathcal{D}}\big[\ell(\pi_\theta(s),a)\big]. \tag{1.2}

对离散动作,ℓ\ell 通常是交叉熵;对连续动作,若 πθ\pi_\theta 是高斯 N(μθ(s),Σ)\mathcal{N}(\mu_\theta(s),\Sigma),最大似然就退化成对均值的均方误差(MSE)。整个流程和图像分类没有任何区别——这正是它的诱人之处:不需要奖励、不需要环境模型、不需要在线交互,一个前向网络 + 一次监督训练即可。

推导:为什么是交叉熵 / 为什么是 MSE(点开)

同一个原理:最大似然 = 最小化负对数似然

交叉熵与 MSE 看起来是两种”损失”,其实是同一件事的两个特例。式(1.2) 的最大似然(MLE)等价于最小化负对数似然(NLL) ℓ=−log⁡πθ(a∣s)\ell=-\log\pi_\theta(a\mid s);一旦选定了 πθ\pi_\theta 的输出分布族,NLL 的具体形式就被唯一地定死了。所以一句话记住:选损失 = 选输出分布的噪声模型——你不是在”挑损失函数”,而是在”假设动作标签是怎么被噪声生成的”。

第 1 步(离散 → 交叉熵)。 离散动作时 πθ(⋅∣s)\pi_\theta(\cdot\mid s) 是一个 softmax 类别分布,记作 qθq_\theta;专家标签 a⋆a^\star 是一个 one-hot 分布,记作 pp(在真实动作处为 11、其余为 00)。这一样本的 NLL 就是

−log⁡πθ(a⋆∣s)=−∑ap(a)log⁡qθ(a∣s)=H(p,qθ),-\log\pi_\theta(a^\star\mid s) = -\sum_a p(a)\log q_\theta(a\mid s) = H(p,q_\theta),

右端正是 pp 与 qθq_\theta 之间的交叉熵 H(p,qθ)H(p,q_\theta)。所以”离散动作用交叉熵”不是一个额外的选择——它就是类别分布的负对数似然,二者字面相等。

第 2 步(连续高斯 → MSE,逐步)。 连续动作时设 πθ(a∣s)=N(a;μθ(s),Σ)\pi_\theta(a\mid s)=\mathcal{N}\big(a;\mu_\theta(s),\Sigma\big)(a∈Rda\in\mathbb{R}^d)。写出对数密度:

log⁡πθ(a∣s)=−12(a−μθ(s))⊤Σ−1(a−μθ(s))−12log⁡((2π)d∣Σ∣).\log\pi_\theta(a\mid s) = -\tfrac12\big(a-\mu_\theta(s)\big)^\top\Sigma^{-1}\big(a-\mu_\theta(s)\big) - \tfrac12\log\big((2\pi)^d|\Sigma|\big).

取负、并丢掉与 θ\theta 无关的常数项,得 NLL

−log⁡πθ(a∣s)=12(a−μθ(s))⊤Σ−1(a−μθ(s))+const.-\log\pi_\theta(a\mid s) = \tfrac12\big(a-\mu_\theta(s)\big)^\top\Sigma^{-1}\big(a-\mu_\theta(s)\big) + \text{const}.

关键假设:若协方差固定为各向同性的 Σ=σ2I\Sigma=\sigma^2 I,则 Σ−1=1σ2I\Sigma^{-1}=\tfrac{1}{\sigma^2}I、log⁡∣Σ∣\log|\Sigma| 与 θ\theta 无关可消去,于是

−log⁡πθ(a∣s)=12σ2∥a−μθ(s)∥2+const.-\log\pi_\theta(a\mid s) = \frac{1}{2\sigma^2}\big\lVert a-\mu_\theta(s)\big\rVert^2 + \text{const}.

其中 12σ2\tfrac{1}{2\sigma^2} 只是一个正的常数缩放,不改变极小点。因此在这个假设下,最大似然 = 最小化 MSE ∥a−μθ(s)∥2\lVert a-\mu_\theta(s)\rVert^2——MSE 不是凭空选的损失,而是”固定各向同性高斯噪声”下的负对数似然。

补一句边界情形:若 Σ\Sigma 固定但为一般对角阵,则退化成各维加权 MSE(每维按 1/σi21/\sigma_i^2 加权);若让 Σ\Sigma 也随网络一起学,NLL 会多出 12log⁡∣Σ∣\tfrac12\log|\Sigma| 这一项,不再是纯 MSE(模型会用方差去”解释”噪声大小)。

为什么机器学习里通常这么选

  • 本质是同一件事。 MLE 等价于最小化前向 KL KL(pdata∥qθ)\mathrm{KL}(p_{\text{data}}\Vert q_\theta),也就是最小化交叉熵。交叉熵与 MSE 只是”把输出分布取成类别分布 / 高斯”的两个特例(GLM / 指数族视角:选损失 = 选噪声模型;若把噪声取成拉普拉斯分布,NLL 就变成 ℓ1\ell_1 / MAE,以此类推)。
  • MSE 的额外好处。 它对应同方差高斯残差假设;对预测均值的平方损失是凸的,梯度为 ∇μ12∥a−μ∥2=μ−a\nabla_{\mu}\tfrac12\lVert a-\mu\rVert^2=\mu-a,但以神经网络参数表示后的训练目标一般仍是非凸的。期望平方误差的最优预测恰是条件均值 E[a∣s]\mathbb{E}[a\mid s]。
  • 交叉熵的额外好处。 它是 proper scoring rule;在模型正确指定、数据充分并得到充分优化等条件下,鼓励报告真实条件概率,但不保证有限模型训练后自然校准。softmax + 交叉熵的梯度是 p^−y\hat p-y(预测概率减 one-hot)。

局限:高斯 + MSE 假设”单峰”

上面的推导埋着一个强假设:高斯是单峰的,MSE 只回归一个条件均值。当专家动作是多模态的(同一状态下向左绕、向右绕都对),“条件均值”会把多个峰平均成中间那个灾难性的动作(直行撞上障碍)——这正是本模块 §6 多模态动作分布问题 要用 MDN / 扩散 / VAE(隐变量) / 自回归离散 / ACT 来解决的动机。换言之,“交叉熵 / MSE = 高斯或类别分布的 NLL”这套逻辑没错,错的是把噪声模型假设成了单峰高斯;想表达多模态,就得换一个更富表达力的输出分布(详见 §6,此处不再展开)。

为什么这样 · 能不能不这样

为什么 BC 直接”克隆动作”——把状态映射到专家动作? 因为这样把控制彻底还原成一个有监督的输入-输出拟合:不需要奖励、不需要环境模型、不需要在线交互,一次前向 + 一次监督训练即可,工程上最省。它默认”专家动作本身就是我们想要的答案”,于是”学会决策”退化成”学会复读答案”。

能不能反过来——不学”怎么做”,而学专家”为什么这么做”(即反推出奖励)? 能,这就是逆强化学习(inverse RL, IRL):从专家轨迹推断一个能解释其行为的奖励函数 rr,再用它优化策略。奖励可能比具体动作更便于迁移,但奖励推断通常是欠定的,且还需求解后续控制问题。纯 BC 的监督目标只拟合示范动作,不直接优化任务回报;IRL 或 RL 是获得奖励信号后可选的优化路径,但是否超过给定示范取决于奖励、信息与搜索能力(详见模块 07 / 13)。

批判性追问:把 BC 叫做”监督学习”严谨吗?——训练像,泛化不像

“BC = 监督学习”这个等号,在训练阶段确实成立:同样的 (s,a)(s,a) 对、同样的交叉熵 / MSE、同样的反向传播。但它掩盖了一处致命差异,值得追问。

  • 不严谨在哪。 监督学习的泛化保证建立在 i.i.d. 假设(训练分布 = 测试分布)之上;而 BC 一部署就打破它——策略自己的动作改变后续状态分布,测试时真正面对的是 pπθ≠pdatap_{\pi_\theta}\ne p_{\text{data}}。所以”BC 享有 SL 的泛化保证”这半句是不成立的。
  • 反例 / 后果。 一个在专家分布上测试误差极低(“监督学习意义下很好”)的策略,仍可能在线上崩溃:SL 的泛化界只覆盖 pdatap_{\text{data}},对策略自己漂移到的 OOD 状态不作任何担保。这正是下面 §3–§4 的分布漂移与 O(ϵT2)O(\epsilon T^2)。
  • 靠什么假设才近似为真。 只有当动力学本身稳定 / 时域短 / 数据覆盖极广(策略略偏仍落在见过的分布内)时,“BC ≈ 享保证的 SL”才近似成立——这也解释了大 LLM 的 SFT 为何看起来”像纯监督”。
  • 如何补救 / 是否仍开放。 DAgger(把训练分布搬到 pπθp_{\pi_\theta})、加噪演示、on-policy RL 都在修这条鸿沟。更准确的说法是:BC 的训练是监督学习,但它的评估是一个控制问题——两者不能混为一谈。

BC 的极简算法

  1. 收集专家演示 D={(si,ai)}i=1N\mathcal{D}=\{(s_i,a_i)\}_{i=1}^N(人类遥操作、专家控制器、已有日志……)。
  2. 监督训练 πθ\pi_\theta:最大化 ∑ilog⁡πθ(ai∣si)\sum_i \log\pi_\theta(a_i\mid s_i)。
  3. 部署:在环境中运行 πθ\pi_\theta。

前沿实践

BC 仍用于机器人策略和语言模型的监督微调。以公开 VLA 为例,OpenVLA 将动作表示为离散 token,π0 则使用流匹配动作专家;二者都从示范数据学习动作,但动作头并不相同。[1] [2] 模块 13 将进一步讨论监督微调与基于奖励的后训练。

本质 Insight:LLM 的 pretrain→SFT→RLHF 正是本课主线的重演

自回归模型的 SFT 与 BC 都在给定示范前缀上拟合条件动作或 token,因此都可能遇到训练前缀与自由生成前缀不一致的问题。使用模型自采样 rollout 的 on-policy RL 是缓解这种失配的一条路径,但搜索、拒绝采样、蒸馏等方法也可利用额外信息改进结果;不能由此推出“只有 RL 才能超过示范”。完整展开见模块 13(LLM 与 RL)与模块 15(统一视角)。

3. 为什么朴素 BC 会失败:分布漂移

理论上 BC 应该可行——如果模型足够强、数据足够多,它能在训练分布上把误差压到很小。但实践中,直接部署 BC 的策略常常在几步之后就”漂”到从未见过的状态,然后彻底崩溃。Levine 用一张经典的车道保持图说明:一旦车稍微偏离中心(训练数据里没有的状态),策略不知所措,误差进一步放大,越偏越远。

问题的名字叫分布漂移(distributional shift),也叫协变量漂移(covariate shift)。核心矛盾用两个分布来刻画:

  • pdata(s)p_{\text{data}}(s):专家访问的状态分布(训练分布)。BC 在这个分布上把误差降到了 ϵ\epsilon。
  • pπθ(s)p_{\pi_\theta}(s):学到的策略自己运行时访问的状态分布(测试分布)。

监督学习保证的是 Es∼pdata[误差]\mathbb{E}_{s\sim p_{\text{data}}}[\text{误差}] 小,但我们部署时真正面对的是 Es∼pπθ[误差]\mathbb{E}_{s\sim p_{\pi_\theta}}[\text{误差}]。而 pπθ≠pdatap_{\pi_\theta}\ne p_{\text{data}}——因为策略只要犯一点错,就会进入专家没去过的状态,那里它没被训练过,于是错得更离谱,把自己推向更陌生的状态。这是一个正反馈的发散过程。

为什么这样 · 能不能不这样

为什么 BC 只能在”专家自己走过的状态分布” pdatap_{\text{data}} 上才安全? 因为专家只在它到过的状态上留下了动作标签——那里才有”正确答案”可学,监督学习的泛化保证也只覆盖这块分布。换句话说,BC 的训练分布不是我们随手选的,而是被”标签在哪”这件事钉死在专家分布上。

能不能换个分布收集数据? 这恰恰是问题的要害:我们真正需要监督的,正是策略自己会漂到、而专家没去过的状态;可那些状态上没有专家标签。三条出路各有代价:(1) 什么都不做——测试时策略走的是 pπθ≠pdatap_{\pi_\theta}\ne p_{\text{data}},于是分布漂移、误差二次累积(下一节的 O(ϵT2)O(\epsilon T^2));(2) DAgger——干脆把训练分布搬到 pπθp_{\pi_\theta},在策略漂到的状态上现场向专家要标签,代价是需要一个能随时在线作答的专家;(3) 加噪/扰动演示——人为让演示覆盖”偏离-恢复”的状态,离线就把分布撑宽,代价是要能构造出合理的纠正动作。可见”在专家分布上训练”不是优点而是约束:谁能把训练分布对齐到策略真正会遇到的地方,谁就治住了 BC 的病根。

图 3:分布漂移导致的轨迹发散。绿色为专家(训练)分布,红色为学习者运行轨迹;一旦离开绿色"管道",误差便正反馈放大。

图 3:分布漂移导致的轨迹发散。绿色为专家(训练)分布,红色为学习者运行轨迹;一旦离开绿色”管道”,误差便正反馈放大。

本质 Insight:为什么监督学习不会这样,控制却会?

图像分类里,测试图片是”独立”抽的——你分错这张,不会让下一张变得更难。但在控制里,你的输出(动作)是下一次输入(状态)的原因。误差不是被”重新采样”冲掉,而是被动力学积分累积。所以同样的每步误差 ϵ\epsilon,在 i.i.d. 世界里总误差是 O(ϵ)O(\epsilon),在序列决策里却会放大——放大多少?下一节精确算出来。

4. 误差的二次累积 O(εT²)

这是本模块的技术核心:我们要严格证明朴素 BC 的性能损失随时域 TT 二次增长。这个结论解释了”为什么长时域任务里 BC 尤其脆弱”,也为 DAgger 的动机提供了量化依据。

推导:从”每步犯错概率 ε”到”总代价 O(εT²)“(完整步骤)

关键假设

  1. 训练误差有界:在专家分布上,策略犯错的概率不超过 ϵ\epsilon:

    Es∼pdata(s)[πθ(a≠π⋆(s)∣s)]≤ϵ.(1.3)\mathbb{E}_{s\sim p_{\text{data}}(s)}\big[\pi_\theta(a\ne\pi^\star(s)\mid s)\big]\le \epsilon. \tag{1.3}

    这里”犯错”= 输出的动作与专家不同(可推广到”动作差异大于阈值”)。

  2. 代价函数:定义 c(st,at)=0c(s_t,a_t)=0 若 at=π⋆(st)a_t=\pi^\star(s_t),否则 =1=1;我们分析总期望代价 E[∑t=1Tc(st,at)]\mathbb{E}\big[\sum_{t=1}^T c(s_t,a_t)\big],最大可能为 TT(每步都错)。

  3. 时域有限:共 TT 步;马尔可夫性(式(1.1))使得每步的转移只依赖当前状态,从而”是否犯错”可逐步处理。

第 1 步(耦合学习者与专家)。 让两条轨迹从同一初始状态出发,并在动作相同前共享环境随机性。首次动作不同之前,两条轨迹完全一致;首次错误之后,学习者轨迹才可能偏离专家轨迹。

第 2 步(union bound,不要求错误独立)。 令 EtE_t 表示前 tt 步至少发生一次动作错误。沿专家轨迹第 uu 步的边缘错误率不超过 ϵ\epsilon,因此

Pr⁡(Et)≤∑u=1tPr⁡(au≠π⋆(su))≤tϵ.(1.4)\Pr(E_t)\le \sum_{u=1}^{t}\Pr(a_u\ne\pi^\star(s_u))\le t\epsilon. \tag{1.4}

这里使用的是 union bound,不要求不同时刻的错误事件独立。由上述耦合,学习者与专家在时刻 tt 的占用分布只有在 Et−1E_{t-1} 发生时才可能不同;若全变差定义为 TV(p,q)=12∥p−q∥1\mathrm{TV}(p,q)=\tfrac12\lVert p-q\rVert_1,则

TV ⁣(dπθt,dπ⋆t)≤Pr⁡(Et−1)≤(t−1)ϵ.(1.5)\mathrm{TV}\!\left(d_{\pi_\theta}^t,d_{\pi^\star}^t\right)\le \Pr(E_{t-1})\le (t-1)\epsilon. \tag{1.5}

第 3 步(把首次错误转成任务代价上界)。 若每步任务代价位于 [0,1][0,1],两条轨迹在没有动作分歧时承担相同代价;一旦发生首次错误,余下至多 TT 步的总代价差最多为 TT。因此

J(πθ)−J(π⋆)≤T Pr⁡(ET)≤ϵT2.(1.6)J(\pi_\theta)-J(\pi^\star)\le T\,\Pr(E_T)\le \epsilon T^2. \tag{1.6}

结论: 朴素 BC 相对专家的最坏任务代价差为 O(ϵT2)O(\epsilon T^2)。这是带未知常数并受代价范围约束的最坏上界,不是对实际错误步数的精确预测;稳定动力学、恢复行为与更广的数据覆盖都可能使实际损失明显更小。该耦合与占用分布思路与 DAgger 文献中的二次界一致。[3]

本质 Insight:那个多出来的 T 从哪来?

线性项 ϵT\epsilon T 是逐步错误的普通累积;二次项 ϵT2\epsilon T^2 来自首次错误可能影响余下至多 TT 步。换句话说,早期错误不仅有即时影响,还可能改变后续输入分布。这个最坏界不依赖错误事件相互独立,并说明了 DAgger 为何要在学习者访问的状态上补充专家标签。

局限 / 何时这个界过于悲观

O(ϵT2)O(\epsilon T^2) 是最坏情况上界,依赖”犯错后进入完全陌生、最坏的分布”这一假设。现实中若系统本身有稳定/自我纠正的动力学(如带反馈的物理系统会把小扰动衰减掉),漂移不会持续放大,BC 表现会好得多。此外,如果专家演示本身就覆盖了各种”偏离-恢复”的状态(数据增强、故意加噪演示),也能把界拉回接近 O(ϵT)O(\epsilon T)。这解释了实践中”给演示加扰动+纠正”为什么有效。

图 4:朴素 BC 的最坏总代价 O(\epsilon T^2)(红)随时域二次增长,而消除分布漂移后可达 O(\epsilon T)(绿)。长时域任务里两者差距巨大。

图 4:朴素 BC 的最坏总代价 O(ϵT2)O(\epsilon T^2)(红)随时域二次增长,而消除分布漂移后可达 O(ϵT)O(\epsilon T)(绿)。长时域任务里两者差距巨大。

4.1 数值走查:一步 1% 的小错如何滚成雪球

下表把 ϵT\epsilon T 与 ϵT2\epsilon T^2 作为量级示意。大 OO 省略常数,且这里的二次项是最坏上界,不能直接解释为实际期望犯错步数;上界触及物理上限 TT 也不证明策略实际会全程失控。

时域 TT线性量级 ϵT\epsilon T二次量级 ϵT2\epsilon T^2量级比值说明
10100.10.11110×10\times仅作尺度比较
50500.50.5252550×50\times不是性能预测
10010011100100100×100\times上界已无信息量

在忽略常数的量级表达中,两式的比值为 TT;它只说明最坏界随时域增长得更快,不能据此推出具体失败比例。

图 5:线性与二次误差量级的示意比较;图形仅表达随时域增长的差异,不表示精确常数或性能预测。

图 5:线性与二次误差量级的示意比较。图形仅表达随时域增长的差异,不表示精确常数或性能预测。

追问:LLM 的 teacher forcing 是不是避免了二次累积?——训练时是,推理时不是

一个精确而重要的观察:自回归语言模型训练用 teacher forcing——预测第 t+1 个 token 时喂的是真实前缀而非模型自己的输出。于是训练全程都在”数据分布”上,模型从不面对自己的错误——这正是行为克隆的设定(训练状态分布 = 数据分布)。所以 teacher forcing 并没有”解决”二次累积,而是在训练阶段把它绕过、藏了起来。

推理时原形毕露:生成时没有真值可喂,模型只能把自己生成的 token 当作下一步输入。一旦某步略偏,前缀就滑出训练分布 → 后续更易错 → 误差沿序列累积。这就是 exposure bias,正是本节 O(ϵT2)O(\epsilon T^2) / 分布漂移在语言模型上的化身。所以:训练被 teacher forcing 掩盖,推理时暴露——正如你所料。

两点补充:(1) 大 LLM 的数据覆盖、模型能力和语言结构使实际误差传播通常比最坏界温和。(2) 某些 on-policy RLHF/RLVR 算法使用模型自采样 rollout,因而可能缓解模型自生成分布上的失配;但 RLHF 也包含离线偏好优化方法,终局奖励训练也不保证消除 exposure bias。

5. DAgger:把界改善到 O(εT)

诊断清楚了病根——测试分布 pπθp_{\pi_\theta} 与训练分布 pdatap_{\text{data}} 不一致——治法就很直接:与其想尽办法让策略更完美(降低 ϵ\epsilon),不如让训练数据来自策略自己会去的分布。这就是 DAgger(Dataset Aggregation,数据集聚合) 的思想(Ross et al., 2011)。

DAgger 算法

  1. 用当前数据 D\mathcal{D} 训练策略 πθ\pi_\theta(初始 D\mathcal{D} 为专家演示)。
  2. 运行 πθ\pi_\theta 收集它自己访问到的状态 {s1,s2,… }∼pπθ(s)\{s_1,s_2,\dots\}\sim p_{\pi_\theta}(s)(注意:动作用策略的,状态因此来自策略分布)。
  3. 请专家为这些新状态标注正确动作 at=π⋆(st)a_t=\pi^\star(s_t)。
  4. 聚合:D←D∪{(st,π⋆(st))}\mathcal{D}\leftarrow \mathcal{D}\cup\{(s_t,\pi^\star(s_t))\}。
  5. 回到第 1 步,重复。

把上面的口语步骤写成可直接实现的完整算法伪代码:

输入:可在线查询的专家 π*,初始专家演示集 D₀,迭代轮数 N,每轮 rollout 步数 T,混合系数 βᵢ
初始化:D ← D₀

for i = 1 … N do
    # ① 训练:在当前聚合数据集上做监督学习(本质是一次 BC)
    πᵢ ← argmax_θ  Σ_(s,a)∈D  log π_θ(a | s)

    # ② 在线 rollout:按轮次使用专家/学习者混合策略采集状态
    s ← 环境初始状态;   Sᵢ ← ∅
    for t = 1 … T do
        a ← βᵢ π*(s) + (1−βᵢ) πᵢ(s)  # 随机策略混合;βᵢ 通常随轮次衰减
        Sᵢ ← Sᵢ ∪ { s }
        s ← env.step(s, a)      # 环境按未知动态 p(s′|s,a) 转移
    end for

    # ③ 专家标注:对策略访问到的每个状态,查询专家的正确动作
    Aᵢ ← { (s, π*(s)) : s ∈ Sᵢ }

    # ④ 聚合(Dataset Aggregation 之名的由来):把新标注并入历史数据
    D ← D ∪ Aᵢ
end for

返回 在验证集上表现最好的 πᵢ

四步正好对应”初始化数据集 → 训练 → rollout → 专家标注聚合 → 迭代”。关键在 ②③:状态来自各轮混合策略诱导的分布,而标签来自专家;随着 βi\beta_i 衰减,采集分布逐渐更多反映学习者会访问的状态。[3]

本质 Insight:DAgger 到底在修什么?

BC 的失败来自训练与部署占用分布失配。DAgger 在多轮混合策略访问的状态上查询专家并聚合数据,从而增加对学习者相关状态的覆盖;它不保证聚合数据分布与某个最终策略分布严格相等。其正式保证依赖 no-regret 在线学习,并说明策略序列中存在低 on-policy surrogate loss 的策略。[3]

推导:为什么 DAgger 收敛后总代价是 O(εT)?

关键假设

  • 多轮在线学习器具有低 regret,且混合系数按论文条件衰减。
  • 策略序列在各轮诱导分布上的 surrogate loss 有界。
  • 专家可在任意查询状态给出标注(DAgger 的关键前提:需要一个可在线查询的专家)。

DAgger 将每轮策略视为在线学习决策,并在该轮诱导分布上定义监督损失。若在线学习器的平均 regret 随轮数趋于零,则这些轮次中存在一个策略,其 on-policy surrogate loss 不超过最佳固定策略在聚合问题上的损失加 regret 与有限轮、混合策略余项。再用任务代价对单步错误的敏感度把 surrogate loss 转为性能界,可得到对时域近线性的依赖,而不是朴素 BC 的最坏二次依赖。这里的结论是带条件和余项的存在性保证,并非“分布差精确归零”。[3]

批判性追问:O(ϵT)O(\epsilon T) 这条界,隐藏了哪些假设?

“DAgger 把界改善到 O(ϵT)O(\epsilon T)“读起来干脆利落,但它不是无条件成立的——它依赖两层不易满足的假设。

  • 第一层:no-regret 在线学习。 Ross 2011 的保证要求每轮聚合出的策略在累积数据上是无悔(no-regret) 的,且迭代足够多轮使训练分布真的收敛到 pπθp_{\pi_\theta}。有限轮 + 非凸神经网络下,这只是近似,界会带上一个不消失的余项。
  • 第二层更脆:那个 ϵ\epsilon 被默认成常数。 “每步犯错率 ≤ϵ\le\epsilon“暗含”专家能对任意状态给出一致、正确的标签”。现实里专家对策略漂到的怪异状态往往(1)自己也不确定最优动作、(2)不同标注者、甚至同一人前后给出矛盾标签——于是 ϵ\epsilon 在陌生状态上悄悄变大,“常数单步代价”这一前提被侵蚀,线性界随之松动。
  • 反例视角。 若在策略最需要纠偏的漂移区,专家标注恰恰最不可靠(ϵ\epsilon 局部升高),则真实代价会介于 O(ϵT)O(\epsilon T) 与 O(ϵT2)O(\epsilon T^2) 之间,而非干净地落在线性。
  • 是否仍开放。 这正是纯 DAgger 在大规模场景罕见的原因:实践改用加噪演示、HG-DAgger(人在回路只在关键处干预),或干脆换成用验证器奖励的 RL(RLVR),以绕开”可查询且一致的专家”这一前提(见下方对比与 模块 13)。

局限 / 陷阱

  • 需要可在线查询的专家:第 3 步要求专家能对策略访问到的任意(可能很怪异的)状态给出动作。人类专家对”离奇状态”往往难以标注,甚至不知道正确动作是什么。
  • 标注成本高:每轮都要人来标,长时域/高频控制下标注量巨大。
  • 非马尔可夫/部分可观测时,专家看到的上下文可能与策略不同,标注会有偏差。
  • 实践折中:用带扰动的演示、HG-DAgger / 人在回路干预只在关键处标注,或用集成不确定性决定何时问专家。
方法训练分布需要在线专家?最坏总代价典型场景
朴素 BCpdatap_{\text{data}}(专家)否O(ϵT2)O(\epsilon T^2)短时域、稳定动力学、海量演示
BC + 演示加噪/纠正接近策略分布否(离线构造)介于两者之间驾驶、机械臂(数据增强)
DAggerpπθp_{\pi_\theta}(策略自身)是O(ϵT)O(\epsilon T)可查询专家/可仿真标注

展开:DAgger 与 RLVR 是什么关系?(同骨架、异监督)

共享的骨架:都”在自己的 rollout 上训练”

某些 RLVR 实现和 DAgger 都会从当前策略采样数据,因此都能让训练信号覆盖策略实际访问的区域;但二者的监督信号和理论保证不同。DAgger 查询逐状态专家动作并依赖 no-regret 分析,RLVR 使用可验证奖励并涉及信用分配。采用 on-policy 数据可能缓解分布失配,但不保证失配消失。

根本区别在”监督的形式”:

维度BC / SFTDAggerRLVR(RL 微调)
训练用的状态 / 轨迹专家 / 数据分布(off-policy)模型自己的 rollout(on-policy)模型自己的 rollout(on-policy)
监督来源专家动作标签专家在”策略访问状态”上的动作标签验证器 / 奖励(打分,常仅终局)
反馈类型指令式(告诉你正确动作)指令式评价式(只说好坏 → 需信用分配)
是否直接优化任务奖励否否是
需要什么”oracle”一批离线示范可在任意状态查询的交互式专家(贵 / 常无)一个验证器(便宜得多:验证 ≪ 生成)
覆盖当前策略分布通常不直接覆盖通过混合策略采集取决于具体算法;on-policy 版本覆盖

一句话 & 2×2 记忆法

可把三者按“动作标签或奖励”与“离线数据或当前策略采样”两个维度比较。这个 2×2 只是教学类比,不能替代各算法的正式目标与保证。

为什么 LLM 走 RLVR 而不是 DAgger

DAgger 需要能在策略访问状态上给出动作标签的专家;RLVR 则可使用最终结果的可验证奖励,但要处理信用分配。哪种监督更易获得取决于任务;完整展开见模块 13。

6. 多模态动作分布问题

即便解决了分布漂移,BC 还有另一个独立的困难:专家的动作往往是多模态(multi-modal)的。同一个状态下,专家有多个同样合理的选择——绕过障碍可以往左也可以往右;开车遇到岔路可左可右。如果我们用单峰高斯去拟合这种数据,最大似然会把概率质量放到多个模态的”平均”上——而那个平均值可能是最糟糕的动作(直接撞上障碍)。

图 6:多模态动作。单峰高斯把两个正确模态平均成中间的错误动作(红虚线)。

图 6:多模态动作。单峰高斯把两个正确模态平均成中间的错误动作(红虚线)。

举例

把”向左绕”记成转向角 +30∘+30^\circ、“向右绕”记成 −30∘-30^\circ,两条路都能安全通过。若专家演示里两种各占一半,单高斯的最大似然会把均值学成 (+30∘)+(−30∘)2=0∘\frac{(+30^\circ)+(-30^\circ)}{2}=0^\circ——恰好是笔直撞上障碍的那一档。这就像十个人投票”红烧还是清蒸”,你把答案平均成”温水半熟”:两个选项都对,均值却谁也不是。所以要么让策略同时保留两个峰(MDN/扩散),要么离散化逼它二选一。

解决多模态,本质是让策略能表达更丰富的分布。CS285 给出五类方案,也恰好是近年动作生成模型演化的主线:

6.1 混合密度网络(Mixture Density Network, MDN)

让网络输出 KK 个高斯的参数与权重:πθ(a∣s)=∑k=1Kwk(s) N(a;μk(s),Σk(s))\pi_\theta(a\mid s)=\sum_{k=1}^K w_k(s)\,\mathcal{N}\big(a;\mu_k(s),\Sigma_k(s)\big)。简单直接,能表达有限个模态;缺点是高维动作下 KK 需求爆炸、协方差难学、模态数需预设。

6.2 隐变量模型(Latent Variable Models)

引入隐变量 zz,令 πθ(a∣s)=∫πθ(a∣s,z) p(z) dz\pi_\theta(a\mid s)=\int \pi_\theta(a\mid s,z)\,p(z)\,dz。这里 zz 是一个不被观测的随机”模态选择器”:它不对应任何真实物理量,只是一个内部随机源,通常取简单先验 p(z)p(z)(如标准正态 N(0,I)\mathcal{N}(0,I))——采样一个 zz 相当于先”掷骰子”决定走哪个模态,再据此输出动作。之所以引入它:给定 zz 时分布仍是简单高斯(好训练),但对 zz 边缘化(积分)后就能拼出任意复杂的多峰分布(如条件 VAE)。表达力强,但训练需要变分推断,较复杂。

6.3 自回归离散化(Autoregressive Discretization)

把连续动作离散成 bins,用离散分布 + 自回归逐维生成:先建模 a(1)a^{(1)} 的类别分布,再以 a(1)a^{(1)} 为条件建模 a(2)a^{(2)},依此类推。离散 softmax 天生能表达多峰,自回归解决了”各维联合分布”的耦合。这正是把语言模型式的离散生成搬到了动作空间。

推导:为什么离散 softmax 天生能表达多模态,而单高斯不能?

第 1 步(用:对数凹性 → 单峰)。 单高斯 N(μ,σ2)\mathcal{N}(\mu,\sigma^2) 的密度是对数凹(log-concave) 的,而对数凹密度是单峰的。无论怎么调 μ,σ\mu,\sigma,它都无法在两个分开的位置同时给出高概率——这就是”平均成中间错误动作”的根本原因。

第 2 步(用:类别分布无形状约束)。 把动作区间切成 BB 个 bin,用 softmax 输出 BB 维类别分布 p1,…,pBp_1,\dots,p_B。它在概率单纯形上完全自由、不受对数凹约束——可以让第 3 个和第 20 个 bin 同时取高概率、中间取低概率,从而表达”向左或向右、但不要直行”。

第 3 步(用:概率链式法则表达联合分布)。 动作多维时,独立地对每维 softmax 会丢掉维间相关性。自回归 p(a)=∏jp(a(j)∣a(1:j−1))p(a)=\prod_j p(a^{(j)}\mid a^{(1:j-1)}) 用链式法则无损地表达任意联合分布(只要每个条件分布够灵活)。

局限: 离散化带来量化误差,自回归采样是串行的;按维条件分解时,输出规模通常随动作维数和每维 bin 数增长,同时还需承担高维条件建模负担。

6.4 扩散策略(Diffusion Policy)

一种方案是用扩散模型(diffusion model) 建模动作分布——从噪声出发,学习逐步去噪成一条动作序列。Diffusion Policy 在其论文报告的机器人操作基准上比较了多种策略,并用条件去噪过程生成动作序列。[4]

训练与采样的思路可浓缩为(以 DDPM 式去噪为例,动作块记作 a\mathbf{a},αˉk\bar\alpha_k 为噪声调度):

# 训练:学一个去噪网络 ε_φ,预测被加到干净动作上的噪声
给定 (状态 s, 专家动作块 a⁰):
    采样噪声步 k ~ Uniform{1…K},高斯噪声 ε ~ 𝒩(0, I)
    构造加噪动作   aᵏ = √(ᾱₖ)·a⁰ + √(1 − ᾱₖ)·ε
    最小化损失     ‖ ε − ε_φ(aᵏ, k, s) ‖²      # 让网络学会"看出噪声"

# 采样(推理):从纯噪声出发,条件于状态 s 反复去噪 K 步
aᴷ ~ 𝒩(0, I)
for k = K … 1 do
    a^(k−1) ← 去噪一步( aᵏ, ε_φ(aᵏ, k, s) )     # 逐步把噪声还原成动作
end for
返回 a⁰                                          # 一次生成一整段动作块(action chunk)

图 7:扩散策略从纯噪声逐步去噪,条件于状态 s 生成一整段动作块。不同随机起点会落到不同模态,天然解决多模态与时间一致性。

图 7:扩散策略从纯噪声逐步去噪,条件于状态 ss 生成一整段动作块。不同随机起点会落到不同模态,天然解决多模态与时间一致性。

前沿实践

公开机器人策略展示了多条并行路线:OpenVLA 使用离散动作 token,Diffusion Policy 使用条件扩散生成动作序列,π0 使用流匹配动作专家。[1] [4] [2] 这些例子说明动作表示并未收敛到单一方案。

6.5 更高的时间抽象与动作分块

另一条正交思路:不逐步预测单步动作,而是一次预测一段动作序列(action chunking),配合上面的分布模型。这既缓解了复合误差(少几次决策=少几次犯错机会),也让多模态在”整段轨迹”层面更好表达。

深化拓展:action chunking(ACT)为何可能缓解复合误差

ACT 一次预测未来 kk 步动作,把高层预测的有效时域缩短;论文将此作为缓解复合误差的动机。[5] 但不能直接把 §4 的 TT 替换成 T/kT/k 并声称有 k2k^2 保证,因为每块错误率、块内动力学、时间聚合与重规划方式都会随 kk 改变。

  • 代价:块内不能中途纠错。 免费午餐不存在——块内是开环(open-loop) 的:一旦块中途遇到扰动或偏离,策略要等这 kk 步走完才能反应。于是 kk 太大时,“块内不可纠错”的误差会重新抬头(尤其在动力学不稳、扰动频繁时)。
  • 结论:块长需要权衡。 较长动作块减少高层决策频率,却可能降低对中途扰动的反应性;具体效果应由任务和执行方式验证。

6.6 三类主流解法对比(训练与采样思路)

方案如何表达多模态训练思路采样思路优 / 劣
混合密度网络 MDNKK 个高斯的加权和最大化混合似然 log⁡∑kwkN(a;μk,Σk)\log\sum_k w_k\mathcal{N}(a;\mu_k,\Sigma_k)先按权重 wkw_k 选一个分量,再从该高斯采样优:简单、显式概率;劣:模态数 KK 需预设,高维下协方差难学、易退化
隐变量 + 自回归离散化离散 softmax 天生多峰;隐变量 zz 边缘化出复杂分布;自回归表达维间联合把动作分 bin,按链式法则 ∏jp(a(j)∣a(1:j−1),s)\prod_j p(a^{(j)}\mid a^{(1:j-1)},s) 训练;或用 cVAE 的变分下界逐维 / 逐 token 串行采样(自回归);VAE 则先采隐变量 zz 再解码优:表达力强、与语言模型同构(action tokens);劣:离散化量化误差、串行采样较慢
扩散策略 Diffusion Policy由多步去噪隐式定义连续分布学去噪网络 ϵϕ\epsilon_\phi,回归被加的噪声(见上方伪代码)从高斯噪声出发反复去噪 KK 步,一次生成整段动作块优:可表达高维、多模态动作序列;劣:需多步迭代采样 [4]

前沿定位 · VLA 与 action chunking

这些方案并非互斥。公开模型中,OpenVLA 使用离散动作 token,π0 使用流匹配动作专家;动作分块则可与不同分布模型组合。[1] [2] 不同任务和基准不支持统一的“最强组合”结论。

7. 模仿学习的局限与何时够用

把前面的讨论收束成一张”决策清单”。模仿学习(尤其 BC)的根本局限,都源自”它只会复制,不会评估好坏”。

模仿学习的本质局限

  • 不直接优化任务回报:纯 BC 只拟合示范动作;是否能在某项指标上超过示范者,还取决于数据聚合、模型归纳偏置、搜索与可用信息。
  • 分布漂移:如第 3–4 节,需 DAgger 或数据增强缓解。
  • 需要专家数据:某些任务根本没有专家(比如要发现新策略),或专家演示昂贵/危险。
  • 多模态与因果混淆:单峰模型学不好;若观测里有”因果混淆变量”(如刹车灯与踩刹车高度相关),BC 会学到错误捷径。

举例

只看示范录像学开车,纯 BC 的目标只是复现数据中的动作,并不会直接比较未示范路线的用时。若有“到得越快分越高”的奖励,RL 可以尝试优化路线;若有环境模型,也可以用搜索、规划或模型预测控制。关键区别在于是否有额外目标与信息,而不是“是否只有 RL 才能超越示范”。

什么时候 BC 就够用?

  • 有大量、覆盖广的专家演示(含”偏离-恢复”样本)。
  • 任务时域短或动力学本身稳定(漂移不放大)。
  • 只需达到而非超越专家水平(如很多机器人操作、LLM 的 SFT 起步)。
  • 能接受用 DAgger / 加噪演示 / 大模型 + 大数据 把误差压得很低。

反之,若没有足够示范,或需要直接优化可量化目标,可以考虑搜索、规划、模型预测控制或基于奖励的强化学习;选择取决于可用模型、反馈与交互条件。

承上启下:从”模仿”到”优化”

模仿学习回答的是”怎么做和专家一样”;强化学习回答的是”怎么做得最好”。要问”最好”,就必须先定义”好”——这就是奖励函数 r(s,a)r(s,a) 和目标函数 J(θ)J(\theta) 的登场。模块 02 会把本模块预告的 MDP 补全,给出 Vπ,Qπ,AπV^\pi,Q^\pi,A^\pi 与贝尔曼方程,搭好之后所有算法的舞台。

8. 判据清单:BC 何时够用,何时考虑 RL

把前面讨论压缩成一张决策清单,用于判断直接 BC、交互式模仿或基于奖励的方法何者更合适。

判据维度BC(或 BC+DAgger)更合适可考虑 RL 或其他优化方法
目标水平只需达到专家水平需要超越专家 / 发现新策略
是否有专家数据有大量、覆盖广的高质量演示没有专家,或演示昂贵 / 危险 / 稀缺
时域与稳定性时域短,或动力学本身稳定(漂移不放大)长时域且动力学会放大误差
能否在线查询专家能(可上 DAgger 消除漂移)不能,且离线数据覆盖不到策略会去的状态
奖励信号没有奖励,或难以设计奖励有明确 / 可验证的奖励,“好坏”可量化
覆盖”偏离-恢复”演示已含纠错样本(或可加噪构造)无法覆盖策略自身会遇到的失败态

一句话判据

编者判断: 有覆盖充分的示范、时域较短或动力学稳定时,BC 往往是简单基线;有明确奖励且需要直接优化任务指标时,RL 是候选路径之一。实际系统也可采用搜索、规划、拒绝采样、蒸馏或模型预测控制,不能用固定能力比例概括。

方法溯源:动机 · 启发 · 局限

把本讲出现的方法按”为什么被提出 → 受什么启发 → 关键局限如何催生下一个方法”重新串一遍。模仿学习这条线索格外清晰:几乎每一个新方法,都是在修补前一个方法暴露出的具体缺陷。

方法 / 代表作(年代)要解决什么问题(动机)受什么启发 / 技术脉络关键局限(→ 引出谁)
行为克隆 BC有专家演示,想不依赖奖励与环境模型直接学会控制把动作拟合归约为监督学习(分类 / 回归)闭环下会有分布漂移与误差复合
DAgger缓解 BC 的分布漂移用 no-regret 在线学习分析迭代式数据聚合 [3]需可在线查询的交互式专家、标注昂贵
混合密度网络 MDN避免单峰高斯把多模态动作平均让网络输出 KK 个高斯的权重与参数模态数 KK 需预设,高维协方差较难建模
隐变量模型 VAE / cVAE用隐变量表达多模态分布变分推断与隐变量边缘化需变分训练,结果依赖模型与优化条件
自回归离散化 · action tokens用离散条件分布表达多峰动作动作分 bin、按链式法则逐维建模离散量化误差、串行采样
扩散策略 Diffusion Policy建模高维、连续、多模态动作序列条件于状态从噪声迭代生成动作 [4]需多步迭代采样
流匹配 flow matching生成连续动作回归条件向量场;π0 将其用于动作专家 [2]效果依赖训练分布与数值积分方案
动作分块 ACT缩短有效预测时域,并表达整段轨迹一致性时间抽象 + 序列建模,一次输出一段动作块 [5]块内反应性与块长需权衡
VLA 通用策略 OpenVLA / π0跨任务、跨物体泛化的机器人策略视觉-语言骨干 + 离散 token 或流匹配动作头 [1] [2]仍依赖训练数据覆盖与部署条件

演进故事线①:BC → 分布漂移 → DAgger

模仿学习的起点是一个朴素而诱人的想法:既然监督学习能把图像映射到标签,为什么不能把状态映射到动作? 这就是行为克隆(BC)——把控制问题整个搬进监督学习的成熟框架,无需奖励、无需环境模型。但一部署就露馅:动作会改变下一步看到的状态,策略一旦犯小错就漂进专家没到过的区域,误差正反馈放大成 O(ϵT2)O(\epsilon T^2) 的二次累积。诊断清楚了病根——训练分布 ≠ 策略自己的运行分布——解法就顺理成章:DAgger 用”在策略自身分布上向专家补标注”把训练分布搬到测试分布上,把最坏界改善回 O(ϵT)O(\epsilon T)。它的关键洞察来自把模仿学习归约成 no-regret 在线学习(Ross 2011)。但 DAgger 又留下新的局限:它要求一个能对任意怪异状态即时作答的交互式专家——现实里往往不可得,于是又催生了加噪演示、人在回路干预,乃至最终引入奖励的 RL。

演进故事线②:表达力的军备竞赛——从单高斯到流匹配

另一条主线由”单峰高斯拟合不了多模态”这个具体失败驱动。同一状态下向左绕、向右绕都对,高斯最大似然可能把均值放在两个模态之间。MDN、隐变量、自回归离散化、扩散与流匹配提供了不同的表达方式;它们各有训练与采样取舍,不构成所有系统都遵循的单一路线。

9. 小结与要点

  • BC 把模仿归约为监督学习;轨迹样本通常时间相关,部署时还会改变输入分布。
  • 它的病根是分布漂移:训练分布(专家)≠ 测试分布(策略自身),闭环耦合让误差正反馈放大。
  • 最坏总代价 O(ϵT2)O(\epsilon T^2):线性项来自逐步犯错,二次项来自”早期错误污染后续输入分布”。
  • DAgger 在多轮策略诱导的状态上聚合专家标注;在 no-regret 等条件下可得到对时域近线性的保证,代价是需要可在线查询的专家。[3]
  • 多模态破坏单高斯,解决方案沿”MDN→隐变量→自回归离散→扩散/流匹配”演进,对应今日 VLA 主线。
  • 纯 BC 不直接优化任务回报;RL 是有可用奖励时的一条路径,但不是唯一的改进途径。

前沿实践 · 一句话连接全书

LLM 的 SFT 与行为克隆都拟合示范;后续可按任务采用偏好优化、基于奖励的 RL、搜索或其他方法。模块 13 会进一步比较这些路径。

参考来源

  1. [1]OpenVLA: An Open-Source Vision-Language-Action Model(在新窗口打开)arXiv · 2024-06-13 · Action tokenization · 访问于 2026-10-17↩
  2. [2]π0: A Vision-Language-Action Flow Model for General Robot Control(在新窗口打开)arXiv · 2024-10-31 · Flow matching action expert · 访问于 2026-10-17↩
  3. [3]A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning(在新窗口打开)AISTATS · 2011-04-11 · Algorithm 3 and Theorems 2.1–4.1 · 访问于 2026-10-17↩
  4. [4]Diffusion Policy: Visuomotor Policy Learning via Action Diffusion(在新窗口打开)arXiv · 2023-03-07 · Abstract and experiments · 访问于 2026-10-17↩
  5. [5]Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware(在新窗口打开)arXiv · 2023-04-27 · Action chunking and temporal aggregation · 访问于 2026-10-17↩
  6. [6]CS 285: Deep Reinforcement Learning(UC Berkeley)(在新窗口打开)UC Berkeley · L1–L3 · 访问于 2026-10-17