什么是策略梯度?
策略梯度(Policy Gradient) 是一种直接优化策略参数的强化学习方法。
生活类比:学骑自行车
想象你在学骑自行车。你不需要先「计算」每个角度的价值(Q-Learning 的思路),而是直接「试着骑」——往左歪了就下次多往右修正,摔倒了就调整坐姿。每次尝试后根据「骑得稳不稳」来调整你的骑车「策略」。好的尝试就多做,差的尝试就少做——这就是策略梯度的核心思想。
两种学习思路的对比:
- Q-Learning(间接法):先给每个动作打分,再选分最高的——像查地图找最优路线
- 策略梯度(直接法):直接调整行为习惯——像凭直觉和经验骑车
策略梯度的优势:能处理连续动作空间(比如控制方向盘转角),而 Q-Learning 只擅长离散动作(向左/向右/前进)。
适用场景
- 连续动作空间:机器人控制、自动驾驶、无人机导航
- 随机策略需求:需要输出动作概率分布的场景(如游戏中的随机化策略)
- 策略难以表示为值函数:某些问题的最优策略难以通过贪婪选择得到
- 探索是必要的:策略本身包含探索,不需要额外的探索机制
- 端到端学习:直接从状态到动作的映射,无需中间价值估计
历史渊源
问题背景:Q-Learning 为每个状态-动作对学习一个 Q 值,然后选 Q 值最大的动作。但当动作空间是连续的(如机器人关节角度),就无法枚举所有动作来找最大值。而且 Q-Learning 的策略是确定性的(总选最优),无法表达"有时该随机探索"的需求。
关键突破:1992年,Ronald Williams 提出 REINFORCE 算法,开创了一条全新的路线:不学 Q 值,直接学策略本身。策略用概率分布表示(如高斯分布),通过策略梯度定理计算"如何调整策略参数使期望回报增大"。核心思想极其直觉:获得高回报的动作,增大其概率;获得低回报的动作,减小其概率。
深远影响:策略梯度方法打开了连续控制的大门——机器人行走、无人机飞行、自动驾驶都依赖它。更重要的是,策略梯度与 Critic 结合产生了 Actor-Critic 框架,进而演化出 PPO、SAC 等现代强化学习的主流算法,以及 RLHF(用人类反馈微调大语言模型)。
趣闻:Williams 的 REINFORCE 这个名字其实是个缩写:REward Increment = Nonnegative Factor × Offset Reinforcement × Characteristic Eligibility。这可能是机器学习史上最"硬凑"的缩写之一——但算法本身确实优雅到不需要花哨的名字。
发展脉络
局限性
- 高方差:策略梯度的方差很大,导致训练不稳定
- 样本效率低:需要大量样本才能学到好的策略,on-policy特性导致无法复用旧数据
- 收敛慢:相比值函数方法,收敛到最优策略更慢
- 局部最优:可能陷入局部最优,难以找到全局最优策略
- 步长敏感:学习率选择对性能影响很大,难以调节
这些局限催生了:Actor-Critic(降低方差)、TRPO/PPO(稳定更新)、SAC(最大熵提高探索)、GAE(更好的优势估计)
工业界地位
策略梯度方法是连续动作空间的主流方法:
- 机器人控制:OpenAI 的机械手解魔方、Boston Dynamics 的机器人
- 自动驾驶:端到端的驾驶策略学习
- 游戏AI:OpenAI Five(Dota 2)、AlphaStar(星际争霸)
- 大语言模型:RLHF(人类反馈强化学习)的核心方法
现代趋势:工业界更多使用 PPO(稳定)和 SAC(高效),纯 REINFORCE 已较少使用,但理解策略梯度是掌握这些高级方法的基础。
交互式可视化
调整策略参数,观察动作概率分布变化
- 拖动「策略参数 θ」,观察概率分布的中心位置如何移动
- 增大「探索度 σ」,观察分布变宽(更随机);减小它,分布变窄(更确定)
- 改变「状态值」,思考:不同状态下,最优动作应该不同吗?
策略信息:
REINFORCE 算法步骤:
- 根据当前策略 π_θ 采样动作 a
- 执行动作,获得奖励 r
- 计算策略梯度:∇θ log π_θ(a|s)
- 更新参数:θ ← θ + α · r · ∇θ log π_θ(a|s)
数学原理
直觉引入:Q-Learning 是"查表法"——记住每个状态下每个动作的价值。但如果状态空间巨大(如围棋),表格存不下。策略梯度的思路完全不同:直接用神经网络输出"该怎么做",然后根据结果好坏调整网络参数。好比一个演员不断排练,观众鼓掌就多演这样的戏,观众嘘声就少演。
策略网络(用 softmax 输出动作概率):
$\pi_\theta(a|s)$ = 在状态 $s$ 下选择动作 $a$ 的概率;$\theta$ = 网络参数;$f$ = 网络输出的分数。
策略梯度定理(核心公式):
直觉解读:$\nabla_\theta \log \pi_\theta$ 是"让这个动作概率增大的方向",$Q(s,a)$ 是"这个动作有多好"。两者相乘 = 好动作的概率增大,差动作的概率减小。
REINFORCE 算法(蒙特卡洛策略梯度):
- $G_t = \sum_{k=0}^{T-t} \gamma^k r_{t+k}$:从时刻 $t$ 开始的折扣累积回报
- $\alpha$:学习率
- $\nabla_\theta \log \pi_\theta$:得分函数(score function),指示参数调整方向
减少方差:基线与优势函数
$V(s)$ 作为基线(baseline):如果一个动作比平均水平好($A > 0$),增大其概率;比平均差($A < 0$),减小其概率。这比直接用 $Q$ 值方差小得多。