深度强化学习
表格型方法(Q 表格)有两个致命问题:
- 维度灾难:围棋有 $10^{170}$ 个状态,Atari 游戏的状态空间(像素组合)几乎是无限的。无法为每个状态存一行。
- 泛化缺失:两个只差一个像素的画面,在 Q 表中是完全独立的条目。但它们几乎相同,应该有相似的价值。
解决方案:用一个函数 $F(s) = [q_{a_1}, q_{a_2}, \ldots]$ 来替代 Q 表格。输入状态,输出每个动作的 Q 值。这个函数就是神经网络。
Deep Q-Network(DQN)由 DeepMind 在 2015 年提出,首次让 AI 在 Atari 游戏上达到人类水平。它的核心是用深度神经网络 $Q(s, a; \theta)$ 来近似 Q 函数。
损失函数
通过最小化 TD 误差的均方差来更新网络参数 $\theta$:
其中 $\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 算法流程
- 初始化回放池 $D$、主网络 $Q$ 和目标网络 $Q_{\text{target}}$(参数相同)
- 对每个时间步:
- 用 $\epsilon$-Greedy 策略选择动作 $a$
- 执行 $a$,获得 $r, s'$
- 将 $(s, a, r, s')$ 存入 $D$
- 从 $D$ 随机采样 mini-batch
- 计算目标值 $y = r + \gamma \max_{a'} Q_{\text{target}}(s', a'; \theta^-)$
- 梯度下降更新 $\theta$ 以减小 $L(\theta)$
- 每隔 $C$ 步:$\theta^- \leftarrow \theta$
标准 DQN 网络直接输出每个动作的 Q 值。Dueling DQN 将网络拆分为两条流:
- 状态价值流 $V(s; \theta, \beta)$:衡量状态本身的好坏,与动作无关
- 优势函数流 $A(s, a; \theta, \alpha)$:衡量在状态 $s$ 下选择动作 $a$ 比平均水平好多少
合并公式:
减去均值是为了可识别性(否则 $V$ 和 $A$ 可以同时加减一个常数而不改变 $Q$)。
DQN 系列方法学习的是价值函数(Q 值),然后从中推导策略。另一种思路是直接学习策略——用一个神经网络 $\pi_\theta(a|s)$ 直接输出每个动作的概率。
目标函数
我们希望最大化期望回报:
策略梯度定理
经过推导,策略梯度为:
其中 $G_t = \sum_{k=t}^{T} \gamma^{k-t} r_k$ 是从时间步 $t$ 开始的累积折扣回报。
策略梯度的直觉
核心思想极其优雅:
- 如果一条轨迹的回报 $G_t$ 是正数,梯度方向增加这条轨迹上所有动作的概率
- 如果回报是负数,梯度方向降低这些动作的概率
- 回报越大,调整幅度越大
就像一个教练看比赛回放:赢球了就加强那些动作,输球了就减少。但教练不关心"为什么输"(不需要价值函数),只关心"输了就要改"。
三个重要的改进
原始策略梯度有三个问题,对应三个改进:
- 引入 $\gamma$:远期奖励权重递减,减少方差。
- 引入因果性:$t$ 时刻的动作不应影响 $t$ 之前的奖励。所以用 $G_t$(从 $t$ 开始的回报)而非整条轨迹的总回报。
- 引入 Baseline:减去一个基线 $b(s_t)$ 来减小方差。直觉:如果所有回报都是正的,即使很差的动作也会被增加概率。减去基线后,只有"比平均水平好"的动作才被强化。
改进后的梯度:
其中 $\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$-加权多步回报 | 中 | 中 |
PPO(Proximal Policy Optimization)由 OpenAI 在 2017 年提出,是当前最流行的深度 RL 算法之一。
普通策略网络的问题
- 当前动作只应影响其后的奖励,不应影响之前的
- 当前动作对后续动作的影响应随步数衰减
- 最致命:策略梯度可能一步更新太大,直接把策略搞崩溃
PPO 的核心思想
PPO 的核心:限制策略更新的幅度,确保新策略不会偏离旧策略太远。
用"学生改正"的类比:
- On-Policy:老师批评小明,小明改之
- Off-Policy:老师批评小明,其他人改之
重要性采样
PPO 使用旧策略收集数据,新策略更新。这需要重要性采样来修正分布差异:
如果旧策略选某个动作的概率是 10%,新策略是 20%,那么重要性权重就是 2——新策略下这个动作更可能出现,所以要打折。
裁剪目标函数
直接使用重要性权重可能导致更新幅度过大(新策略偏离太远)。PPO 的解决方案:裁剪。
其中 $\epsilon$ 通常取 0.1-0.2。
裁剪的直觉
我们不让概率比 $r_t(\theta)$ 超出 $[1-\epsilon, 1+\epsilon]$ 的范围。类比:对一个差学生有用的反馈对好学生可能有害。所以我们只在"新旧策略足够接近"时才信任重要性采样的结果,超出范围的部分被裁剪掉。
min 的作用:在裁剪和非裁剪之间取更保守的那个,确保目标函数是真实目标的下界。
PPO 算法流程
- 用当前策略 $\pi_{\theta_{\text{old}}}$ 收集一批轨迹数据
- 用 GAE 计算优势函数估计 $\hat{A}_t$
- 对这批数据做多个 epoch 的 SGD,优化 $L^{\text{CLIP}}$
- 更新旧策略参数:$\theta_{\text{old}} \leftarrow \theta$
- 重复
GRPO(Group Relative Policy Optimization)是大模型对齐领域的新兴方法,用于 RLHF 流程中的策略优化阶段。
背景:为什么大模型需要 RL?
大语言模型的训练流程通常是:预训练 → SFT(监督微调)→ RLHF(基于人类反馈的强化学习)。RLHF 的目的是让模型的输出更符合人类偏好。
传统 RLHF 使用 PPO,但 PPO 需要额外的价值网络(Critic),在 LLM 场景下训练代价大。GRPO 的创新:不需要价值网络。
GRPO 的核心思想
对于同一个 prompt,生成一组(group)回答,用奖励模型对每个回答打分。然后用组内的相对排名来计算优势函数:
其中 $r_i$ 是第 $i$ 个回答的奖励,mean 和 std 是在组内计算的。
这样就不需要单独训练一个价值网络来估计基线——组内其他回答的奖励就是天然的基线。
GRPO 的损失函数
GRPO 的优化目标通常包含两部分:
- $\mathcal{L}_{\text{RL}}$:策略梯度损失(最大化高奖励回答的概率)
- $\mathcal{L}_{\text{BC}}$:行为克隆损失(保持在 SFT 阶段学到的能力,防止遗忘)
- $\mathcal{L}_{\text{REG}}$:正则化项(如 KL 散度,防止偏离参考策略太远)
GRPO vs PPO(在 LLM 场景下)
| 维度 | PPO | GRPO |
|---|---|---|
| 价值网络 | 需要(Critic) | 不需要 |
| 基线估计 | 由 Critic 提供 | 组内相对排名 |
| 计算开销 | 高(两个大模型) | 低(只需策略模型) |
| 稳定性 | 依赖 Critic 质量 | 更稳定(无 Critic 误差) |
| 应用 | 通用 RL | LLM 对齐 |
这是贯穿整个 RL 的核心区分。总结如下:
| 维度 | On-Policy | Off-Policy |
|---|---|---|
| 定义 | 采样策略 = 目标策略 | 采样策略 ≠ 目标策略 |
| 数据复用 | 不能(收集后丢弃) | 可以(存入回放池反复用) |
| 样本效率 | 低 | 高 |
| 稳定性 | 更稳定 | 可能不稳定 |
| 代表算法 | SARSA, REINFORCE, PPO | Q-Learning, DQN |
策略梯度(纯 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 | 多线程异步 |
| SAC | Soft Actor-Critic(最大熵) | 单机 |
| TD3 | Twin 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