跳转至

稀疏奖励与模仿学习

经典 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 思想让策略生成与专家无法区分的行为