跳转至

稀疏奖励与模仿学习

经典 RL 假设环境每步都给出有意义的奖励,但现实中奖励往往极其稀疏——机器人走整个迷宫只有找到出口那一刻才得分。而模仿学习则提供了另一条路径:不需要奖励函数,直接从专家演示中学习策略。


一、稀疏奖励问题

1.1 什么是稀疏奖励?

奖励类型 示例 特点
稠密奖励 每走一步 -1 分,吃金币 +10 每步都有反馈,易学习
稀疏奖励 只有通关时 +1,其他时刻 0 绝大部分时间没有反馈信号

稀疏奖励为什么难?

智能体在探索初期几乎不可能偶然完成任务 → 得不到正面奖励 → Q 值全是 0 → 无法学到任何有用的策略。

想象一个从未见过锁的人被丢进一个密室,完全靠随机尝试找到出口——这就是稀疏奖励下智能体的处境。

1.2 稀疏奖励的数学困境

在稀疏奖励下,策略梯度近似为零:

\[ \nabla_\theta J = \mathbb{E}\left[\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\right] \approx 0 \]

因为绝大多数轨迹的 \(G_t = 0\)(没拿到奖励),梯度信号几乎为零,无法有效更新参数。


二、解决稀疏奖励的方法

2.1 奖励塑形(Reward Shaping)

手动设计中间奖励,引导智能体朝目标方向前进。

\[ R'(s, a, s') = R(s, a, s') + F(s, s') \]

其中 \(F\) 是人工设计的塑形函数。

示例:机器人走迷宫

  • 原始奖励:到终点 +1,其他 0
  • 塑形后:距终点每近 1 格 +0.1,撞墙 -0.05

奖励塑形的风险

如果塑形函数设计不当,智能体可能会"钻空子"——找到获取塑形奖励但不完成真实任务的方法。

基于势函数的奖励塑形(PBRS) 可以证明不改变最优策略:

\[ F(s, s') = \gamma \Phi(s') - \Phi(s) \]

其中 \(\Phi(s)\) 是状态的势函数(如到目标的负距离)。

2.2 好奇心驱动探索(Curiosity-Driven Exploration)

核心思想

给智能体一个内在奖励:对"新奇"状态的好奇心。

\[ r_t^{\text{total}} = r_t^{\text{external}} + \beta \cdot r_t^{\text{intrinsic}} \]

ICM(Intrinsic Curiosity Module)

ICM 由两个模块组成:

  1. 正向模型:预测执行动作 \(a_t\) 后的下一个状态 \(\hat{s}_{t+1} = f(s_t, a_t)\)
  2. 内在奖励:预测误差越大,说明这个转移越"意外",奖励越高
\[ r_t^{\text{intrinsic}} = \|\hat{s}_{t+1} - s_{t+1}\|^2 \]

直觉理解

小孩子喜欢探索新事物——看到没见过的东西会特别兴奋。ICM 就是给智能体装上了这种"好奇心":去没去过的地方,做没做过的事,能获得额外奖励。

2.3 后见经验回放(HER)

核心思想

HER(Hindsight Experience Replay)的关键洞察:失败的经历也有价值。

即使没到达目标,我们可以假装"我的目标就是实际到达的地方"——这样每条轨迹都有成功的经验。

算法

原始目标:到达 G(如迷宫终点)
实际轨迹:s₀ → s₁ → s₂ → s₃(没到 G,失败了)

标准经验回放存储:
  (s₀, a₀, r=0, s₁, G)  ← 全是失败经验
  (s₁, a₁, r=0, s₂, G)
  (s₂, a₂, r=0, s₃, G)

HER 额外存储(后见替换目标为 s₃):
  (s₀, a₀, r=0, s₁, G'=s₃)
  (s₁, a₁, r=0, s₂, G'=s₃)
  (s₂, a₂, r=1, s₃, G'=s₃)  ← "到达目标"!成功经验!

HER 的优势

  • 不需要修改算法或奖励函数
  • 与任何 Off-Policy 算法兼容(DQN、DDPG、SAC)
  • 在机器人操作任务中效果显著

2.4 课程学习(Curriculum Learning)

从简单任务开始,逐步增加难度:

阶段 1:迷宫只有 3 格 → 轻松学会基本移动
阶段 2:迷宫扩展到 5×5 → 学会转弯和规划
阶段 3:迷宫扩展到 10×10 → 学会长距离导航
阶段 4:完整迷宫 + 随机障碍 → 泛化能力

2.5 方法对比

方法 是否需要领域知识 适用场景 实现难度
奖励塑形 需要(设计奖励) 目标明确的任务 低
好奇心探索 不需要 迷宫、探索类任务 中
HER 不需要 多目标任务(如机器人抓取) 低
课程学习 需要(设计难度梯度) 复杂度可分级的任务 中

三、模仿学习(Imitation Learning)

3.1 动机

如果有专家的演示数据(如人类操作的录像),能否跳过奖励函数,直接学习?

方法 需要的数据
强化学习 奖励函数
模仿学习 专家演示 \(\{(s_i, a_i)\}\)

3.2 行为克隆(Behavioral Cloning, BC)

思路

最简单的模仿学习:把专家演示当作监督学习数据,训练策略网络。

\[ \min_\theta \sum_{(s,a) \in \mathcal{D}_{\text{expert}}} L(\pi_\theta(s), a) \]
  • 离散动作:交叉熵损失
  • 连续动作:MSE 损失
# 行为克隆 = 监督学习
for states, expert_actions in expert_dataloader:
    predicted_actions = policy(states)
    loss = criterion(predicted_actions, expert_actions)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

问题:复合误差(Compounding Error)

分布偏移问题

训练时:策略看到的都是专家轨迹上的状态(训练分布)
测试时:策略自己做的动作可能导致偏离专家轨迹 → 到达从未见过的状态 → 产生更大误差 → 偏离更远

误差像滚雪球一样累积——一步小错导致状态偏移,偏移导致更大的错误。

误差随时间步 \(T\) 呈二次增长: \(\epsilon_{\text{total}} \propto T^2\)

3.3 DAgger(Dataset Aggregation)

DAgger 通过迭代式数据收集解决分布偏移问题:

1. 用专家数据训练初始策略 π₁
2. 循环 N 次:
   a. 用当前策略 πₙ 在环境中收集轨迹
   b. 请专家标注这些轨迹中每个状态应该采取的动作   ← 关键!
   c. 将新数据加入训练集
   d. 在完整训练集上重新训练 πₙ₊₁

DAgger 的核心思想

让策略在自己可能到达的状态上也有专家的指导。即使策略犯了错到了陌生状态,专家也会告诉它"在那个状态应该怎么做"。

缺点:需要交互式的专家标注,在很多场景中不现实(如让人类在模拟器中实时标注)。

3.4 逆强化学习(Inverse RL, IRL)

思路

不直接学习策略,而是从专家的行为中推断出奖励函数,然后用标准 RL 在此奖励函数下训练。

\[ \text{标准 RL:} R \xrightarrow{\text{优化}} \pi^* \\ $$ $$ \text{逆 RL:} \pi_{\text{expert}} \xrightarrow{\text{推断}} R \xrightarrow{\text{优化}} \pi^* \]

直觉理解

看一个人天天早起跑步(专家行为),推断他可能追求"健康"这个奖励。然后基于"健康"这个奖励函数,可以设计出"早睡、健康饮食、定期运动"等一系列好策略。

3.5 GAIL(Generative Adversarial Imitation Learning)

GAIL 将 GAN 的思想引入模仿学习:

  • 生成器(策略 \(\pi_\theta\)):尝试生成和专家一样的行为
  • 判别器(\(D_\phi\)):区分"这段行为是专家的还是策略生成的"
\[ \min_\theta \max_\phi \; \mathbb{E}_{\pi_\theta}[\log D_\phi(s, a)] + \mathbb{E}_{\pi_E}[\log(1 - D_\phi(s, a))] \]

训练到最后,判别器无法区分策略和专家 → 策略已经学会了专家的行为。


四、模仿学习方法对比

方法 需要什么 优势 劣势
行为克隆 专家数据(离线) 简单快速 复合误差,需要大量数据
DAgger 交互式专家 解决分布偏移 需要专家在线标注
IRL 专家数据 泛化能力强 计算昂贵,需要在内部循环中跑 RL
GAIL 专家数据 不需显式奖励函数 训练不稳定(GAN 通病)

五、RL + 模仿学习的结合

在实际应用中,纯 RL(从零试错)和纯模仿学习(只看专家)都有局限。两者结合是最强大的范式:

5.1 演示数据预训练 + RL 微调

阶段 1:行为克隆预训练(快速获得一个不错的初始策略)
    ↓
阶段 2:RL 微调(在预训练策略基础上继续用奖励信号优化)

5.2 演示数据加入回放缓冲区

将专家演示 \(\mathcal{D}_{\text{expert}}\) 和智能体自身经验 \(\mathcal{D}_{\text{agent}}\) 混合放入 Replay Buffer:

\[ \mathcal{D} = \mathcal{D}_{\text{expert}} \cup \mathcal{D}_{\text{agent}} \]

训练采样时按一定比例混合两者。

5.3 应用场景

场景 方法
自动驾驶 行为克隆(大量人类驾驶数据)+ RL(安全约束微调)
机器人操控 遥操作演示 + HER + SAC
游戏 AI 人类玩家数据预训练 + PPO 自我博弈
大语言模型 SFT(行为克隆)+ RLHF(PPO 微调)

关键概念速查

概念 一句话解释
稀疏奖励 大部分时间步奖励为 0,信号极少
奖励塑形 手动设计中间奖励引导学习
好奇心探索 内在奖励驱动访问新奇状态
HER 失败经验中"假装目标是实际到达的地方"
行为克隆 把专家演示当监督学习
DAgger 迭代式收集策略实际遇到的状态让专家标注
IRL 从专家行为反推奖励函数
GAIL 用 GAN 思想让策略生成与专家无法区分的行为