4. 行为克隆基本原理
行为克隆(Behavior Cloning, BC)是把机器人策略学习问题转化为监督学习问题的经典方法。它的核心假设非常直接:如果专家在状态 s 下执行了动作 a,那么我们可以把 (s, a) 当作一个带标签的训练样本,训练一个参数化策略 π_θ(a|s),使其在相似状态下输出与专家接近的动作。与强化学习不同,BC 不需要环境奖励,也不需要在线试错,只需要一批高质量的专家演示数据。
4.1 从轨迹到监督数据集
专家演示通常以轨迹形式采集,每条轨迹包含一系列时间步:
τ = [(s_0, a_0), (s_1, a_1), ..., (s_T, a_T)]
其中:
s_t:机器人观测,如关节角、末端位姿、RGB 图像、力/力矩
a_t:专家动作,如关节速度、末端位移、夹爪开合、力矩指令
T :单条轨迹长度
把多条轨迹汇总后,就得到监督学习数据集 D = {(s_i, a_i)}_{i=1}^N。这里的“标签”不是人工标注的类别,而是专家动作。策略学习的目标是找到一个映射 f_θ: s → a,使预测动作与专家动作的差异最小。若动作是连续值,通常输出高斯分布的均值;若动作是离散的,则输出类别概率。
4.2 状态-动作对映射:策略网络在学什么
从函数逼近角度看,BC 学习的是一个条件分布 π_θ(a|s)。训练时,网络输入状态 s,输出动作 a 的预测值。对于连续控制,常见做法是让网络输出均值 μ_θ(s) 和方差 σ_θ(s),然后最大化专家动作的对数似然:
L_BC(θ) = - E_{(s,a)~D} [ log π_θ(a|s) ]
若固定方差,则退化为均方误差:
L_MSE(θ) = E_{(s,a)~D} [ || a - μ_θ(s) ||² ]
这意味着,BC 并不是在“理解任务”,而是在拟合专家在数据分布上的动作条件分布。网络容量、输入模态、动作表示方式都会直接影响映射质量。例如,输入若只给关节角,策略很难知道物体位置;输入若包含视觉特征,则能显著提升对复杂场景的适应能力。
4.3 损失函数设计:MSE、NLL 与动作表示
损失函数决定了策略“学什么”和“怎么学”。最常用的是均方误差(MSE),它假设动作服从高斯分布且方差固定,优化简单、稳定,适合关节速度、末端位移等连续动作。但 MSE 容易导致策略输出“平均动作”,在多峰专家行为下会生成不自然的中间动作。此时可以使用高斯负对数似然(NLL),让网络同时学习均值和方差,从而表达动作的不确定性。
| 损失函数 | 适用动作 | 优点 | 局限 |
|---|---|---|---|
| MSE | 连续、单峰动作 | 简单稳定,训练快 | 多峰时输出平均动作 |
| NLL / 高斯似然 | 连续、带噪声动作 | 可建模不确定性 | 方差易塌缩,需调参 |
| 交叉熵 | 离散动作、动作 token | 适合分类式策略 | 连续控制需离散化 |
| L1 / Huber | 存在离群动作 | 对异常值更鲁棒 | 梯度特性需注意 |
动作表示同样关键。直接回归关节角、末端位姿或夹爪开合是常见做法;也可以把动作离散成 token,用分类损失训练,这在基于 Transformer 的策略中很常见。若动作维度高、时间相关性强,还可以预测动作序列(action chunk),减少单步预测的抖动。
4.4 泛化问题:分布偏移与复合误差
BC 最大的风险是泛化不足。训练数据只覆盖专家访问过的状态分布,而机器人部署时会进入训练集中未出现的新状态。一旦策略在某一步产生小误差,机器人就会偏离专家轨迹,进入“陌生状态”,下一步预测更不准,误差逐步累积,最终导致任务失败。这种现象称为复合误差(compounding error)或协变量偏移(covariate shift)。
缓解泛化问题可以从数据、模型和训练策略三方面入手:
- 数据增强:对图像做颜色扰动、裁剪、噪声注入,对状态加扰动,扩大状态覆盖。
- DAgger 类方法:让策略执行并请专家对访问到的状态重新标注动作,把新状态加入训练集。
- 动作分块与时间集成:预测多步动作并平滑执行,降低单步误差影响。
- 正则化与集成:使用 dropout、权重衰减、模型集成,提升对未见状态的鲁棒性。
- 多模态输入:引入视觉、力觉、历史观测,帮助策略判断当前阶段。
4.5 案例:抓取放置任务中的 BC 训练
假设一个机械臂执行“抓取方块并放入盒子”的任务。专家通过遥操作采集 200 条轨迹,每条轨迹包含 RGB 图像、关节角、夹爪状态和末端速度。训练时,策略网络输入当前图像和关节角,输出末端速度与夹爪开合。若只用 MSE,策略在靠近方块时容易犹豫;改用 NLL 后,网络在接近目标时方差减小,动作更果断。部署时若方块位置偏移 3 厘米,策略可能因未见该状态而抓空。此时加入随机位置增强和 DAgger 补充数据,成功率会明显提升。
总结来看,行为克隆把策略学习转化为状态-动作对的监督拟合,核心在于数据分布、损失函数和泛化能力三者的平衡。理解这一点,才能在实际工程中判断 BC 何时有效、何时需要引入在线修正或强化学习补充。