模仿学习1:概念入门
机械臂模仿学习概念
模仿学习是让智能体通过观察专家(人类或其他智能体)的行为来学习策略,而无需显式地定义奖励函数。核心思想是:"看专家怎么做,然后学着做"。
与强化学习相比:
-
RL:通过与环境交互,靠奖励信号来学习
-
IL:通过专家演示数据来学习,不依赖(或少依赖)奖励信号
专家示范轨迹
专家在完成任务时产生的一系列序列数据
一个轨迹 通常表示为状态和动作的序列:
状态 - 动作对
模仿学习的最小数据单元,定义了 "在什么情况下应该做什么"
- 状态 s:智能体在某一时刻对环境的完整观测,包含完成任务所需的全部信息。例如:机器人操作中,机械臂的关节角度、末端执行器位置、相机拍摄的图像;自动驾驶中,车辆的速度、位置、周围障碍物的距离。
- 动作 a:专家在对应状态 s 下采取的决策行为。可以是离散动作(如游戏中的上下左右、机器人的抓取 / 释放),也可以是连续动作(如机械臂的关节力矩、汽车的方向盘转角和油门大小)。
分布偏移
学习到的策略 π 访问的状态分布 pπ(s),与专家示范的状态分布 pE(s) 不一致
机械臂模仿学习的主要流程
1.数据采集
-
动觉示教:你直接抓着机械臂的末端,带着它做一遍动作(比如倒水)。机械臂内部的关节电机处于空转或力矩模式,它会记录下整个过程中的关节角度、末端速度、力矩等数据。(这是最常见、最简单的数据采集方式)
-
遥操作示教:使用一个主手设备(如3D鼠标、VR手柄、外骨骼设备)远程控制真实的机械臂,计算机记录主手的指令和机械臂的状态。
-
视觉/无标记物捕捉:用摄像头捕捉人手在三维空间中的运动轨迹,然后通过算法(重定向)将人手的运动映射到机械臂的运动上。这种方法数据量大,但需要解决人手到机械臂的运动学差异问题。
2.模型训练
-
将采集到的数据(通常包括:视觉输入 + 机械臂状态 + 动作指令)输入到神经网络中。
-
网络学习的是一个策略:给定当前的图像和机械臂状态,应该输出什么样的关节动作(位置、速度或力矩)。
3.策略部署
-
将训练好的模型加载到机械臂的控制器上。
-
机械臂看到新的场景,实时推理出下一步动作并执行。
机械臂领域的核心技术方法
A. 行为克隆
-
原理:把专家数据当监督学习。输入是视觉和关节角度,输出是动作。这是最直接的baseline。
-
挑战:复合误差。机械臂一旦稍微偏离训练数据的轨迹,它不知道该怎么回来,导致越偏越远。
B. 强化学习 + 模仿学习(混合方法)
-
原理:先用模仿学习给机械臂一个“预热”,让它学会个大概;再用强化学习让它在模拟环境或真实环境中微调,探索更好的策略。
-
典型应用:OpenAI 的机械臂解魔方,就是先用模仿学习(人类演示),再用强化学习(自己练习)。
C. 逆向强化学习
-
原理:人类做演示时,内心有一个“目标”或“意图”。逆向强化学习试图先推断出这个意图(奖励函数),然后再用这个奖励函数去训练机械臂。
-
优势:如果机械臂理解了“意图”(比如要把水倒进杯子而不洒出来),即使杯子位置变了,它也能自己调整动作。
D. 动态运动基元
-
原理:一种经典的轨迹学习方法。将人类的示范轨迹参数化为一组微分方程。机械臂调用这些基元,可以灵活调整轨迹的起点和终点(比如原来的轨迹是画一个圆,现在圆心移动了,它也能跟着画)。
-
适用场景:需要保证轨迹形状,但起始点/终点变化的任务(如挥拍、写字)。
模仿学习的主要算法
1.行为克隆(Behavioral Cloning, BC)
将模仿学习视为监督学习问题。输入当前状态(如相机图像、关节角度),输出专家动作(如末端速度、关节力矩),通过最小化预测动作与专家动作的误差来训练策略网络。
优点:实现简单,收敛快速
痛点:误差累积放大;测试分布与训练分布不一致
适用场景:简单重复的轨迹任务(如Pick-and-place固定点位)
2.DAgger (Dataset Aggregation)
解决行为克隆的分布偏移问题。算法迭代式地让机械臂在当前策略下运行,遇到新状态时,邀请专家"纠正"该状态下的正确动作,然后将新数据加入训练集
优点:显著提升策略的鲁棒性;让机械臂学会从错误中恢复
痛点:需要专家在线干预;数据采集成本高
机械臂适用场景:需要高精度的复杂操作(如装配、插入任务)
3.GAIL(Generative Adversarial Imitation Learning)
借鉴生成对抗网络的思路。训练一个判别器来区分"专家演示轨迹"和"机械臂当前策略生成的轨迹",同时训练策略网络(生成器)去"欺骗"判别器,让其无法区分。
优点:无需预先定义奖励函数,学到的策略更接近专家行为分布,而非简单复制
痛点:训练不稳定,计算复杂度较高
机械臂适用场景:复杂操作技能学习(如开门、拧瓶盖),特别是难以手工设计奖励的任务
4. 逆强化学习:IRL
不直接学策略,而是先从专家演示中反推出奖励函数(即"专家为什么要这么做"),然后再用这个奖励函数通过强化学习训练策略。
优点:学到的奖励函数可解释,能迁移到新场景;比行为克隆更好的泛化能力
痛点:需要反复调用强化学习,计算量大;奖励函数可能不唯一(歧义性问题)
机械臂适用场景:需要理解任务意图的场景(如"把杯子放到桌上"而不关心具体轨迹)
5. IQ-Learn
将 IRL + RL 的两阶段统一为单一的 Q 函数优化,绕开奖励函数的显式建模。
优点:比 GAIL 更稳定,可以离线学习
6. 扩散策略(Diffusion Policy)
将扩散模型引入模仿学习。动作生成 = 去噪过程。对未来动作序列加噪后训练去噪网络,推理时从高斯噪声逐步去噪得到动作
优点:强大的多模态建模能力;训练稳定,生成的动作序列
痛点:推理速度较慢;计算资源要求高
机械臂适用场景:灵巧操作(如多指手抓取)、需要多样性的任务
7.ACT (Action Chunking with Transformers)
- Action Chunking:每次预测未来 k 步的动作序列,而非单步动作(减少复合误差,处理抖动)
- CVAE:在训练时用 CVAE 对专家行为的多模态分布建模,推理时从先验采样
优点:处理多模态行为;减少抖动和复合误差;数据量需求相对小
学习路线建议
↗ GAIL → IQ-Learn
BC → DAgger → IRL
↘ ACT → Diffusion Policy → RT系列
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)