模仿学习与行为克隆
本讲迁移自原课程讲义,经 AI 事实核查未发现存疑项,未逐页人工审核;如有出入,以原始论文和 CS285 课程资料为准。
学习目标
- 建立贯穿全书的符号约定:状态 $s$、动作 $a$、策略 $\pi$、奖励 $r$,以及 MDP 的预告。
- 理解行为克隆(Behavioral Cloning, BC)如何把模仿归约为监督学习,以及固定专家占用分布与部署分布的差异。
- 能从头推导朴素 BC 误差的二次累积 $O(\epsilon T^2)$,并说清每一步用到的假设。
- 理解 DAgger 如何通过"在自己犯错的分布上收集标注"把界改善到 $O(\epsilon T)$。
- 理解多模态动作分布为什么会破坏高斯策略,以及五类解决方案。
这是整套资料的起点。我们从最”朴素”的想法出发——既然有专家演示,为什么不直接用监督学习去模仿专家?沿着这个想法的失败,我们会自然地看清:为什么序列决策问题和普通监督学习有本质区别,为什么”误差会累积”,以及这条思路如何演化出 DAgger、多模态策略乃至今天的 diffusion policy / VLA。理解本模块,你就掌握了理解后续所有 RL 方法的”问题意识”。
学习目标
- 建立贯穿全书的符号约定:状态 、动作 、策略 、奖励 ,以及 MDP 的预告。
- 理解行为克隆(Behavioral Cloning, BC)如何把模仿归约为监督学习,以及训练样本的相关性与部署分布变化。
- 能从头推导朴素 BC 误差的二次累积 ,并说清每一步用到的假设。
- 理解 DAgger 如何通过”在自己犯错的分布上收集标注”把界改善到 。
- 理解多模态动作分布为什么会破坏高斯策略,以及五类解决方案。
编者按 · 批判性视角
编者判断: 不宜只把模仿学习视为通往 RL 的”垫脚石”。行为克隆仍是监督微调和多种机器人策略的重要训练方式;公开模型同时采用离散动作 token、扩散、流匹配与动作分块等不同设计,不能概括为单一主流路线。[1] [2] 进一步对照见模块 13(LLM 与 RL)与模块 15(统一视角)。
1. 术语与符号约定
在整套资料中,我们研究一个智能体(agent) 与环境(environment) 交互的序列决策(sequential decision making) 问题。先固定符号,后面所有模块都沿用。
| 符号 | 含义 | 说明 |
|---|---|---|
| 时刻 的状态 state | 有时区分”状态 “与”观测 “:状态满足马尔可夫性,观测可能是状态的部分/带噪函数。 | |
| 时刻 的动作 action | 可离散(有限动作集)也可连续(如机器人关节力矩)。 | |
| 策略 policy | 参数为 的条件分布;确定性策略写作 。 | |
| 状态转移/动态 dynamics | 环境的”物理规律”,通常未知。这是 RL 与监督学习最大的不同。 | |
| 奖励 reward | 标量反馈,定义”好坏”。本模块暂时用不到,L4 起成为主角。 | |
| 轨迹 trajectory / rollout | 一次完整交互序列;其中 是时域(horizon)——一条轨迹的总步数(决策次数),后文误差分析 里的 即指此。 | |
| 折扣因子 discount | 本模块暂不涉及,见模块 02。 |
本模块只用到前四行:我们先不谈奖励,只谈”有一位专家 ,我们有它产生的一批状态-动作演示 ,想训练一个 去复制它”。这就是模仿学习(imitation learning)。
本质 Insight
常规监督学习分析往往假设训练样本来自固定分布,并要求训练与测试分布相符。控制问题里,你此刻的动作会决定你下一刻看到什么状态——动作与数据分布相互耦合。这个”闭环”是行为克隆的重要困难之一,可通过数据覆盖、交互式模仿或基于奖励的优化等途径缓解。
1.1 马尔可夫性质与 MDP 预告
我们通常假设状态满足马尔可夫性质(Markov property):给定当前状态 ,未来 与过去 条件独立:
这就是”状态”这个概念的定义性质:状态是对历史的充分统计量。当环境还提供奖励 和折扣 时,五元组 就构成一个马尔可夫决策过程(Markov Decision Process, MDP)——这是模块 02 的主题。马尔可夫性描述给定当前状态和动作后的转移;它不意味着不同时刻的犯错事件彼此独立。
图 1:智能体-环境交互闭环。策略输出的动作会改变后续状态分布,这条反馈边是模仿学习困难的根源。
1.2 状态 与观察 :定义与区别
上面的符号表(§1)里,我们把”状态 “和”观测 “一笔带过。但这两个概念的差别,几乎是理解 RL 里绝大多数困难的钥匙——从”要不要记忆”到”BC 为什么会次优”,根子都在这里。下面正式区分它们。
正式定义:状态 vs 观察
- 状态 ——世界”真实”且完整的描述。 它是对系统的马尔可夫充分刻画:给定 ,未来与历史条件独立,动态只需当前状态即可预测,(即 §1.1 的式(1.1))。换句话说, 是对历史的充分统计量,不必再往回看。
- 观察 ——智能体实际感知到的量。 它是真实状态经一层发射 / 观测过程(emission) 得到的,通常有损、部分、带噪:,或确定性地 。 一般不可逆——从单个 无法还原出 。
- 由此分出两类问题。 若智能体直接在状态上决策、且状态满足马尔可夫性,就是标准的 MDP(马尔可夫决策过程);若智能体只能看到观察 、而 不足以充当充分统计量,就是 POMDP(部分可观测 MDP)。关键结论:观察一般不满足马尔可夫性——单个 丢掉了历史里的信息,于是”要不要引入历史 / 记忆”这个问题,根源正在于 。
图 2:状态 与观察 的关系。真实状态 经发射过程 得到观察 ,策略 只能基于 决策、输出 ,环境再按动态 转移到 。发射这一层有损,正是 通常不满足马尔可夫性、以及 POMDP 之所以难的根源。
什么时候一个量算”状态”、什么时候只是”观察”?下表给出多个具体系统,可以看到:观察几乎总是真实状态的一个”低维、带损投影”。
| 系统 | 完整状态 (马尔可夫充分) | 智能体的观察 | 为什么 是部分 / 有损的 |
|---|---|---|---|
| 自动驾驶 / 机器人 | 所有物体的真实位姿与速度、自身关节角与动力学状态 | 单帧摄像头像素(外加有限传感器) | 单帧看不出速度 / 运动方向,还有遮挡与视野盲区;需多帧才能推断动态 |
| Atari 游戏 | 堆叠多帧(≈ 含运动信息的近似状态) | 单帧游戏画面 | 单帧看不出球 / 物体的运动方向与速度——DQN 正是用帧堆叠(frame stacking) 把观察近似成状态 |
| 扑克 / 不完全信息博弈 | 含所有玩家手牌的全局牌局 | 自己的手牌 + 公共牌 + 下注历史 | 对手手牌原理上不可见——信息被博弈规则永久隐藏,这是天然的 POMDP |
| 倒立摆 / 经典控制 | :角度与角速度 | 仅角度传感器读数 | 缺角速度 ,单个读数无法判断摆在往哪个方向运动 |
| 医疗决策 | 病人真实、完整的生理状态 | 化验值 / 生命体征 / 症状记录 | 指标稀疏、有噪、滞后,只测到生理状态的少数侧面 |
| LLM / 对话智能体 | 完整对话历史 + 用户真实意图 + 世界真实事实(近似”状态”) | 模型看到的 token 上下文 | 看不到用户真实意图与未言明的事实,且上下文窗口有限、会截断历史 |
回扣模仿学习:为什么 与 的区别对 BC / DAgger 至关重要
- 课程里的 严格说应是 。 本模块为了记号简洁,几乎都把策略写成在状态上决策;但真实智能体(机器人、LLM)拿到的是观察,BC 实际学的是 ——输入是像素 / token,而非上帝视角的 。
- 信息缺失 → 完美拟合也可能次优。 若专家依据完整状态 决策(老司机能感知车速、能看到被遮挡的行人),而学习者只见观察 (单帧画面),那么再完美地拟合 也补不回 里没有的信息——存在一个由部分可观测性决定的性能上界。
- 单帧观察的非马尔可夫性 → 需要历史 / 记忆。 因为 不是充分统计量,只看当前观察的策略会”失忆”。补救是把观察或动作历史纳入输入,例如帧堆叠(DQN)或 RNN / Transformer 记忆;动作分块本身不能恢复缺失的隐状态。这也与 §3–§4 的分布漂移与误差累积相互放大——观察越贫乏,策略越易漂到陌生 ,误差累积越快。
- 一句话点题: 状态是世界真实的样子,观察是你能看到的样子;RL 里绝大多数难点,都来自二者不相等。
2. 行为克隆:把控制变成监督学习
行为克隆(Behavioral Cloning, BC) 是最直接的模仿学习:把专家演示当作有标注的数据集,状态 是输入、专家动作 是标签,用标准的监督学习拟合一个策略。
对离散动作, 通常是交叉熵;对连续动作,若 是高斯 ,最大似然就退化成对均值的均方误差(MSE)。整个流程和图像分类没有任何区别——这正是它的诱人之处:不需要奖励、不需要环境模型、不需要在线交互,一个前向网络 + 一次监督训练即可。
推导:为什么是交叉熵 / 为什么是 MSE(点开)
同一个原理:最大似然 = 最小化负对数似然
交叉熵与 MSE 看起来是两种”损失”,其实是同一件事的两个特例。式(1.2) 的最大似然(MLE)等价于最小化负对数似然(NLL) ;一旦选定了 的输出分布族,NLL 的具体形式就被唯一地定死了。所以一句话记住:选损失 = 选输出分布的噪声模型——你不是在”挑损失函数”,而是在”假设动作标签是怎么被噪声生成的”。
第 1 步(离散 → 交叉熵)。 离散动作时 是一个 softmax 类别分布,记作 ;专家标签 是一个 one-hot 分布,记作 (在真实动作处为 、其余为 )。这一样本的 NLL 就是
右端正是 与 之间的交叉熵 。所以”离散动作用交叉熵”不是一个额外的选择——它就是类别分布的负对数似然,二者字面相等。
第 2 步(连续高斯 → MSE,逐步)。 连续动作时设 ()。写出对数密度:
取负、并丢掉与 无关的常数项,得 NLL
关键假设:若协方差固定为各向同性的 ,则 、 与 无关可消去,于是
其中 只是一个正的常数缩放,不改变极小点。因此在这个假设下,最大似然 = 最小化 MSE ——MSE 不是凭空选的损失,而是”固定各向同性高斯噪声”下的负对数似然。
补一句边界情形:若 固定但为一般对角阵,则退化成各维加权 MSE(每维按 加权);若让 也随网络一起学,NLL 会多出 这一项,不再是纯 MSE(模型会用方差去”解释”噪声大小)。
为什么机器学习里通常这么选
- 本质是同一件事。 MLE 等价于最小化前向 KL ,也就是最小化交叉熵。交叉熵与 MSE 只是”把输出分布取成类别分布 / 高斯”的两个特例(GLM / 指数族视角:选损失 = 选噪声模型;若把噪声取成拉普拉斯分布,NLL 就变成 / MAE,以此类推)。
- MSE 的额外好处。 它对应同方差高斯残差假设;对预测均值的平方损失是凸的,梯度为 ,但以神经网络参数表示后的训练目标一般仍是非凸的。期望平方误差的最优预测恰是条件均值 。
- 交叉熵的额外好处。 它是 proper scoring rule;在模型正确指定、数据充分并得到充分优化等条件下,鼓励报告真实条件概率,但不保证有限模型训练后自然校准。softmax + 交叉熵的梯度是 (预测概率减 one-hot)。
局限:高斯 + MSE 假设”单峰”
上面的推导埋着一个强假设:高斯是单峰的,MSE 只回归一个条件均值。当专家动作是多模态的(同一状态下向左绕、向右绕都对),“条件均值”会把多个峰平均成中间那个灾难性的动作(直行撞上障碍)——这正是本模块 §6 多模态动作分布问题 要用 MDN / 扩散 / VAE(隐变量) / 自回归离散 / ACT 来解决的动机。换言之,“交叉熵 / MSE = 高斯或类别分布的 NLL”这套逻辑没错,错的是把噪声模型假设成了单峰高斯;想表达多模态,就得换一个更富表达力的输出分布(详见 §6,此处不再展开)。
为什么这样 · 能不能不这样
为什么 BC 直接”克隆动作”——把状态映射到专家动作? 因为这样把控制彻底还原成一个有监督的输入-输出拟合:不需要奖励、不需要环境模型、不需要在线交互,一次前向 + 一次监督训练即可,工程上最省。它默认”专家动作本身就是我们想要的答案”,于是”学会决策”退化成”学会复读答案”。
能不能反过来——不学”怎么做”,而学专家”为什么这么做”(即反推出奖励)? 能,这就是逆强化学习(inverse RL, IRL):从专家轨迹推断一个能解释其行为的奖励函数 ,再用它优化策略。奖励可能比具体动作更便于迁移,但奖励推断通常是欠定的,且还需求解后续控制问题。纯 BC 的监督目标只拟合示范动作,不直接优化任务回报;IRL 或 RL 是获得奖励信号后可选的优化路径,但是否超过给定示范取决于奖励、信息与搜索能力(详见模块 07 / 13)。
批判性追问:把 BC 叫做”监督学习”严谨吗?——训练像,泛化不像
“BC = 监督学习”这个等号,在训练阶段确实成立:同样的 对、同样的交叉熵 / MSE、同样的反向传播。但它掩盖了一处致命差异,值得追问。
- 不严谨在哪。 监督学习的泛化保证建立在 i.i.d. 假设(训练分布 = 测试分布)之上;而 BC 一部署就打破它——策略自己的动作改变后续状态分布,测试时真正面对的是 。所以”BC 享有 SL 的泛化保证”这半句是不成立的。
- 反例 / 后果。 一个在专家分布上测试误差极低(“监督学习意义下很好”)的策略,仍可能在线上崩溃:SL 的泛化界只覆盖 ,对策略自己漂移到的 OOD 状态不作任何担保。这正是下面 §3–§4 的分布漂移与 。
- 靠什么假设才近似为真。 只有当动力学本身稳定 / 时域短 / 数据覆盖极广(策略略偏仍落在见过的分布内)时,“BC ≈ 享保证的 SL”才近似成立——这也解释了大 LLM 的 SFT 为何看起来”像纯监督”。
- 如何补救 / 是否仍开放。 DAgger(把训练分布搬到 )、加噪演示、on-policy RL 都在修这条鸿沟。更准确的说法是:BC 的训练是监督学习,但它的评估是一个控制问题——两者不能混为一谈。
BC 的极简算法
- 收集专家演示 (人类遥操作、专家控制器、已有日志……)。
- 监督训练 :最大化 。
- 部署:在环境中运行 。
前沿实践
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)。核心矛盾用两个分布来刻画:
- :专家访问的状态分布(训练分布)。BC 在这个分布上把误差降到了 。
- :学到的策略自己运行时访问的状态分布(测试分布)。
监督学习保证的是 小,但我们部署时真正面对的是 。而 ——因为策略只要犯一点错,就会进入专家没去过的状态,那里它没被训练过,于是错得更离谱,把自己推向更陌生的状态。这是一个正反馈的发散过程。
为什么这样 · 能不能不这样
为什么 BC 只能在”专家自己走过的状态分布” 上才安全? 因为专家只在它到过的状态上留下了动作标签——那里才有”正确答案”可学,监督学习的泛化保证也只覆盖这块分布。换句话说,BC 的训练分布不是我们随手选的,而是被”标签在哪”这件事钉死在专家分布上。
能不能换个分布收集数据? 这恰恰是问题的要害:我们真正需要监督的,正是策略自己会漂到、而专家没去过的状态;可那些状态上没有专家标签。三条出路各有代价:(1) 什么都不做——测试时策略走的是 ,于是分布漂移、误差二次累积(下一节的 );(2) DAgger——干脆把训练分布搬到 ,在策略漂到的状态上现场向专家要标签,代价是需要一个能随时在线作答的专家;(3) 加噪/扰动演示——人为让演示覆盖”偏离-恢复”的状态,离线就把分布撑宽,代价是要能构造出合理的纠正动作。可见”在专家分布上训练”不是优点而是约束:谁能把训练分布对齐到策略真正会遇到的地方,谁就治住了 BC 的病根。
图 3:分布漂移导致的轨迹发散。绿色为专家(训练)分布,红色为学习者运行轨迹;一旦离开绿色”管道”,误差便正反馈放大。
本质 Insight:为什么监督学习不会这样,控制却会?
图像分类里,测试图片是”独立”抽的——你分错这张,不会让下一张变得更难。但在控制里,你的输出(动作)是下一次输入(状态)的原因。误差不是被”重新采样”冲掉,而是被动力学积分累积。所以同样的每步误差 ,在 i.i.d. 世界里总误差是 ,在序列决策里却会放大——放大多少?下一节精确算出来。
4. 误差的二次累积 O(εT²)
这是本模块的技术核心:我们要严格证明朴素 BC 的性能损失随时域 二次增长。这个结论解释了”为什么长时域任务里 BC 尤其脆弱”,也为 DAgger 的动机提供了量化依据。
推导:从”每步犯错概率 ε”到”总代价 O(εT²)“(完整步骤)
关键假设
训练误差有界:在专家分布上,策略犯错的概率不超过 :
这里”犯错”= 输出的动作与专家不同(可推广到”动作差异大于阈值”)。
代价函数:定义 若 ,否则 ;我们分析总期望代价 ,最大可能为 (每步都错)。
时域有限:共 步;马尔可夫性(式(1.1))使得每步的转移只依赖当前状态,从而”是否犯错”可逐步处理。
第 1 步(耦合学习者与专家)。 让两条轨迹从同一初始状态出发,并在动作相同前共享环境随机性。首次动作不同之前,两条轨迹完全一致;首次错误之后,学习者轨迹才可能偏离专家轨迹。
第 2 步(union bound,不要求错误独立)。 令 表示前 步至少发生一次动作错误。沿专家轨迹第 步的边缘错误率不超过 ,因此
这里使用的是 union bound,不要求不同时刻的错误事件独立。由上述耦合,学习者与专家在时刻 的占用分布只有在 发生时才可能不同;若全变差定义为 ,则
第 3 步(把首次错误转成任务代价上界)。 若每步任务代价位于 ,两条轨迹在没有动作分歧时承担相同代价;一旦发生首次错误,余下至多 步的总代价差最多为 。因此
结论: 朴素 BC 相对专家的最坏任务代价差为 。这是带未知常数并受代价范围约束的最坏上界,不是对实际错误步数的精确预测;稳定动力学、恢复行为与更广的数据覆盖都可能使实际损失明显更小。该耦合与占用分布思路与 DAgger 文献中的二次界一致。[3]
本质 Insight:那个多出来的 T 从哪来?
线性项 是逐步错误的普通累积;二次项 来自首次错误可能影响余下至多 步。换句话说,早期错误不仅有即时影响,还可能改变后续输入分布。这个最坏界不依赖错误事件相互独立,并说明了 DAgger 为何要在学习者访问的状态上补充专家标签。
局限 / 何时这个界过于悲观
是最坏情况上界,依赖”犯错后进入完全陌生、最坏的分布”这一假设。现实中若系统本身有稳定/自我纠正的动力学(如带反馈的物理系统会把小扰动衰减掉),漂移不会持续放大,BC 表现会好得多。此外,如果专家演示本身就覆盖了各种”偏离-恢复”的状态(数据增强、故意加噪演示),也能把界拉回接近 。这解释了实践中”给演示加扰动+纠正”为什么有效。
图 4:朴素 BC 的最坏总代价 (红)随时域二次增长,而消除分布漂移后可达 (绿)。长时域任务里两者差距巨大。
4.1 数值走查:一步 1% 的小错如何滚成雪球
下表把 与 作为量级示意。大 省略常数,且这里的二次项是最坏上界,不能直接解释为实际期望犯错步数;上界触及物理上限 也不证明策略实际会全程失控。
| 时域 | 线性量级 | 二次量级 | 量级比值 | 说明 |
|---|---|---|---|---|
| 仅作尺度比较 | ||||
| 不是性能预测 | ||||
| 上界已无信息量 |
在忽略常数的量级表达中,两式的比值为 ;它只说明最坏界随时域增长得更快,不能据此推出具体失败比例。
图 5:线性与二次误差量级的示意比较。图形仅表达随时域增长的差异,不表示精确常数或性能预测。
追问:LLM 的 teacher forcing 是不是避免了二次累积?——训练时是,推理时不是
一个精确而重要的观察:自回归语言模型训练用 teacher forcing——预测第 t+1 个 token 时喂的是真实前缀而非模型自己的输出。于是训练全程都在”数据分布”上,模型从不面对自己的错误——这正是行为克隆的设定(训练状态分布 = 数据分布)。所以 teacher forcing 并没有”解决”二次累积,而是在训练阶段把它绕过、藏了起来。
推理时原形毕露:生成时没有真值可喂,模型只能把自己生成的 token 当作下一步输入。一旦某步略偏,前缀就滑出训练分布 → 后续更易错 → 误差沿序列累积。这就是 exposure bias,正是本节 / 分布漂移在语言模型上的化身。所以:训练被 teacher forcing 掩盖,推理时暴露——正如你所料。
两点补充:(1) 大 LLM 的数据覆盖、模型能力和语言结构使实际误差传播通常比最坏界温和。(2) 某些 on-policy RLHF/RLVR 算法使用模型自采样 rollout,因而可能缓解模型自生成分布上的失配;但 RLHF 也包含离线偏好优化方法,终局奖励训练也不保证消除 exposure bias。
5. DAgger:把界改善到 O(εT)
诊断清楚了病根——测试分布 与训练分布 不一致——治法就很直接:与其想尽办法让策略更完美(降低 ),不如让训练数据来自策略自己会去的分布。这就是 DAgger(Dataset Aggregation,数据集聚合) 的思想(Ross et al., 2011)。
DAgger 算法
- 用当前数据 训练策略 (初始 为专家演示)。
- 运行 收集它自己访问到的状态 (注意:动作用策略的,状态因此来自策略分布)。
- 请专家为这些新状态标注正确动作 。
- 聚合:。
- 回到第 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 → 专家标注聚合 → 迭代”。关键在 ②③:状态来自各轮混合策略诱导的分布,而标签来自专家;随着 衰减,采集分布逐渐更多反映学习者会访问的状态。[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]
批判性追问: 这条界,隐藏了哪些假设?
“DAgger 把界改善到 “读起来干脆利落,但它不是无条件成立的——它依赖两层不易满足的假设。
- 第一层:no-regret 在线学习。 Ross 2011 的保证要求每轮聚合出的策略在累积数据上是无悔(no-regret) 的,且迭代足够多轮使训练分布真的收敛到 。有限轮 + 非凸神经网络下,这只是近似,界会带上一个不消失的余项。
- 第二层更脆:那个 被默认成常数。 “每步犯错率 “暗含”专家能对任意状态给出一致、正确的标签”。现实里专家对策略漂到的怪异状态往往(1)自己也不确定最优动作、(2)不同标注者、甚至同一人前后给出矛盾标签——于是 在陌生状态上悄悄变大,“常数单步代价”这一前提被侵蚀,线性界随之松动。
- 反例视角。 若在策略最需要纠偏的漂移区,专家标注恰恰最不可靠( 局部升高),则真实代价会介于 与 之间,而非干净地落在线性。
- 是否仍开放。 这正是纯 DAgger 在大规模场景罕见的原因:实践改用加噪演示、HG-DAgger(人在回路只在关键处干预),或干脆换成用验证器奖励的 RL(RLVR),以绕开”可查询且一致的专家”这一前提(见下方对比与 模块 13)。
局限 / 陷阱
- 需要可在线查询的专家:第 3 步要求专家能对策略访问到的任意(可能很怪异的)状态给出动作。人类专家对”离奇状态”往往难以标注,甚至不知道正确动作是什么。
- 标注成本高:每轮都要人来标,长时域/高频控制下标注量巨大。
- 非马尔可夫/部分可观测时,专家看到的上下文可能与策略不同,标注会有偏差。
- 实践折中:用带扰动的演示、HG-DAgger / 人在回路干预只在关键处标注,或用集成不确定性决定何时问专家。
| 方法 | 训练分布 | 需要在线专家? | 最坏总代价 | 典型场景 |
|---|---|---|---|---|
| 朴素 BC | (专家) | 否 | 短时域、稳定动力学、海量演示 | |
| BC + 演示加噪/纠正 | 接近策略分布 | 否(离线构造) | 介于两者之间 | 驾驶、机械臂(数据增强) |
| DAgger | (策略自身) | 是 | 可查询专家/可仿真标注 |
展开:DAgger 与 RLVR 是什么关系?(同骨架、异监督)
共享的骨架:都”在自己的 rollout 上训练”
某些 RLVR 实现和 DAgger 都会从当前策略采样数据,因此都能让训练信号覆盖策略实际访问的区域;但二者的监督信号和理论保证不同。DAgger 查询逐状态专家动作并依赖 no-regret 分析,RLVR 使用可验证奖励并涉及信用分配。采用 on-policy 数据可能缓解分布失配,但不保证失配消失。
根本区别在”监督的形式”:
维度 BC / SFT DAgger RLVR(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:多模态动作。单峰高斯把两个正确模态平均成中间的错误动作(红虚线)。
举例
把”向左绕”记成转向角 、“向右绕”记成 ,两条路都能安全通过。若专家演示里两种各占一半,单高斯的最大似然会把均值学成 ——恰好是笔直撞上障碍的那一档。这就像十个人投票”红烧还是清蒸”,你把答案平均成”温水半熟”:两个选项都对,均值却谁也不是。所以要么让策略同时保留两个峰(MDN/扩散),要么离散化逼它二选一。
解决多模态,本质是让策略能表达更丰富的分布。CS285 给出五类方案,也恰好是近年动作生成模型演化的主线:
6.1 混合密度网络(Mixture Density Network, MDN)
让网络输出 个高斯的参数与权重:。简单直接,能表达有限个模态;缺点是高维动作下 需求爆炸、协方差难学、模态数需预设。
6.2 隐变量模型(Latent Variable Models)
引入隐变量 ,令 。这里 是一个不被观测的随机”模态选择器”:它不对应任何真实物理量,只是一个内部随机源,通常取简单先验 (如标准正态 )——采样一个 相当于先”掷骰子”决定走哪个模态,再据此输出动作。之所以引入它:给定 时分布仍是简单高斯(好训练),但对 边缘化(积分)后就能拼出任意复杂的多峰分布(如条件 VAE)。表达力强,但训练需要变分推断,较复杂。
6.3 自回归离散化(Autoregressive Discretization)
把连续动作离散成 bins,用离散分布 + 自回归逐维生成:先建模 的类别分布,再以 为条件建模 ,依此类推。离散 softmax 天生能表达多峰,自回归解决了”各维联合分布”的耦合。这正是把语言模型式的离散生成搬到了动作空间。
推导:为什么离散 softmax 天生能表达多模态,而单高斯不能?
第 1 步(用:对数凹性 → 单峰)。 单高斯 的密度是对数凹(log-concave) 的,而对数凹密度是单峰的。无论怎么调 ,它都无法在两个分开的位置同时给出高概率——这就是”平均成中间错误动作”的根本原因。
第 2 步(用:类别分布无形状约束)。 把动作区间切成 个 bin,用 softmax 输出 维类别分布 。它在概率单纯形上完全自由、不受对数凹约束——可以让第 3 个和第 20 个 bin 同时取高概率、中间取低概率,从而表达”向左或向右、但不要直行”。
第 3 步(用:概率链式法则表达联合分布)。 动作多维时,独立地对每维 softmax 会丢掉维间相关性。自回归 用链式法则无损地表达任意联合分布(只要每个条件分布够灵活)。
局限: 离散化带来量化误差,自回归采样是串行的;按维条件分解时,输出规模通常随动作维数和每维 bin 数增长,同时还需承担高维条件建模负担。
6.4 扩散策略(Diffusion Policy)
一种方案是用扩散模型(diffusion model) 建模动作分布——从噪声出发,学习逐步去噪成一条动作序列。Diffusion Policy 在其论文报告的机器人操作基准上比较了多种策略,并用条件去噪过程生成动作序列。[4]
训练与采样的思路可浓缩为(以 DDPM 式去噪为例,动作块记作 , 为噪声调度):
# 训练:学一个去噪网络 ε_φ,预测被加到干净动作上的噪声
给定 (状态 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:扩散策略从纯噪声逐步去噪,条件于状态 生成一整段动作块。不同随机起点会落到不同模态,天然解决多模态与时间一致性。
前沿实践
公开机器人策略展示了多条并行路线:OpenVLA 使用离散动作 token,Diffusion Policy 使用条件扩散生成动作序列,π0 使用流匹配动作专家。[1] [4] [2] 这些例子说明动作表示并未收敛到单一方案。
6.5 更高的时间抽象与动作分块
另一条正交思路:不逐步预测单步动作,而是一次预测一段动作序列(action chunking),配合上面的分布模型。这既缓解了复合误差(少几次决策=少几次犯错机会),也让多模态在”整段轨迹”层面更好表达。
深化拓展:action chunking(ACT)为何可能缓解复合误差
ACT 一次预测未来 步动作,把高层预测的有效时域缩短;论文将此作为缓解复合误差的动机。[5] 但不能直接把 §4 的 替换成 并声称有 保证,因为每块错误率、块内动力学、时间聚合与重规划方式都会随 改变。
- 代价:块内不能中途纠错。 免费午餐不存在——块内是开环(open-loop) 的:一旦块中途遇到扰动或偏离,策略要等这 步走完才能反应。于是 太大时,“块内不可纠错”的误差会重新抬头(尤其在动力学不稳、扰动频繁时)。
- 结论:块长需要权衡。 较长动作块减少高层决策频率,却可能降低对中途扰动的反应性;具体效果应由任务和执行方式验证。
6.6 三类主流解法对比(训练与采样思路)
| 方案 | 如何表达多模态 | 训练思路 | 采样思路 | 优 / 劣 |
|---|---|---|---|---|
| 混合密度网络 MDN | 个高斯的加权和 | 最大化混合似然 | 先按权重 选一个分量,再从该高斯采样 | 优:简单、显式概率;劣:模态数 需预设,高维下协方差难学、易退化 |
| 隐变量 + 自回归离散化 | 离散 softmax 天生多峰;隐变量 边缘化出复杂分布;自回归表达维间联合 | 把动作分 bin,按链式法则 训练;或用 cVAE 的变分下界 | 逐维 / 逐 token 串行采样(自回归);VAE 则先采隐变量 再解码 | 优:表达力强、与语言模型同构(action tokens);劣:离散化量化误差、串行采样较慢 |
| 扩散策略 Diffusion Policy | 由多步去噪隐式定义连续分布 | 学去噪网络 ,回归被加的噪声(见上方伪代码) | 从高斯噪声出发反复去噪 步,一次生成整段动作块 | 优:可表达高维、多模态动作序列;劣:需多步迭代采样 [4] |
前沿定位 · VLA 与 action chunking
这些方案并非互斥。公开模型中,OpenVLA 使用离散动作 token,π0 使用流匹配动作专家;动作分块则可与不同分布模型组合。[1] [2] 不同任务和基准不支持统一的“最强组合”结论。
7. 模仿学习的局限与何时够用
把前面的讨论收束成一张”决策清单”。模仿学习(尤其 BC)的根本局限,都源自”它只会复制,不会评估好坏”。
模仿学习的本质局限
- 不直接优化任务回报:纯 BC 只拟合示范动作;是否能在某项指标上超过示范者,还取决于数据聚合、模型归纳偏置、搜索与可用信息。
- 分布漂移:如第 3–4 节,需 DAgger 或数据增强缓解。
- 需要专家数据:某些任务根本没有专家(比如要发现新策略),或专家演示昂贵/危险。
- 多模态与因果混淆:单峰模型学不好;若观测里有”因果混淆变量”(如刹车灯与踩刹车高度相关),BC 会学到错误捷径。
举例
只看示范录像学开车,纯 BC 的目标只是复现数据中的动作,并不会直接比较未示范路线的用时。若有“到得越快分越高”的奖励,RL 可以尝试优化路线;若有环境模型,也可以用搜索、规划或模型预测控制。关键区别在于是否有额外目标与信息,而不是“是否只有 RL 才能超越示范”。
什么时候 BC 就够用?
- 有大量、覆盖广的专家演示(含”偏离-恢复”样本)。
- 任务时域短或动力学本身稳定(漂移不放大)。
- 只需达到而非超越专家水平(如很多机器人操作、LLM 的 SFT 起步)。
- 能接受用 DAgger / 加噪演示 / 大模型 + 大数据 把误差压得很低。
反之,若没有足够示范,或需要直接优化可量化目标,可以考虑搜索、规划、模型预测控制或基于奖励的强化学习;选择取决于可用模型、反馈与交互条件。
承上启下:从”模仿”到”优化”
模仿学习回答的是”怎么做和专家一样”;强化学习回答的是”怎么做得最好”。要问”最好”,就必须先定义”好”——这就是奖励函数 和目标函数 的登场。模块 02 会把本模块预告的 MDP 补全,给出 与贝尔曼方程,搭好之后所有算法的舞台。
8. 判据清单:BC 何时够用,何时考虑 RL
把前面讨论压缩成一张决策清单,用于判断直接 BC、交互式模仿或基于奖励的方法何者更合适。
| 判据维度 | BC(或 BC+DAgger)更合适 | 可考虑 RL 或其他优化方法 |
|---|---|---|
| 目标水平 | 只需达到专家水平 | 需要超越专家 / 发现新策略 |
| 是否有专家数据 | 有大量、覆盖广的高质量演示 | 没有专家,或演示昂贵 / 危险 / 稀缺 |
| 时域与稳定性 | 时域短,或动力学本身稳定(漂移不放大) | 长时域且动力学会放大误差 |
| 能否在线查询专家 | 能(可上 DAgger 消除漂移) | 不能,且离线数据覆盖不到策略会去的状态 |
| 奖励信号 | 没有奖励,或难以设计奖励 | 有明确 / 可验证的奖励,“好坏”可量化 |
| 覆盖”偏离-恢复” | 演示已含纠错样本(或可加噪构造) | 无法覆盖策略自身会遇到的失败态 |
一句话判据
编者判断: 有覆盖充分的示范、时域较短或动力学稳定时,BC 往往是简单基线;有明确奖励且需要直接优化任务指标时,RL 是候选路径之一。实际系统也可采用搜索、规划、拒绝采样、蒸馏或模型预测控制,不能用固定能力比例概括。
方法溯源:动机 · 启发 · 局限
把本讲出现的方法按”为什么被提出 → 受什么启发 → 关键局限如何催生下一个方法”重新串一遍。模仿学习这条线索格外清晰:几乎每一个新方法,都是在修补前一个方法暴露出的具体缺陷。
| 方法 / 代表作(年代) | 要解决什么问题(动机) | 受什么启发 / 技术脉络 | 关键局限(→ 引出谁) |
|---|---|---|---|
| 行为克隆 BC | 有专家演示,想不依赖奖励与环境模型直接学会控制 | 把动作拟合归约为监督学习(分类 / 回归) | 闭环下会有分布漂移与误差复合 |
| DAgger | 缓解 BC 的分布漂移 | 用 no-regret 在线学习分析迭代式数据聚合 [3] | 需可在线查询的交互式专家、标注昂贵 |
| 混合密度网络 MDN | 避免单峰高斯把多模态动作平均 | 让网络输出 个高斯的权重与参数 | 模态数 需预设,高维协方差较难建模 |
| 隐变量模型 VAE / cVAE | 用隐变量表达多模态分布 | 变分推断与隐变量边缘化 | 需变分训练,结果依赖模型与优化条件 |
| 自回归离散化 · action tokens | 用离散条件分布表达多峰动作 | 动作分 bin、按链式法则逐维建模 | 离散量化误差、串行采样 |
| 扩散策略 Diffusion Policy | 建模高维、连续、多模态动作序列 | 条件于状态从噪声迭代生成动作 [4] | 需多步迭代采样 |
| 流匹配 flow matching | 生成连续动作 | 回归条件向量场;π0 将其用于动作专家 [2] | 效果依赖训练分布与数值积分方案 |
| 动作分块 ACT | 缩短有效预测时域,并表达整段轨迹一致性 | 时间抽象 + 序列建模,一次输出一段动作块 [5] | 块内反应性与块长需权衡 |
| VLA 通用策略 OpenVLA / π0 | 跨任务、跨物体泛化的机器人策略 | 视觉-语言骨干 + 离散 token 或流匹配动作头 [1] [2] | 仍依赖训练数据覆盖与部署条件 |
演进故事线①:BC → 分布漂移 → DAgger
模仿学习的起点是一个朴素而诱人的想法:既然监督学习能把图像映射到标签,为什么不能把状态映射到动作? 这就是行为克隆(BC)——把控制问题整个搬进监督学习的成熟框架,无需奖励、无需环境模型。但一部署就露馅:动作会改变下一步看到的状态,策略一旦犯小错就漂进专家没到过的区域,误差正反馈放大成 的二次累积。诊断清楚了病根——训练分布 ≠ 策略自己的运行分布——解法就顺理成章:DAgger 用”在策略自身分布上向专家补标注”把训练分布搬到测试分布上,把最坏界改善回 。它的关键洞察来自把模仿学习归约成 no-regret 在线学习(Ross 2011)。但 DAgger 又留下新的局限:它要求一个能对任意怪异状态即时作答的交互式专家——现实里往往不可得,于是又催生了加噪演示、人在回路干预,乃至最终引入奖励的 RL。
演进故事线②:表达力的军备竞赛——从单高斯到流匹配
另一条主线由”单峰高斯拟合不了多模态”这个具体失败驱动。同一状态下向左绕、向右绕都对,高斯最大似然可能把均值放在两个模态之间。MDN、隐变量、自回归离散化、扩散与流匹配提供了不同的表达方式;它们各有训练与采样取舍,不构成所有系统都遵循的单一路线。
9. 小结与要点
- BC 把模仿归约为监督学习;轨迹样本通常时间相关,部署时还会改变输入分布。
- 它的病根是分布漂移:训练分布(专家)≠ 测试分布(策略自身),闭环耦合让误差正反馈放大。
- 最坏总代价 :线性项来自逐步犯错,二次项来自”早期错误污染后续输入分布”。
- DAgger 在多轮策略诱导的状态上聚合专家标注;在 no-regret 等条件下可得到对时域近线性的保证,代价是需要可在线查询的专家。[3]
- 多模态破坏单高斯,解决方案沿”MDN→隐变量→自回归离散→扩散/流匹配”演进,对应今日 VLA 主线。
- 纯 BC 不直接优化任务回报;RL 是有可用奖励时的一条路径,但不是唯一的改进途径。
前沿实践 · 一句话连接全书
LLM 的 SFT 与行为克隆都拟合示范;后续可按任务采用偏好优化、基于奖励的 RL、搜索或其他方法。模块 13 会进一步比较这些路径。
参考来源
- [1]OpenVLA: An Open-Source Vision-Language-Action Model(在新窗口打开)↩
- [2]π0: A Vision-Language-Action Flow Model for General Robot Control(在新窗口打开)↩
- [3]A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning(在新窗口打开)↩
- [4]Diffusion Policy: Visuomotor Policy Learning via Action Diffusion(在新窗口打开)↩
- [5]Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware(在新窗口打开)↩
- [6]CS 285: Deep Reinforcement Learning(UC Berkeley)(在新窗口打开)