策略空间 · 范式转换
策略梯度Policy Gradient
不学 Q 值,直接学策略 — REINFORCE → Baseline → Actor-Critic
3h
阅读 + 实操
3 个
交互演示
高阶
难度
策略梯度 · 交互演示
Ep200
步数195
最佳200
CartPole — 动作概率 π(a|s)
← 左推
0.50
右推 →
0.50
点击「📺 单集」开始一局,或「▶ 自动」连续训练;柱条实时显示左/右动作概率,观察策略如何从均匀分布学到偏好。
8.1 换条路:直接学策略
价值型方法先学 Q 再选动作,但遇到连续动作(机械臂的力矩有无数档)或需要随机策略的场景就力不从心。策略梯度干脆换条路:直接参数化策略 π(a|s;θ),用梯度上升最大化期望回报 —— 「好动作多做一点,坏动作少做一点」。这个简单的思路是 PPO、A3C 等现代方法的起点,也是 RLHF 优化大模型的核心工具。
下一步预告:策略梯度是起点而非终点——Actor-Critic 让每步都能更新,PPO 让更新更稳,RLHF 把 RL 用到大模型对齐。下一章开始,我们进入现代 RL。
📌 发生了什么
- 策略网络直接输出 π(a|s),按概率采样动作
- REINFORCE 用完整回报 G 加权梯度
- +Baseline 减去 V(s) 降低方差,期望不变
- Actor-Critic 用 TD 误差每步更新,样本高效
⚠️ 常见陷阱
- REINFORCE 必须等 episode 结束,方差极大
- 误以为 Baseline 改变梯度方向(其实只降方差)
- 把 Actor-Critic 当成 REINFORCE+Baseline 换名
✅ 本章小结
- 直接优化 π(a|s;θ),不依赖价值函数,支持连续动作
- REINFORCE 无偏但方差大;Baseline 降方差
- Actor-Critic 每步 TD 更新,是 PPO/A3C 基础
8.2 目标函数 J(θ):策略的期望回报
策略梯度直接参数化策略 π(a|s;θ),用梯度上升最大化期望回报 J(θ)。
目标函数 J(θ):策略 π_θ 下轨迹回报的期望。对 θ 求梯度即可更新策略。
8.3 策略梯度定理:好动作多做
策略梯度定理:梯度 = E[∇log π(a|s) · G_t]。log 把求导从分布转移到样本上(score function 技巧),无需知道环境模型。
8.4 Baseline:减掉底噪降方差
REINFORCE 带 baseline:减去与动作无关的基线 b(s)(常用 V(s))不改变梯度期望,但大幅降低方差,使训练更稳定。
8.5 Baseline 与方差对比
是否使用 baseline 直接决定策略梯度的方差与收敛性。
| 设置 | 表现 | 结果 |
|---|---|---|
| 无 baseline | 梯度方向波动大,更新剧烈 | 方差大、难收敛 |
| baseline = V(s) | 用优势 G_t - V(s) 抑制波动 | 方差大降 |
| α 过大 | 策略更新过猛,性能骤降 | 需调小 α |
💡 baseline 不改变梯度期望(无偏),只降方差 —— 这是策略梯度的关键技巧。
8.6 REINFORCE 核心代码走读
采样完整 episode,用 log π 的梯度乘以回报更新策略参数(Python):
gamma, alpha = 0.99, 0.01
policy = make_policy_net() # π(a|s; θ)
for ep in range(n_episodes):
traj = run_episode(policy) # [(s, a, r), ...]
G = 0
for t in range(len(traj) - 1, -1, -1):
s, a, r = traj[t]
G = r + gamma * G # 回报
logp = log_prob(policy, s, a)
baseline = V(s) # 可选 baseline
loss = -logp * (G - baseline)
gradient_step(policy, loss) # θ ← θ + α·∇logπ·(G-b)
📚 参考文献与延伸阅读
- Sutton & Barto, Reinforcement Learning (2nd ed.), §13 Policy Gradient Methods — 策略梯度定理与 REINFORCE
- Williams, R. (1992), Simple statistical gradient-following algorithms for connectionist RL — REINFORCE 原始论文
- Wikipedia: Policy gradient — 定理推导与 Actor-Critic 变体
📝 课后练习
检验你的理解——答对为止