Skip to content

E.3.2 策略梯度与优势函数

前置知识E.3.1 导数、梯度与链式法则——你需要知道梯度的定义。


策略梯度从哪里来

上一节我们学会了用梯度调整参数来优化目标函数。现在把这个思路用到强化学习里。策略梯度的核心想法可以先用一句话理解:如果一个动作带来了高回报,就提高它在相应状态下被选中的概率;如果带来了低回报,就降低它的概率

假设在某个状态 ss 下,策略选择动作 right 的概率是:

πθ(rights)=0.2.\pi_\theta(\text{right}\mid s)=0.2.

这次智能体选了 right,并最终得到回报 G=10G=10。打个比方:如果一个篮球运动员在某个位置投篮命中了,教练就会鼓励他多在那个位置出手——策略梯度做的事与此类似。

策略梯度常见形式是:

θJ(θ)Gtθlogπθ(atst).\nabla_\theta J(\theta) \approx G_t \nabla_\theta \log \pi_\theta(a_t\mid s_t).

它可以拆成两部分:

  • GtG_t(累计回报):这次结果好不好,决定更新的力度和方向。
  • θlogπθ(atst)\nabla_\theta \log \pi_\theta(a_t\mid s_t)(对数概率的梯度):怎样调整参数才能让这个动作更可能(或更不可能)发生。

如果 GtG_t 是正的,就沿着”提高该动作概率”的方向更新;如果 GtG_t 是负的,就反方向更新。


优势函数:比”好不好”更精确的判断

策略梯度给出了”好动作概率上调、坏动作概率下调”的大方向,但它有一个实际问题:用原始回报 GtG_t 作为信号时,所有正回报的动作都会被鼓励,即使某些动作只是”碰巧拿到了正分”,实际上并不比平均水平好。这就好比考试全班平均 90 分,一个学生考了 80 分——虽然分数本身不算差,但相对而言并不值得表扬。优势函数就是为了解决这个”相对好坏”的问题而引入的。

V(s)=8.V(s)=8.

这次动作拿到回报 1010,它不只是“好”,而是比平均水平好 22

A(s,a)=108=2.A(s,a)=10-8=2.

如果另一次拿到 66,虽然仍是正回报,但比平均差:

A(s,a)=68=2.A(s,a)=6-8=-2.

优势函数的作用就是回答:这个动作相对于当前状态的平均水平,到底更好还是更差?

策略梯度中常把 GtG_t 换成优势估计 A^t\hat{A}_t,这样"好多少"或"差多少"的信息更精确:

θJ(θ)A^tθlogπθ(atst).\nabla_\theta J(\theta) \approx \hat{A}_t \nabla_\theta \log \pi_\theta(a_t\mid s_t).

用优势函数替代原始回报,能显著降低梯度估计的方差,让训练过程更稳定。


小结

本篇把梯度工具用到了策略优化上:

概念公式作用
策略梯度θJGtθlogπθ(atst)\nabla_\theta J \approx G_t \nabla_\theta\log\pi_\theta(a_t\mid s_t)好结果对应动作概率上升
优势函数A(s,a)=RV(s)A(s,a)=R-V(s)把"绝对好坏"变成"相对好坏"
优势加权$\nabla_\theta J \approx \hat{A}t \nabla\theta\log\pi_\theta(a_t\mid s_t)$相对平均更好的动作被加强

策略梯度给出了方向,优势函数让信号更精确。但还有一个悬而未决的问题:每次更新应该走多大步?下一篇讨论 PPO 裁剪和 Adam 优化器如何控制更新幅度。

下一篇E.3.3 PPO 裁剪与 Adam —— 控制策略更新幅度和梯度噪声。

Built for reusable bilingual course delivery