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 并不是在“理解任务”,而是在拟合专家在数据分布上的动作条件分布。网络容量、输入模态、动作表示方式都会直接影响映射质量。例如,输入若只给关节角,策略很难知道物体位置;输入若包含视觉特征,则能显著提升对复杂场景的适应能力。

行为克隆:监督学习视角下的策略学习闭环 专家演示 遥操作 / 动捕 / 脚本 轨迹 τ = (s, a) 多模态观测 监督数据集 D = {(s_i, a_i)} 状态归一化 动作对齐与切分 策略网络 π_θ CNN / MLP / Transformer 输出 μ_θ(s), σ_θ(s) 损失:MSE / NLL 机器人执行 闭环控制 新状态 s' 分布偏移风险 闭环执行产生新状态 关键监督学习要素 输入:状态 s 标签:专家动作 a 模型:π_θ(a|s) 目标:最小化预测误差

4.3 损失函数设计:MSE、NLL 与动作表示

损失函数决定了策略“学什么”和“怎么学”。最常用的是均方误差(MSE),它假设动作服从高斯分布且方差固定,优化简单、稳定,适合关节速度、末端位移等连续动作。但 MSE 容易导致策略输出“平均动作”,在多峰专家行为下会生成不自然的中间动作。此时可以使用高斯负对数似然(NLL),让网络同时学习均值和方差,从而表达动作的不确定性。

损失函数 适用动作 优点 局限
MSE 连续、单峰动作 简单稳定,训练快 多峰时输出平均动作
NLL / 高斯似然 连续、带噪声动作 可建模不确定性 方差易塌缩,需调参
交叉熵 离散动作、动作 token 适合分类式策略 连续控制需离散化
L1 / Huber 存在离群动作 对异常值更鲁棒 梯度特性需注意

动作表示同样关键。直接回归关节角、末端位姿或夹爪开合是常见做法;也可以把动作离散成 token,用分类损失训练,这在基于 Transformer 的策略中很常见。若动作维度高、时间相关性强,还可以预测动作序列(action chunk),减少单步预测的抖动。

4.4 泛化问题:分布偏移与复合误差

BC 最大的风险是泛化不足。训练数据只覆盖专家访问过的状态分布,而机器人部署时会进入训练集中未出现的新状态。一旦策略在某一步产生小误差,机器人就会偏离专家轨迹,进入“陌生状态”,下一步预测更不准,误差逐步累积,最终导致任务失败。这种现象称为复合误差(compounding error)或协变量偏移(covariate shift)。

典型误区:训练损失很低,并不代表机器人执行效果好。因为训练时输入的是专家状态,测试时输入的是策略自己产生的状态,两者分布不一致。仅看离线 MSE 容易高估策略性能。

缓解泛化问题可以从数据、模型和训练策略三方面入手:

  • 数据增强:对图像做颜色扰动、裁剪、噪声注入,对状态加扰动,扩大状态覆盖。
  • DAgger 类方法:让策略执行并请专家对访问到的状态重新标注动作,把新状态加入训练集。
  • 动作分块与时间集成:预测多步动作并平滑执行,降低单步误差影响。
  • 正则化与集成:使用 dropout、权重衰减、模型集成,提升对未见状态的鲁棒性。
  • 多模态输入:引入视觉、力觉、历史观测,帮助策略判断当前阶段。

4.5 案例:抓取放置任务中的 BC 训练

假设一个机械臂执行“抓取方块并放入盒子”的任务。专家通过遥操作采集 200 条轨迹,每条轨迹包含 RGB 图像、关节角、夹爪状态和末端速度。训练时,策略网络输入当前图像和关节角,输出末端速度与夹爪开合。若只用 MSE,策略在靠近方块时容易犹豫;改用 NLL 后,网络在接近目标时方差减小,动作更果断。部署时若方块位置偏移 3 厘米,策略可能因未见该状态而抓空。此时加入随机位置增强和 DAgger 补充数据,成功率会明显提升。

工程建议:BC 适合作为模仿学习的基线方法。先保证数据质量、动作对齐和损失函数匹配,再考虑更复杂的策略结构。评估时不要只看训练损失,要在真实或仿真环境中做闭环成功率测试。

总结来看,行为克隆把策略学习转化为状态-动作对的监督拟合,核心在于数据分布、损失函数和泛化能力三者的平衡。理解这一点,才能在实际工程中判断 BC 何时有效、何时需要引入在线修正或强化学习补充。