策略梯度
干脆直接调整策略本身,让「好动作」出现得更频繁
定义
策略梯度方法把策略写成带参数 θ 的概率分布 πθ(a | s),然后直接对「期望回报」求关于 θ 的梯度,沿梯度上升方向更新参数,使高回报的动作被更频繁地采样。它不需要先估计价值再取最大值,因而天然支持连续动作与随机策略;代价是估计的方差很大。
直观理解
与其给每个「局面-动作」打分再挑最高的,不如直接问:当前策略里,哪个动作的概率该调大、哪个该调小?做法很朴素——跑几轮,凡出现在高回报轨迹里的动作,就把它的概率往上推一点;出现在差轨迹里的就压低一点。难点在于「这一轮回报高」里混了大量运气成分:所以需要许多样本,才能把噪声平均掉、看清真正的方向。
两条路线的取舍:先学「值多少」再取最大,还是直接学「怎么做」;一个省样本但难做连续动作,一个灵活但方差大
CartPole-v1 上的学习曲线(满分 500):PPO 收敛最快最稳,纯 REINFORCE 方差大、收敛慢——这正是基线、Critic 与信任域要解决的问题
- PPO(Actor-Critic + 裁剪)
- A2C(带优势的 Actor-Critic)
- REINFORCE(含基线)
工作原理
- 01
对数导数技巧:把采样变成可求导
核心等式是 ∇J = E[ ∇log πθ(a | s) · G ]。它把「无法对采样过程求导」的问题,改写成一个可以对每个采样动作计算的加权和——回报 G 越大,该动作的对数概率就被推得越高。
- 02
REINFORCE 与基线:先降方差
最早的算法直接用整条轨迹的回报 G 当权重,故称 REINFORCE,但它方差极大。减去一个与动作无关的基线 b(s)(常用状态价值 V(s))可以显著压低方差而不引入偏差——这就是「优势」的雏形。
- 03
Actor-Critic:一套演,一套评
用 A(s, a) = Q(s, a) − V(s) 表示「这个动作比平均水平好多少」,作为更新权重。Critic(价值网络)负责估计它,Actor(策略网络)据此更新,两者交替训练。相比纯 REINFORCE,它把整个回合的回报换成了单步的优势估计,方差更低。
- 04
信任域:TRPO 与 PPO
步子迈太大,新策略一旦崩坏,之前收集的数据就全废了。TRPO 显式限制新旧策略的 KL 散度;PPO 用更简单的裁剪目标把概率比限制在 [1−ε, 1+ε] 内。后者实现容易、表现稳健,因而成为今天最常用的默认算法。
关键公式
∇θ J ≈ E[ ∇θ log πθ(a | s) · A(s, a) ]三条路线的性格对比:Q 学习省样本但不擅长连续动作,纯策略梯度灵活但方差高,Actor-Critic / PPO 取折中
- Q 学习
- REINFORCE
- PPO
应用场景
- 连续控制:机械臂、四足机器人、自动驾驶的转向与油门
- 大模型对齐:RLHF 的最后一环就是用 PPO 优化语言模型策略
- 随机博弈:需要混合策略的场景(如石头剪刀布类的对抗)
- 组合优化与调度:策略直接输出动作的概率分布,天然处理随机选择
常见误区
- 高方差:单条轨迹的回报波动极大,梯度估计的噪声远高于监督学习,需要大量样本或更精细的优势估计才能稳定。
- 在策略(on-policy)的代价:策略一更新,旧数据就失效,必须重新采样。这使它的样本效率天然低于离策略的 Q 学习。
- 对步长敏感:更新过大会直接让策略崩溃、再也恢复不过来。这正是信任域与裁剪存在的原因,但 ε、学习率等超参数仍需谨慎调节。
关键术语
- Actor / Critic
- 策略网络与价值网络,前者选动作后者打分
- 优势函数 A(s, a)
- 某动作比该状态平均水平好多少
- 对数导数技巧
- 把对采样求期望的梯度化为对数概率的加权和
- 信任域 / KL 约束
- 限制新旧策略之间的偏离幅度