1. 模仿学习基础
各位同学好,我是这门课的主讲工程师。今天咱们聊聊模仿学习的入门知识。说实话,我第一次接触这个方向时,也觉得它挺玄乎——让机器人看人做一遍就学会?后来做了几个项目才明白,这里面的门道比想象中深得多。
1.1 什么是模仿学习
模仿学习,说白了就是让机器人通过观察专家的示范来学会执行任务。你想想看,人类教小孩拧瓶盖,从来不会写微分方程给他,而是手把手拧一遍,小孩看几次就会了。模仿学习干的也是类似的事。
从控制理论的角度看,传统方法需要我们手动设计控制律、调参数、写状态机。但模仿学习不一样——它直接从示教数据中提取策略。我当年做力控焊接项目时,光调阻抗参数就花了两周。后来改用模仿学习,让熟练焊工示教几遍,机器人自己就学会了柔顺轨迹,省了大把时间。
核心思想:模仿学习 = 从专家示教数据中学习一个从状态到动作的映射函数 π(s) → a,使得机器人在新场景下能复现专家的行为。
1.2 行为克隆与逆强化学习
模仿学习下面有两个主流分支,我分别说说。
行为克隆(Behavioral Cloning, BC)
行为克隆是最直接的方法。它把示教数据当成监督学习的训练集:状态是输入,动作是标签。然后训练一个神经网络,让它学会预测动作。
# 伪代码示意:行为克隆训练
示教数据 = [(s1, a1), (s2, a2), ..., (sN, aN)]
策略网络 = 神经网络(输入维度=状态维度, 输出维度=动作维度)
for epoch in range(100):
预测动作 = 策略网络(状态)
损失 = MSE(预测动作, 真实动作)
反向传播更新网络权重
听起来简单对吧?但我在实际项目里踩过坑——行为克隆有个致命问题:分布偏移。训练时网络看到的都是专家状态,但一旦推理时出现微小偏差,状态就偏离了训练分布,然后越偏越远,最后崩掉。我曾经用BC训练一个插拔连接器的任务,前10次都好好的,第11次机器人直接把连接器怼歪了……
避坑指南:行为克隆适合状态空间小、任务确定性高的场景。如果任务有随机性或多模态行为,BC基本会翻车。我建议先用DAgger算法做在线数据增强,或者直接上逆强化学习。
逆强化学习(Inverse Reinforcement Learning, IRL)
逆强化学习走的是另一条路。它不直接学策略,而是先推断专家背后的奖励函数,再用强化学习去优化这个奖励函数。说白了,就是猜专家心里在想什么。
举个例子:你看到一个人开车时总是贴着车道中心线走。BC会直接学“当前偏左就向右打方向”。但IRL会先推断“专家的奖励函数是惩罚偏离车道中心”,然后让强化学习自己去探索怎么最大化这个奖励。
| 对比维度 | 行为克隆(BC) | 逆强化学习(IRL) |
|---|---|---|
| 学习目标 | 直接拟合动作 | 推断奖励函数 |
| 数据效率 | 高(少量数据即可) | 低(需要大量交互) |
| 泛化能力 | 差(分布偏移) | 好(学到意图) |
| 计算开销 | 低(一次训练) | 高(需反复RL) |
| 适用场景 | 简单重复任务 | 复杂、多模态任务 |
我个人习惯是:如果任务简单、示教数据充足,先用BC快速出原型。如果BC效果不好,再上IRL。毕竟IRL的训练时间可能是BC的几十倍,你得有心理准备。
1.3 示教方式分类
示教方式决定了数据质量,而数据质量直接决定模仿学习的上限。我见过太多项目因为示教方式选错,后面再怎么调算法也救不回来。下面三种是主流方式。
遥操作示教
操作者通过主手控制从手,机器人跟着动。这种方式精度高,能记录完整的力/位信息。我在做精密装配项目时用的就是遥操作——操作者戴力反馈手环,通过主手控制机器人把轴承压入壳体,同时记录接触力曲线。
- 优点:数据完整(位置+力+力矩),可远程操作,适合危险环境
- 缺点:设备贵(力反馈主手动辄几十万),操作者需要培训,有延迟问题
- 典型设备:Omega.7、Phantom Premium、定制主从系统
动觉示教
操作者直接用手拖动机器人末端,机器人处于重力补偿或零力模式。这是我最喜欢的方式——直观、快速、不需要额外设备。我做过一个打磨去毛刺的项目,工人直接抓着机器人末端在工件上走一遍,机器人就学会了轨迹和力控策略。
小技巧:动觉示教时一定要开启重力补偿和摩擦力补偿,否则操作者会感觉在跟机器人较劲。我建议用阻抗控制模式,设一个很低的刚度(比如50N/m),这样拖动起来像在空气中划水。
- 优点:设备成本低(不需要主手),操作直观,适合快速原型
- 缺点:大型机器人拖不动(超过20kg就吃力),精度受操作者手抖影响,无法记录力信息(除非装六维力传感器)
- 典型设备:UR5/10协作机器人、Franka Emika Panda、KUKA LBR iiwa
视觉示教
操作者通过视觉系统(如RGB-D相机、动捕系统)演示动作,机器人通过观察来学习。这种方式最接近人类学习方式——看一遍就会。但说实话,视觉示教在工业场景中落地还不多,主要受限于视角遮挡和3D重建精度。
- 优点:非接触式,不干扰操作者,可同时示教多台机器人
- 缺点:需要精确的3D感知,受光照/遮挡影响大,力信息完全丢失
- 典型设备:Intel RealSense、OptiTrack动捕系统、Azure Kinect
下面这张图总结了三种示教方式的关系和适用场景。
嗯,到这里第一章的核心内容就差不多了。最后我想说一句:示教方式的选择没有银弹。我见过有人花50万买力反馈主手,结果工人不会用,数据质量还不如动觉示教。也见过有人用视觉示教做抓取,精度差得一塌糊涂。我的建议是——先想清楚你的任务需要什么数据(位置?力?力矩?),再选最经济的示教方式。别为了炫技而选贵的。