模仿学习笔记

模仿学习笔记

背景

传统方法是给机器设计规则,或者让机器不断试错 但现实中很多任务很复杂,很难提前告诉机器每一步应该怎么做 于是出现一种新的方法

让机器直接观察人类或者专家的行为,然后学习他们的经验

定义

模仿学习是一种通过学习专家示范数据,使机器获得类似专家决策能力的方法。

比如写字: 传统机器学习:依据规则学习——父母告诉孩子:“这个笔画应该向右多少厘米,角度是多少。” 模仿学习:直接展示,让机器观察,自己模仿——父母直接写几个字给孩子看

与普通机器学习的区别

普通机器学习:

判断是什么

比如输入猫的图片,输出”猫“

模仿学习:

决定应该怎么做

比如输入环境状态,输出动作

三、模仿学习基本数学模型

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 $$

表示误差平方。 原因:

  1. 避免正负误差抵消;
  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_\pi(s) $$

表示: 模型运行时遇到的状态分布。

例如:

机器驾驶:

车辆可能偏离道路

所以:

$$ p_E(s)\neq p_\pi(s) $$

表示:

专家训练数据和机器实际运行环境不同。

举例

训练阶段:

专家一直正常驾驶


模型学习

测试阶段:

模型自己驾驶


出现偏离道路情况

但是训练数据中没有这种情况。

因此模型容易失败。

这就是:

分布偏移问题。

5. DAgger数据聚合公式

公式:

$$ D_{i+1}=D_i\cup D'_i $$

公式含义

DAgger(Dataset Aggregation)的目标:

不断加入模型自己产生的新数据,让模型适应更多情况。

其中:

$$ D_i $$

表示当前已有数据。

例如:

第一次:

专家驾驶数据
$$ 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 $$

最终目标:

让机器:

观察专家


学习经验


自主完成任务

这就是模仿学习的核心思想。

Comments

评论区