背景
传统方法是给机器设计规则,或者让机器不断试错 但现实中很多任务很复杂,很难提前告诉机器每一步应该怎么做 于是出现一种新的方法
让机器直接观察人类或者专家的行为,然后学习他们的经验
定义
模仿学习是一种通过学习专家示范数据,使机器获得类似专家决策能力的方法。
比如写字: 传统机器学习:依据规则学习——父母告诉孩子:“这个笔画应该向右多少厘米,角度是多少。” 模仿学习:直接展示,让机器观察,自己模仿——父母直接写几个字给孩子看
与普通机器学习的区别
普通机器学习:
判断是什么
比如输入猫的图片,输出”猫“
模仿学习:
决定应该怎么做
比如输入环境状态,输出动作
三、模仿学习基本数学模型
3.1 状态(State)
状态表示智能体当前所处的环境。 记为:
$$ s_t $$例如自动驾驶:
$$ s_t= \{道路信息,车辆位置,摄像头图像\} $$机器人:
$$ s_t= \{机械臂位置,物体位置\} $$3.2 动作(Action)
动作表示智能体执行的行为。 记为:
$$ a_t $$例如: 汽车:
- 左转
- 右转
- 刹车
- 加速 机器人:
- 移动
- 抓取
- 释放
3.3 策略(Policy)
策略表示: > 根据当前状态决定动作的方法。 数学表示:
$$ \pi_\theta(a|s) $$其中:
- $\pi$:策略
- $\theta$:模型参数
- $s$:状态
- $a$:动作
- 含义: 给定状态 $s$, 模型输出动作 $a$。 例如: 输入:
前方出现障碍物
模型:
$$ \pi_\theta $$输出:
向右转
3.4 专家示范数据
模仿学习需要专家数据。 专家执行任务产生轨迹:
$$ \tau= (s_1,a_1,s_2,a_2,...,s_T,a_T) $$例如司机驾驶过程:
观察道路
↓
转动方向盘
↓
车辆移动
形成数据集:
$$ D= \{(s_i,a_i)\}_{i=1}^{N} $$表示:
| 状态 | 专家动作 |
|---|---|
| $s_1$ | $a_1$ |
| $s_2$ | $a_2$ |
| $s_3$ | $a_3$ |
五、Behavior Cloning(行为克隆)
5.1 基本思想
Behavior Cloning:
将模仿学习转换成监督学习。
目标: 让模型预测动作接近专家动作。
5.2 损失函数
专家动作:
$$ a_i $$模型预测:
$$ \hat a_i=\pi_\theta(s_i) $$两者之间误差:
$$ a_i-\pi_\theta(s_i) $$因此定义损失函数: $$ L(\theta)
\frac1N \sum_{i=1}^{N} (a_i-\pi_\theta(s_i))^2 $$
这个公式表示: 模型预测动作和专家动作之间的平均误差。
5.3 举例
专家:
$$ a=30^\circ $$模型预测:
$$ \pi_\theta(s)=25^\circ $$误差:
$$ (30-25)^2=25 $$训练目标: 不断调整模型参数:
$$ \theta $$使:
$$ L(\theta) $$越来越小。
六、Behavior Cloning的问题
分布偏移(Distribution Shift)
Behavior Cloning最大的问题:
训练环境和测试环境不同。
训练阶段:
专家状态分布:
$$ p_E(s) $$测试阶段:
模型自己运行产生:
$$ p_\pi(s) $$二者:
$$ p_E(s)\neq p_\pi(s) $$例如:
训练:
汽车一直在道路中央
测试:
汽车稍微偏离道路
但是训练数据没有这种情况。
因此:
错误会不断累积。
七、DAgger算法
7.1 基本思想
DAgger:
Dataset Aggregation
数据聚合。
核心思想:
让模型自己探索,并让专家纠正错误。
7.2 算法过程
初始专家数据:
$$ D_0 $$训练模型:
$$ \pi_1=Train(D_0) $$模型执行:
产生状态:
$$ s_t $$专家提供正确动作:
$$ a_t^*=\pi_E(s_t) $$加入数据:
$$ D' $$更新数据集:
$$ D_{i+1}=D_i\cup D'_i $$不断循环:
专家数据
↓
训练模型
↓
模型执行
↓
发现错误
↓
专家纠正
↓
增加数据
↓
重新训练
八、Inverse Reinforcement Learning(逆强化学习)
8.1 与行为克隆区别
Behavior Cloning:
学习:
专家做什么。
Inverse Reinforcement Learning:
学习:
专家为什么这么做。
8.2 奖励函数
强化学习中:
奖励函数:
$$ R(s,a) $$表示:
某个行为的价值。
普通强化学习:
已知:
$$ R $$求:
$$ \pi $$逆强化学习:
已知:
专家轨迹:
$$ \tau_E $$推断:
奖励函数:
$$ R_\theta(s,a) $$过程:
$$ \tau_E \rightarrow R_\theta \rightarrow \pi $$九、机器人模仿学习(RoboMimic)
机器人任务:
学习:
$$ a_t=\pi_\theta(s_t) $$输入:
状态:
$$ s_t $$包括:
- 摄像头信息
- 机械臂位置
- 物体位置
输出:
动作:
$$ a_t $$例如:
$$ a_t=(x,y,z,gripper) $$表示:
机械臂移动和夹爪控制。
优缺点
优点:
- 减少人工设计规则
- 学习人类经验
- 适合复杂任务
缺点:
- 需要大量专家数据
- 专家数据质量影响模型
- 面对新情况可能表现不好
模仿学习核心公式讲解
1. 策略函数(Policy Function)
公式:
$$ \pi_\theta(a|s) $$公式含义
这是模仿学习中最核心的公式,表示:
智能体根据当前状态选择动作的过程。
其中:
| 符号 | 含义 |
|---|---|
| \(\pi\) | 策略(Policy),表示决策方法 |
| \(\theta\) | 模型参数,例如神经网络权重 |
| \(s\) | 状态(State),表示当前环境信息 |
| \(a\) | 动作(Action),表示机器执行的行为 |
直观理解
例如自动驾驶: 当前状态:
$$ s=\text{道路图像、车辆速度、周围车辆位置} $$经过策略模型:
$$ \pi_\theta $$输出动作:
$$ a=\text{方向盘角度、油门、刹车} $$也就是说:
环境状态 s
↓
策略模型 π
↓
动作 a
这个公式表达:
给机器当前情况,让机器决定下一步应该做什么。
2. 专家数据集(Expert Demonstration)
公式:
$$ D=\{(s_i,a_i)\}_{i=1}^{N} $$公式含义
模仿学习需要专家提供示范数据。 其中:
$$ D $$表示专家数据集合。
每一个数据包含:
$$ (s_i,a_i) $$也就是:
状态 + 专家动作
例如:
| 状态 | 动作 |
|---|---|
| \(s_1\) | \(a_1\) |
| \(s_2\) | \(a_2\) |
| \(s_3\) | \(a_3\) |
对于自动驾驶:
状态:
道路情况
动作:
方向盘角度
所以这个公式表示:
模型通过大量专家经验学习如何决策。
3. Behavior Cloning损失函数
公式:
$$ L(\theta)
\frac1N \sum_{i=1}^{N} (a_i-\pi_\theta(s_i))^2 $$
公式含义
Behavior Cloning(行为克隆)的目标:
让机器预测的动作尽可能接近专家动作。
其中: 专家动作:
$$ a_i $$模型预测动作:
$$ \pi_\theta(s_i) $$两者差距:
$$ a_i-\pi_\theta(s_i) $$表示:
专家和机器预测之间的误差。
为什么平方?
公式中:
$$ (a_i-\pi_\theta(s_i))^2 $$表示误差平方。 原因:
- 避免正负误差抵消;
- 放大较大的错误。 例如: 专家: $$ a=30^\circ $$ 模型: $$ \pi_\theta(s)=25^\circ $$ 误差: $$ 30-25=5 $$ 损失: $$ 5^2=25 $$ 训练目标: 不断调整: $$ \theta $$
使:
$$ L(\theta) $$越来越小。
总结
这个公式表示:
通过计算模型动作和专家动作之间的差距,让模型逐渐学会专家行为。
4. 分布偏移(Distribution Shift)
公式:
$$ p_E(s)\neq p_\pi(s) $$公式含义
这是Behavior Cloning存在的问题。 其中:
$$ p_E(s) $$表示:
专家遇到的状态分布。 例如: 老司机驾驶:
车辆一直保持在道路中央
表示: 模型运行时遇到的状态分布。
例如:
机器驾驶:
车辆可能偏离道路
所以:
$$ p_E(s)\neq p_\pi(s) $$表示:
专家训练数据和机器实际运行环境不同。
举例
训练阶段:
专家一直正常驾驶
↓
模型学习
测试阶段:
模型自己驾驶
↓
出现偏离道路情况
但是训练数据中没有这种情况。
因此模型容易失败。
这就是:
分布偏移问题。
5. DAgger数据聚合公式
公式:
$$ D_{i+1}=D_i\cup D'_i $$公式含义
DAgger(Dataset Aggregation)的目标:
不断加入模型自己产生的新数据,让模型适应更多情况。
其中:
$$ D_i $$表示当前已有数据。
例如:
第一次:
专家驾驶数据
表示:
模型运行过程中产生的新数据。
例如:
模型偏离道路
↓
专家告诉正确动作
符号:
$$ \cup $$表示:
集合合并。
所以:
$$ D_{i+1}=D_i\cup D'_i $$表示:
新的数据集=旧数据+模型错误后的专家纠正数据。
DAgger流程
专家数据
↓
训练模型
↓
模型自己执行
↓
发现错误
↓
专家提供正确动作
↓
加入数据集
↓
重新训练
不断循环,使模型越来越接近专家。
6. Inverse Reinforcement Learning(逆强化学习)
公式:
$$ R_\theta(s,a) $$公式含义
普通强化学习:
已知奖励函数:
$$ R(s,a) $$然后学习:
$$ \pi(a|s) $$即:
奖励
↓
学习策略
但是逆强化学习:
反过来:
通过观察专家行为:
$$ \tau_E $$推测专家隐藏的奖励函数:
$$ R_\theta(s,a) $$过程:
$$ 专家行为 \rightarrow 奖励函数 \rightarrow 策略 $$举例
观察老司机:
行为:
避开行人
保持车距
遵守规则
机器推断:
专家真正目标:
安全驾驶
所以IRL学习的是:
专家为什么这样做。
总结:模仿学习整体流程
模仿学习的核心过程:
第一步:收集专家数据
$$ D=\{(s_i,a_i)\} $$第二步:学习策略
$$ \pi_\theta(a|s) $$第三步:优化模型
$$ L(\theta)
\frac1N \sum (a_i-\pi_\theta(s_i))^2 $$
第四步:解决分布偏移
$$ D_{i+1}=D_i\cup D'_i $$最终目标:
让机器:
观察专家
↓
学习经验
↓
自主完成任务
这就是模仿学习的核心思想。
评论区