直接优化策略:策略梯度、Actor-Critic、Advantage 与重要性采样

📅 2026/7/31 17:01:47 👁️ 阅读次数 📝 编程学习
直接优化策略:策略梯度、Actor-Critic、Advantage 与重要性采样

值函数方法的基本套路是:先学 或,再根据它们诱导出策略。而策略梯度方法走的是另一条路:直接把策略写成带参数的可导函数,然后直接优化它。这在连续动作、复杂策略结构以及需要随机策略的场景里尤其重要。

适合读者:已经理解 DQN,但还不清楚 policy gradient、Actor-Critic、baseline / advantage 与 off-policy 校正如何连起来的人。预计阅读:10 分钟。
关键词:策略梯度、Actor-Critic、优势函数、重要性采样。

值函数方法的基本套路是:先学V或Q,再根据它们诱导出策略。而策略梯度方法走的是另一条路:直接把策略写成带参数的可导函数,然后直接优化它。

这在连续动作、复杂策略结构以及需要随机策略的场景里尤其重要。

1. 策略梯度:直接优化动作概率

设参数化策略为:

强化学习目标则写成:

也就是:策略

诱导的轨迹,其期望回报要尽可能大。

策略梯度定理给出一个极为关键的公式:

图 1 的直觉可以概括成一句话:

  • 如果某个动作带来的回报更高,就提高它在该状态下的概率;
  • 如果某个动作效果更差,就降低它的概率。

其中

提供“怎样改概率”的方向,而

提供“这个动作值不值得鼓励”的信号。

2. Actor-Critic:让 Critic 为 Actor 提供学习信号

策略梯度公式里虽然写着

,但这个量通常并不好直接得到。一个自然办法是:再训练一个价值估计器来帮助策略学习。

这就得到 Actor-Critic。

  • Actor:负责根据状态选择动作,更新策略参数

  • Critic:负责估计价值函数,评价当前行为好不好。

在最常见的 TD 型 Actor-Critic 里,Critic 会计算 TD 误差:

然后:

  • Critic 用它来更新自己的价值估计;
  • Actor 则把它当作优势信号,更新策略:

所以,Actor-Critic 的精髓就在于:一个负责做决策,一个负责打分;TD error 把二者连接成闭环。

3. Baseline 与 Advantage:只看“相对好坏”

直接用回报或动作价值做策略梯度,往往方差较大。一个常见技巧是减去 baseline:

只要b(S)只依赖状态、不依赖动作,它不会改变策略梯度的期望方向,但通常能显著降低方差。

最常用的 baseline 就是状态价值函数:

于是得到优势函数:

图 3 说明了 advantage 的核心直觉:

不要只看动作本身好不好,而要看它是否“比这个状态下的平均水平更好”。

这样一来,学习信号会更加聚焦于“相对优势”,噪声通常更小。

在 A2C 一类方法里,优势函数常用一步 TD 误差近似:

这也是为什么 TD error 在 Actor-Critic 里如此核心:它既能更新价值,又能充当策略更新的 advantage 近似。

4. on-policy 与 off-policy:数据从哪里来,真的很重要

标准策略梯度大多是 on-policy 的:也就是说,更新策略时所用的数据,要由当前策略自己采样得到。

但在很多实际场景里,我们又希望复用旧数据、日志数据,或者由另一个行为策略产生的数据。此时就会面临一个分布不一致的问题:

  • 数据来自行为策略

  • 我们真正想优化的是目标策略

如果直接拿这些数据更新

,会产生偏差。重要性采样就是用来做这个校正的。

5. 重要性采样:用权重纠正分布偏差

重要性权重定义为:

它衡量的是:在状态 st下,当前样本动作在目标策略下相对行为策略有多“合理”。

这张图可以这样理解:

  • 如果

    接近,那么

    也接近 1;
  • 如果某个样本动作在目标策略下更常见,那么它的权重会更大;
  • 如果它在目标策略下很罕见,那么它的贡献会被压低。

通过把样本贡献乘上

,我们就能在一定条件下,用行为策略生成的数据去近似目标策略下的梯度。

但重要性采样并不是“免费午餐”。它最大的副作用是方差可能会变大,尤其当

很大时,更新会非常不稳定。因此,实践中常会配合:

  • 截断或裁剪权重;
  • 更稳定的 surrogate objective;
  • 像 V-trace、Retrace 这样的分布校正技巧。

6. 把 day6 的主线串起来

如果把本篇压缩成一条逻辑链,那就是:

  1. 策略梯度告诉我们,可以直接优化策略;
  2. Actor-Critic告诉我们,可以让 Critic 估计价值,为 Actor 提供低方差学习信号;
  3. baseline / advantage告诉我们,学习时应尽量只保留“相对好坏”;
  4. 重要性采样告诉我们,如果想复用行为策略的数据,就必须对分布偏差做校正。

你会发现,这些方法虽然名字很多,但围绕的始终还是同一个问题:怎样稳定而高效地提升长期回报。

到这里,整套连载的主线也就基本闭环了:

  • 前半部分用 Bellman 思想估计长期价值;
  • 中间部分用 TD / Q-learning / DQN 学会控制;
  • 后半部分则直接优化策略,并让 Critic 帮助策略学习。

以后再读强化学习论文时,可以先问三个问题:

  • 它优化的是价值,还是直接优化策略?
  • 学习信号来自完整回报、TD target,还是 advantage?
  • 数据是 on-policy 还是 off-policy?如果是后者,如何做分布校正?

很多看起来复杂的方法,往往都能被这三问很快定位。