ESC
输入关键词搜索文章
目录

深度强化学习

模块 04 · DQN、策略梯度、PPO 与 GRPO
当状态空间爆炸,表格方法失效,深度网络登场
为什么需要深度强化学习?

表格型方法(Q 表格)有两个致命问题:

  1. 维度灾难:围棋有 $10^{170}$ 个状态,Atari 游戏的状态空间(像素组合)几乎是无限的。无法为每个状态存一行。
  2. 泛化缺失:两个只差一个像素的画面,在 Q 表中是完全独立的条目。但它们几乎相同,应该有相似的价值。

解决方案:用一个函数 $F(s) = [q_{a_1}, q_{a_2}, \ldots]$ 来替代 Q 表格。输入状态,输出每个动作的 Q 值。这个函数就是神经网络

函数近似:神经网络通过已有样本学习规律,对未见过或极少见过的相似状态也能估计出合理的 Q 值,从而克服维度灾难并实现泛化。
Section 01
DQN:深度 Q 网络

Deep Q-Network(DQN)由 DeepMind 在 2015 年提出,首次让 AI 在 Atari 游戏上达到人类水平。它的核心是用深度神经网络 $Q(s, a; \theta)$ 来近似 Q 函数。

损失函数

通过最小化 TD 误差的均方差来更新网络参数 $\theta$

$$L(\theta) = \mathbb{E}\Bigl[\bigl(r + \gamma \max_{a'} Q_{\text{target}}(s', a'; \theta^-) - Q(s, a; \theta)\bigr)^2\Bigr]$$

其中 $\theta^-$ 是目标网络的参数。

DQN 的两大核心创新

DQN 之所以能成功训练,归功于两个关键技巧:

1. 经验回放(Experience Replay)

智能体与环境交互的数据 $(s, a, r, s', \text{done})$ 存入回放池 $D$。训练时从 $D$随机采样一个 mini-batch。

为什么有效:交互数据具有极强的时序相关性(连续帧几乎相同)。如果逐帧训练,网络会"学了后面的,忘了前面的"(类似灾难性遗忘)。随机采样打破了时间相关性,让训练更稳定。

类比:用《超级玛丽》第一关训练的 agent,可能无法处理第二关。当它学第二关时,又会遗忘第一关。经验回放让 agent 能反复回顾第一关的经验。

2. 目标网络(Target Network)

使用两个结构相同的网络:

  • 主网络 $Q(s, a; \theta)$:每步都更新
  • 目标网络 $Q_{\text{target}}(s, a; \theta^-)$:参数冻结,每隔 $C$ 步复制主网络的参数

为什么有效:如果只有一个网络,TD 目标 $r + \gamma \max Q(s', a'; \theta)$ 中的 $\theta$ 也在被更新。这就像"追逐一个不断移动的目标",训练极不稳定。目标网络冻结了 TD 目标,让主网络有一个稳定的优化方向。

DQN 算法流程

  1. 初始化回放池 $D$、主网络 $Q$ 和目标网络 $Q_{\text{target}}$(参数相同)
  2. 对每个时间步:
    1. $\epsilon$-Greedy 策略选择动作 $a$
    2. 执行 $a$,获得 $r, s'$
    3. $(s, a, r, s')$ 存入 $D$
    4. $D$ 随机采样 mini-batch
    5. 计算目标值 $y = r + \gamma \max_{a'} Q_{\text{target}}(s', a'; \theta^-)$
    6. 梯度下降更新 $\theta$ 以减小 $L(\theta)$
    7. 每隔 $C$ 步:$\theta^- \leftarrow \theta$
补充:Dueling DQN 架构

标准 DQN 网络直接输出每个动作的 Q 值。Dueling DQN 将网络拆分为两条流:

  • 状态价值流 $V(s; \theta, \beta)$:衡量状态本身的好坏,与动作无关
  • 优势函数流 $A(s, a; \theta, \alpha)$:衡量在状态 $s$ 下选择动作 $a$ 比平均水平好多少

合并公式:

$$Q(s, a; \theta, \alpha, \beta) = V(s; \theta, \beta) + \Bigl(A(s, a; \theta, \alpha) - \frac{1}{|A|}\sum_{a'} A(s, a'; \theta, \alpha)\Bigr)$$

减去均值是为了可识别性(否则 $V$$A$ 可以同时加减一个常数而不改变 $Q$)。

为什么更好:在许多状态下,动作的选择对价值影响不大(比如路很宽,往哪走都差不多)。Dueling 架构让状态价值流直接学习这种"无关动作"的信息,而不必为每个动作单独学习一遍,提高了学习效率。
Section 02
策略网络与策略梯度

DQN 系列方法学习的是价值函数(Q 值),然后从中推导策略。另一种思路是直接学习策略——用一个神经网络 $\pi_\theta(a|s)$ 直接输出每个动作的概率。

目标函数

我们希望最大化期望回报:

$$J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\Bigl[\sum_{t=0}^{\infty} \gamma^t r_t\Bigr]$$

策略梯度定理

经过推导,策略梯度为:

$$\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\Bigl[\sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\Bigr]$$

其中 $G_t = \sum_{k=t}^{T} \gamma^{k-t} r_k$ 是从时间步 $t$ 开始的累积折扣回报。

策略梯度的直觉

核心思想极其优雅:

  • 如果一条轨迹的回报 $G_t$ 是正数,梯度方向增加这条轨迹上所有动作的概率
  • 如果回报是负数,梯度方向降低这些动作的概率
  • 回报越大,调整幅度越大

就像一个教练看比赛回放:赢球了就加强那些动作,输球了就减少。但教练不关心"为什么输"(不需要价值函数),只关心"输了就要改"。

三个重要的改进

原始策略梯度有三个问题,对应三个改进:

  1. 引入 $\gamma$:远期奖励权重递减,减少方差。
  2. 引入因果性$t$ 时刻的动作不应影响 $t$ 之前的奖励。所以用 $G_t$(从 $t$ 开始的回报)而非整条轨迹的总回报。
  3. 引入 Baseline:减去一个基线 $b(s_t)$ 来减小方差。直觉:如果所有回报都是正的,即使很差的动作也会被增加概率。减去基线后,只有"比平均水平好"的动作才被强化。

改进后的梯度:

$$\nabla_\theta J(\theta) = \mathbb{E}\Bigl[\sum_{t} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot \hat{A}_t\Bigr]$$

其中 $\hat{A}_t = G_t - b(s_t)$优势函数(Advantage Function)的估计。

方差与偏差的权衡

$\hat{A}_t$ 的估计有多种方式,对应不同的偏差-方差权衡:

方法估计方式偏差方差
蒙特卡洛$G_t$(完整回报)
TD(0)$r_t + \gamma V(s_{t+1}) - V(s_t)$
GAE(PPO 用)$\lambda$-加权多步回报
Section 03
PPO:近端策略优化

PPO(Proximal Policy Optimization)由 OpenAI 在 2017 年提出,是当前最流行的深度 RL 算法之一。

普通策略网络的问题

  1. 当前动作只应影响其后的奖励,不应影响之前的
  2. 当前动作对后续动作的影响应随步数衰减
  3. 最致命:策略梯度可能一步更新太大,直接把策略搞崩溃

PPO 的核心思想

PPO 的核心:限制策略更新的幅度,确保新策略不会偏离旧策略太远。

用"学生改正"的类比:

  • On-Policy:老师批评小明,小明改之
  • Off-Policy:老师批评小明,其他人改之

重要性采样

PPO 使用旧策略收集数据,新策略更新。这需要重要性采样来修正分布差异:

$$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}$$

如果旧策略选某个动作的概率是 10%,新策略是 20%,那么重要性权重就是 2——新策略下这个动作更可能出现,所以要打折。

裁剪目标函数

直接使用重要性权重可能导致更新幅度过大(新策略偏离太远)。PPO 的解决方案:裁剪

$$L^{\text{CLIP}}(\theta) = \mathbb{E}_t\Bigl[\min\bigl(r_t(\theta) \hat{A}_t,\; \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t\bigr)\Bigr]$$

其中 $\epsilon$ 通常取 0.1-0.2。

裁剪的直觉

我们不让概率比 $r_t(\theta)$ 超出 $[1-\epsilon, 1+\epsilon]$ 的范围。类比:对一个差学生有用的反馈对好学生可能有害。所以我们只在"新旧策略足够接近"时才信任重要性采样的结果,超出范围的部分被裁剪掉。

min 的作用:在裁剪和非裁剪之间取更保守的那个,确保目标函数是真实目标的下界。

PPO 算法流程

  1. 用当前策略 $\pi_{\theta_{\text{old}}}$ 收集一批轨迹数据
  2. 用 GAE 计算优势函数估计 $\hat{A}_t$
  3. 对这批数据做多个 epoch 的 SGD,优化 $L^{\text{CLIP}}$
  4. 更新旧策略参数:$\theta_{\text{old}} \leftarrow \theta$
  5. 重复
PPO 为什么成功:它平衡了样本效率(通过重要性采样复用数据)和训练稳定性(通过裁剪限制更新幅度)。实现简单,超参数不敏感,适用于离散和连续动作空间。
Section 04
GRPO:大模型时代的强化学习

GRPO(Group Relative Policy Optimization)是大模型对齐领域的新兴方法,用于 RLHF 流程中的策略优化阶段。

背景:为什么大模型需要 RL?

大语言模型的训练流程通常是:预训练 → SFT(监督微调)→ RLHF(基于人类反馈的强化学习)。RLHF 的目的是让模型的输出更符合人类偏好。

传统 RLHF 使用 PPO,但 PPO 需要额外的价值网络(Critic),在 LLM 场景下训练代价大。GRPO 的创新:不需要价值网络

GRPO 的核心思想

对于同一个 prompt,生成一组(group)回答,用奖励模型对每个回答打分。然后用组内的相对排名来计算优势函数:

$$\hat{A}_i = \frac{r_i - \text{mean}(r)}{\text{std}(r)}$$

其中 $r_i$ 是第 $i$ 个回答的奖励,mean 和 std 是在组内计算的。

这样就不需要单独训练一个价值网络来估计基线——组内其他回答的奖励就是天然的基线

GRPO 的损失函数

GRPO 的优化目标通常包含两部分:

$$\mathcal{L} = \mathcal{L}_{\text{RL}} + \lambda_1 \mathcal{L}_{\text{BC}} + \lambda_2 \mathcal{L}_{\text{REG}}$$
  • $\mathcal{L}_{\text{RL}}$:策略梯度损失(最大化高奖励回答的概率)
  • $\mathcal{L}_{\text{BC}}$:行为克隆损失(保持在 SFT 阶段学到的能力,防止遗忘)
  • $\mathcal{L}_{\text{REG}}$:正则化项(如 KL 散度,防止偏离参考策略太远)

GRPO vs PPO(在 LLM 场景下)

维度PPOGRPO
价值网络需要(Critic)不需要
基线估计由 Critic 提供组内相对排名
计算开销高(两个大模型)低(只需策略模型)
稳定性依赖 Critic 质量更稳定(无 Critic 误差)
应用通用 RLLLM 对齐
On-Policy vs Off-Policy:终极对比

这是贯穿整个 RL 的核心区分。总结如下:

维度On-PolicyOff-Policy
定义采样策略 = 目标策略采样策略 ≠ 目标策略
数据复用不能(收集后丢弃)可以(存入回放池反复用)
样本效率
稳定性更稳定可能不稳定
代表算法SARSA, REINFORCE, PPOQ-Learning, DQN
补充:Actor-Critic 方法

策略梯度(纯 Actor)和 DQN(纯 Critic)各有优劣。Actor-Critic 将两者结合:

  • Actor(策略网络)$\pi_\theta(a|s)$,负责选择动作
  • Critic(价值网络)$V_\phi(s)$$Q_\phi(s,a)$,负责评估 Actor 的表现

Critic 提供的基线比蒙特卡洛回报更准确(方差更低),Actor 利用 Critic 的反馈来更新策略。

常见变体

算法特点并行度
A2C同步 Advantage Actor-Critic多线程同步
A3C异步 Advantage Actor-Critic多线程异步
SACSoft Actor-Critic(最大熵)单机
TD3Twin Delayed DDPG单机

其中 SAC(Soft Actor-Critic)引入了最大熵目标:在最大化回报的同时,也最大化策略的熵。这鼓励智能体保持探索,避免过早收敛到次优策略。

学习路线总结

至此,强化学习的四大模块全部完成。从 MDP 基础到深度 RL,从表格型方法到大模型对齐,你已经掌握了 RL 的完整知识脉络。回到 → 中枢页 查看完整的知识地图。

参考来源

  • Mnih, V., et al. (2015). Human-level control through deep reinforcement learning. Nature.
  • Schulman, J., et al. (2017). Proximal Policy Optimization Algorithms. arXiv:1707.06347.
  • 零基础学习强化学习算法:PPO
  • Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction, Chapters 9-13. MIT Press.
  • OpenAI Spinning Up