3. 模仿学习基础
在灵巧手操作任务中,我们很难为每一根手指的关节角度、接触力与腕部姿态手工设计完整的奖励函数。模仿学习提供了一条更自然的路径:让机器人从人类演示中直接学习“怎么做”。本节围绕三条主流技术路线展开——行为克隆、逆强化学习与生成式模仿学习,理解它们的数学形式与适用边界,是后续工程实现的基础。
一、核心原理:三种范式的数学形式
模仿学习的一般设定是:给定专家演示数据集 \(D = \{(s_i, a_i)\}_{i=1}^{N}\),其中 \(s\) 为状态(如关节角、指尖位置、视觉特征),\(a\) 为动作(如目标关节角增量、力矩指令)。目标是学习策略 \(\pi_\theta(a|s)\),使其在环境中产生的行为接近专家。
行为克隆(Behavior Cloning, BC)把问题直接建模为监督学习,最小化专家动作与策略动作的差异:
L_BC(θ) = E_{(s,a)~D} [ || π_θ(s) - a ||² ] # 连续动作,MSE
L_BC(θ) = -E_{(s,a)~D} [ log π_θ(a|s) ] # 离散/高斯策略,NLL
BC 简单高效,但存在经典的分布偏移问题:策略一旦偏离专家轨迹,就会进入训练集中未出现过的状态,误差随步数累积。
逆强化学习(Inverse Reinforcement Learning, IRL)不直接学策略,而是先推断专家背后的奖励函数 \(R_\psi(s,a)\),再用强化学习求解最优策略:
max_ψ E_{π_E}[R_ψ(s,a)] - max_π E_{π}[R_ψ(s,a)] # 最大熵IRL
π* = argmax_π E_{π}[ Σ_t γ^t R_ψ(s_t, a_t) ]
IRL 的直觉是:专家的行为之所以“好”,是因为它最大化某个潜在奖励。学到的奖励可迁移到新场景,但计算代价高,通常需要与环境反复交互。
生成式模仿学习则把策略建模为条件生成模型,直接学习动作分布 \(p(a|s)\),常见形式包括扩散策略、变分自编码器与流匹配:
扩散策略:a^0 ~ N(0,I),逐步去噪 a^{k-1} = μ_θ(a^k, s, k) + σ_k ε
训练目标:L = E_{k,a^0,ε} [ || ε - ε_θ(a^k, s, k) ||² ]
生成式方法能表达多峰动作分布,适合灵巧手中“同一目标存在多种抓取姿态”的场景。
二、方法流程:从演示到策略的落地步骤
- 数据采集与对齐:通过动捕、遥操作或视觉示教采集演示,统一时间步长与坐标系,剔除抖动与丢帧。
- 状态与动作表示:状态可包含关节角、指尖位姿、触觉读数;动作常用关节目标增量或末端位姿增量。
- 模型选择:短程稳定任务优先 BC;需要奖励迁移时选 IRL;动作多峰、接触复杂时选扩散策略等生成式方法。
- 训练与正则:BC 可加入 DAgger 在线纠偏;IRL 需控制判别器容量;生成式方法需调节去噪步数与噪声调度。
- 闭环评估:在真实或仿真环境中统计成功率、轨迹偏差与接触力峰值,而非只看离线损失。
三、案例场景:灵巧手抓取杯子
假设任务是让灵巧手从桌面抓起一个纸杯。若采用 BC,模型可能学会“从正面抓”,但当杯子位置偏移时,策略容易进入未见过状态而失败。若采用 IRL,可以从多次演示中推断出“保持杯身竖直、避免捏扁”的奖励,再在新位置重新规划,泛化更好但训练更慢。若采用扩散策略,则能同时表达“正面抓、侧面抓、顶部抓”等多种模式,在遮挡与位姿不确定时更鲁棒,代价是推理需要多步去噪。
四、误区与复盘
| 常见误区 | 表现 | 修正思路 |
|---|---|---|
| 只看离线损失 | 验证集 MSE 很低,实机成功率却很差 | 以闭环成功率与轨迹偏差为主指标 |
| 忽略分布偏移 | BC 在长程任务中误差累积 | 引入 DAgger 或在线纠偏数据 |
| IRL 奖励不可辨识 | 多种奖励都能解释同一演示 | 加入最大熵正则与偏好约束 |
| 生成式推理过慢 | 扩散步数多,控制频率不足 | 蒸馏、少步采样或流匹配加速 |
| 动作表示不当 | 关节增量与绝对角混用导致抖动 | 统一动作空间并做归一化 |