本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

Policy Gradient:直接优化策略

Policy Gradient:直接优化策略

更新于 2026-04-05

为什么直接优化策略

上一篇我们看到,Value-Based 方法(Q-Learning / DQN)的核心是学习 Q(s,a)Q(s,a),然后贪心选最大 Q 值的动作。这种方法有几个根本限制:

  1. 只能处理离散动作空间:需要对每个可能的动作计算 Q 值,当动作空间很大(如 LLM 的词汇表 32K+ tokens)或连续时(如机器人控制),这不现实
  2. 无法表达随机策略:有时最优策略需要随机性(如石头剪刀布),Q-Learning 只能输出确定性策略
  3. 小变化大影响:Q 值的微小变化可能导致 argmax 翻转,策略突变

Policy Gradient 的核心思想:既然 LLM 本身就是一个参数化策略 πθ(as)\pi_\theta(a|s)(给定 context,输出 token 概率分布),为什么不直接优化这个策略?

Policy Gradient 直觉:概率分布随 Reward 调整点击动作获得 reward → 正 reward 推高概率,负 reward 压低概率动作 Aπ = 25.0%0.250动作 Bπ = 25.0%0.250动作 Cπ = 25.0%0.250动作 Dπ = 25.0%0.250策略梯度核心∇J ≈ ∇log π(a|s) · RR>0: 推高 π(a) | R<0: 压低 π(a)reward 历史 (0 )重置每个动作有隐藏的期望 reward | 多次点击观察策略如何收敛到最优动作

策略梯度定理

Policy Gradient 的目标是最大化期望累积回报 J(θ)=Eπθ[tγtrt]J(\theta) = \mathbb{E}_{\pi_\theta}[\sum_t \gamma^t r_t]

策略梯度定理给出了 J(θ)J(\theta) 对参数 θ\theta 的梯度:

θJ(θ)=Eπθ[θlogπθ(atst)Gt]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\right]

其中 Gt=k=0γkrt+kG_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k} 是从时间步 tt 开始的折扣回报。

直觉

  • θlogπθ(as)\nabla_\theta \log \pi_\theta(a|s) 是让动作 aa 概率增加的方向
  • GtG_t 是这条轨迹的好坏程度
  • 两者相乘:Gt>0G_t > 0 时推高好动作概率,Gt<0G_t < 0 时压低坏动作概率

这个公式的美妙之处:不需要知道环境模型,只需要采样 trajectory 就能估计梯度。

REINFORCE 算法

REINFORCE 是最简单的 Policy Gradient 实现:

  1. 采样:用当前策略 πθ\pi_\theta 采样一条完整 trajectory τ=(s0,a0,r0,s1,a1,r1,)\tau = (s_0, a_0, r_0, s_1, a_1, r_1, \ldots)
  2. 计算 Return:对 trajectory 中每个时间步计算折扣回报 GtG_t
  3. 更新参数θθ+αtθlogπθ(atst)Gt\theta \leftarrow \theta + \alpha \sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t
REINFORCE:采样 Trajectory → 计算 Return → 更新γ = 0.9 | 每次采样一条完整轨迹,计算折扣回报历史采样 Return 分布(观察方差)REINFORCE 更新规则:θ ← θ + α · ∇log π(aₜ|sₜ;θ) · GₜGₜ > 0 → 增大该动作概率 | Gₜ < 0 → 减小该动作概率 | 多次采样才能得到可靠的梯度估计采样轨迹重置多次采样观察 Return 的方差 — 这就是 REINFORCE 的核心问题

高方差问题

REINFORCE 虽然简单优美,但有一个致命缺陷:梯度估计的方差极高

每次只采样一条 trajectory,这条 trajectory 的 return 受随机性影响很大。同一个策略,两次采样可能得到截然不同的 return——一次碰巧走了好路径得到高 return,另一次走了坏路径得到低 return。

这导致梯度估计非常不稳定,需要大量采样才能得到可靠的梯度方向。

高方差问题:梯度估计的散布每次采样一条 trajectory 只能得到一个 noisy 梯度估计θ₁θ₂真实梯度方向采样梯度估计 (n=0)统计采样数: 0平均方向: (0.00, 0.00)真实方向: (0.70, -0.70)点击采样观察方差这就是 REINFORCE 收敛慢的原因采样 1 条采样 10 条重置

Baseline 与 Advantage

解决高方差的关键洞察:reward 的绝对值不重要,重要的是”比平均好多少”

引入 Baseline b(s)b(s)(通常取 V(s)V(s) 的估计),将梯度修改为:

θJ(θ)=Eπθ[θlogπθ(atst)(Gtb(st))]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(a_t|s_t) \cdot (G_t - b(s_t))\right]

数学上可以证明:减去任何不依赖于动作的 baseline 不改变梯度期望(无偏),但显著降低方差

这就引出了 Advantage Function

Aπ(s,a)=Qπ(s,a)Vπ(s)A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s)

A>0A > 0 表示这个动作比平均水平好,A<0A < 0 表示比平均差。用 Advantage 替代 raw return,梯度同时具有无偏性和低方差。

Baseline 对 Policy Gradient 方差的影响✗ 显示无 Baseline0训练步数无 Baseline:方差大、抖动剧烈无 Baseline: ∇J ≈ ∇log π · G (raw return)Raw return 包含绝对值大小的信号,即使所有 reward 为正,梯度仍在正方向波动运行模拟
Raw Return G
原始 Return:绝对好坏action AG = 8action BG = 6action CG = 3问题:所有 Return 为正 → 所有动作概率都增加 → 梯度方向不稳定

从 REINFORCE 到 Actor-Critic

REINFORCE + Baseline 仍然需要采样完整 trajectory 才能计算 return。能不能每走一步就更新?

答案是 Actor-Critic:用一个神经网络(Critic)来近似 V(s)V(s),作为 baseline。这样:

  • Actor(策略网络)决定采取什么动作
  • Critic(价值网络)评估当前状态有多好

Critic 的 TD 估计可以在每一步提供 Advantage 信号,不需要等 trajectory 结束。这大幅提升了样本效率。

Actor-Critic 是通向 PPO 和 RLHF 的关键跳板,我们将在下一篇深入讲解。

Policy Gradient 算法演进点击节点查看每步改进的详情+ baseline b(s)+ Critic 网络+ 并行采样+ Clipped Trust RegionREINFORCEREINFORCE+ BaselineActor-CriticA2CPPO↑ RLHF 核心算法

总结

本文梳理了 Policy Gradient 的核心思路:

  1. 直接优化策略 πθ\pi_\theta 比 Value-Based 方法更适合大动作空间(如 LLM)
  2. 策略梯度定理提供了不依赖环境模型的梯度估计
  3. REINFORCE 是最简单的实现,但方差极高
  4. Baseline / Advantage 在保持无偏的同时大幅降低方差
  5. Actor-Critic 用神经网络近似 baseline,实现逐步更新

下一篇我们将深入 Actor-Critic 架构和 PPO,理解 RLHF 中最核心的优化算法。