什么是模仿学习
What is Imitation Learning
从「为什么不直接用强化学习」开始,建立对模仿学习的直觉。读完这一章,你能解释 BC、ACT 是什么,知道为什么 100 美元级硬件 + 模仿学习是 2023 年以来机器人圈的主流路径。
未开始
完成后会同步到学习路径和首页统计
想象你想教一个机器人把杯子从桌上拿起来。
你有两种思路:
- 告诉它怎么算「成功」,然后让它自己瞎试几万次,从奖励里慢慢摸出来。这是 强化学习 (Reinforcement Learning, RL)。
- 直接演示给它看几十遍,让它照着学。这是 模仿学习 (Imitation Learning, IL)。
在真实物理世界里,第一种几乎不可行 —— 撞坏一台机械臂要几千美元,「瞎试几万次」意味着烧成本。所以从 2020 年开始,机器人领域开始大规模回归模仿学习,特别是在精细操作(pick-and-place、装配、抓握)上。
模仿学习的核心数学其实只有一句话:
> 给定大量 (状态 s, 动作 a) 的人类演示对,学一个策略 π(s) → a,让它在没见过的状态下也能给出合理的动作。
听起来像监督学习?是的 —— 最朴素的版本就是把它当监督学习做,叫 行为克隆 (Behavior Cloning, BC)。但 BC 有一个臭名昭著的问题叫 复合误差 (compounding error):每一步预测稍微偏一点,下一步的输入就更偏离训练分布,错误像滚雪球。
现代模仿学习(ACT、Diffusion Policy)的核心创新都是在解决这个滚雪球。本站后续 8 章,会带你完整走一遍 ACT 在 SO101 上的实现路径。
你为什么应该认真学这个?
模仿学习目前是 唯一一个被广泛验证能在 100 美元级硬件上跑通真实操作任务 的方法。HuggingFace LeRobot 团队、Stanford ALOHA、Tesla Optimus 全在用类似框架。学会它之后:
- 你可以自己采 50–100 条数据,训练一个能跑通特定任务的策略;
- 你能用相同代码做「折毛巾」「插 USB」「开柜门」这类不同任务;
- 你能复现 2023–2025 年大部分顶会论文里的核心 pipeline。
- 能用一句话解释「模仿学习」和「强化学习」的本质区别
- 理解状态 s 和动作 a 在 SO101 上具体是什么
- 能解释 BC 为什么会失败,以及 ACT 解决了什么
- 判断一个任务是否适合用模仿学习来做
- 1模仿学习 = 监督学习 + 演示数据,目标是学一个策略 π(s) → a
- 2行为克隆 (BC) 是最朴素的实现,会因复合误差累积而崩溃
- 3现代方法 (ACT、Diffusion Policy) 通过预测动作序列而非单步动作来缓解复合误差
- 4SO101 上的 (s, a) = (6 维关节角度, 6 维目标角度) + 相机帧
模仿学习标准 pipeline
flowchart LR
A["人类专家"] -->|"演示 N 条轨迹"| B["数据集 (s, a)"]
B -->|"监督学习"| C["策略 π_theta"]
C -->|"s -> a"| D["机械臂"]
D -.->|"新状态 s'"| C
style A fill:#7c5cff,stroke:#7c5cff,color:#fff
style C fill:#22c55e,stroke:#22c55e,color:#fff
style D fill:#0ea5e9,stroke:#0ea5e9,color:#fff强化学习 vs 模仿学习的数据来源对比
flowchart TB
subgraph RL ["强化学习 RL"]
direction LR
R1["随机动作"] --> R2["环境反馈奖励 r"]
R2 --> R3["更新策略"]
R3 --> R1
end
subgraph IL ["模仿学习 IL"]
direction LR
I1["专家演示"] --> I2["数据集 (s, a)"]
I2 --> I3["监督学习"]
I3 --> I4["策略"]
end理解状态 s 与动作 a
在 SO101 上,状态 s 是一个 6 维向量 [θ₁, θ₂, ..., θ₆],每个 θᵢ 是一个关节的当前角度。动作 a 也是一个 6 维向量,但它表示「下一时刻你想让每个关节去到的角度」。
所以一条演示轨迹是一串 (s_t, a_t) 对,按 30 Hz 采样的话,一段 5 秒的操作就有 150 对样本。
在 LeRobot 的 parquet 文件里:
- s 叫
observation.state - a 叫
action
你打开数据集就能直接看到这两个字段。
后面第 6 章会真的打开 parquet 看一眼,到时候这一节的内容会变得非常具体。
理解什么是策略 π
策略 π 就是一个函数 —— 输入 s,输出 a。在深度学习里它就是一个神经网络,参数叫 θ。训练的目标是找到一组 θ,让 π_θ(s) 尽可能接近专家演示里的 a。
最朴素的损失函数就是均方误差 (MSE):
L = ||π_θ(s) - a_expert||²只看这个公式的话,模仿学习和图像分类几乎一样 —— 都是「监督信号 + 反向传播」。差别在于输入的维度和输出的语义。
在 ACT 里这个函数不再是「看一帧出一个动作」,而是「看一帧出未来 100 步的动作序列」。这是 Action Chunking 的核心。第 7 章会展开。
理解 BC 为什么不够
想象你正在开车,方向盘比理想位置偏了 1 度。
下一秒你看到的画面是一个稍微偏左的车道 —— 这个画面跟训练数据里「专家正常开车」的画面已经不太一样了。如果你的策略只学过「专家正常开车」的画面,它在偏离的画面下会做出更糟糕的预测。
下下秒,画面偏得更厉害。再往下,策略彻底懵了。
这就是 复合误差 (compounding error):每一步的小偏差累积起来,让输入分布越来越远离训练分布。
这个问题在长序列任务(>10 秒)上尤其严重,你会观察到机器人前几秒动作很顺,越往后越歪。Action Chunking + Time Ensembling 是目前最有效的缓解方案,第 7-8 章会讲。
「模仿学习就是抄答案,没什么技术含量。」
根本原因
把「模仿」当成了字面意思的复制粘贴。
正确认识
真正的难点不在数据采集,而在让策略 泛化到没见过的状态。一个能背 50 条演示的策略毫无价值 —— 你要的是一个能应对环境扰动(光照变化、物体位置稍偏、初始姿态不同)的策略。这是 IL 跟监督图像分类最大的区别。
「我做了 10 条演示,模型怎么学不会?」
根本原因
数据量严重不足,且演示之间过于一致(没有覆盖足够的状态空间)。
正确认识
一般规则:简单 pick-and-place 任务起码 50 条,复杂任务(比如插 USB)需要 200+ 条。而且要刻意做出「不同初始位置 / 不同抓取角度 / 偶尔失败后重试」的演示,让训练分布足够宽。
「模仿学习就够了,不需要 RL。」
根本原因
没看到 IL 的能力边界。
正确认识
IL 的能力上限就是「专家演示的水平 + 一点泛化」。如果任务本身需要超越人类反应速度(高速接球、复杂规划),或者人类自己也演示得很差(双足平衡),那 RL 或 IL+RL 混合才是正路。
- 能用自己的话讲清楚 IL 和 RL 在数据来源上的根本区别
- 能算出一段 7 秒、30 Hz 演示在 SO101 上有多少个 (s, a) 样本
- 能解释为什么模仿学习也需要相机
- 能判断「折毛巾」「双足平衡」哪个适合 IL
状态/动作维度推算
SO101 有 6 个关节。如果你以 30 Hz 采集一段 7 秒的演示:
- 会得到多少个 (s, a) 样本对?
- 每对的总维度(s 维度 + a 维度)是多少?
- 整段演示的浮点数总量是多少?(按 float32 算)
思考题:为什么模仿学习需要相机?
既然 SO101 已经能精确读取每个关节的角度,理论上「状态 s = 关节角度」就已经完整描述了机械臂自己的姿态。
为什么所有现代模仿学习算法(包括 ACT)还必须配相机?
- Imitation Learning: A Survey of Learning Methods (Hussein et al. 2017)
IL 领域的经典综述,扫一眼能建立全局观。
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (Zhao et al. 2023)
ACT 原论文。先不用读懂全部数学,看一下实验视频和方法概览就够。
- LeRobot 官方介绍博客
HuggingFace 团队对 LeRobot 的产品级介绍,对接下来 8 章的代码理解很有帮助。
模仿学习 = 从专家演示里学策略。 最朴素的方法是 BC(监督学习套 (s, a) 对),但有复合误差问题。ACT 通过「一次预测一段动作」缓解了它。
SO101 上的状态是 6 维关节角度,动作是 6 维目标角度,再加相机帧。
下一章我们打开 SO101 的硬件,看 Leader/Follower 怎么生成这些 (s, a) 对。
本章讨论区
登录后即可参与讨论 —— 点击右上角的 登录 按钮
加载中…