跳转到正文

7.1 优势函数

第 6 章末尾我们发现:减掉基线 可以降低策略梯度的方差,而不改变梯度的方向。本节将深入这个关键洞察,引出优势函数——它是连接 Actor 和 Critic 的桥梁。

本节会用到的前置知识

从基线到优势函数

回忆第 6 章 REINFORCE 的策略梯度

是从当前步到 episode 结束的总回报(回顾:折扣累积回报)。问题在于 波动巨大——同一个策略、同一个状态,跑两次可能拿到完全不同的

减掉基线 后:

括号里的 就是优势函数(Advantage Function) 的一种估计。优势函数的正式定义是:

符号含义
优势函数:在状态 做动作 ,比"平均水平"好了多少。
动作价值函数:在状态 先做动作 ,之后按策略 行动的期望折扣回报。
状态价值函数:在状态 按策略 行动的期望折扣回报。
当前策略,决定在每个状态下各动作的概率。

两者的差恰好是"因为做了动作 ,多拿了多少分"。

优势函数的含义是:做了这个动作,比"平均能拿多少分"好了多少。

  • :这个动作比预期好,应该多选
  • :这个动作比预期差,应该少选
  • :这个动作和预期差不多

用下棋类比: 是"这个棋局整体胜率 60%", 是"走车之后胜率 75%"。优势 ,说明走车比平均水平好了 15%,是个好选择。

用一个具体的 3 步 episode 来看优势函数是怎么算出来的。假设折扣因子 ,某次采样得到如下轨迹:

从每个时刻开始计算折扣累积回报

再假设 Critic 已经给出了各状态的价值估计:

状态
3.0
2.5
0.8

代入 ,得到每个时刻的优势估计:

时刻 状态含义
0比预期好了
1比预期好了
2比预期好了

三个时刻的优势都是正数,说明这次轨迹上的每个动作都比平均水平表现更好。 是用 MC 回报对优势函数的估计;它无偏但方差高(不同的轨迹会给出差异很大的 )。

优势函数与累积回报

优势函数之所以能降低方差,核心在于它减掉了"本来就能拿到的分",只保留"因为做了这个动作多拿的分"。

构造一个更完整的例子。假设某状态 下,策略的平均回报是 。采样 4 条轨迹,回报分别是

先看用 作梯度信号的情况:

Episode梯度信号含义
118大正数,强推该动作
215正数,推该动作
37正数,推该动作
44正数,推该动作

四次都是正数。策略会认为"在这个状态下,不管怎样这个动作都是好的"——但 episode 3 和 4 的回报实际上低于平均水平。

再看用 的情况:

Episode梯度信号含义
11810比平均好很多,强推
21510比平均好,推
3710比平均差,抑制
4410比平均差很多,强抑制

时,四个 episode 都给出正的梯度信号,策略无法区分"真的好"和"碰巧碰上了高回报"。用 时,信号被校准了:高于平均的给正信号,低于平均的给负信号。

量化看方差变化。用 时,四个信号的均值为 ,方差为 。用 时,四个信号的均值为 ,方差为

四个样本的方差相同,但 的均值更接近零。当样本量增大时, 的波动范围由整条轨迹的随机性决定(可能从 0 到几十),而 的波动范围被 中心化,正负抵消使得梯度的期望方向更稳定。这正是"减掉基线降低方差"的机制。

用 TD Error 估计优势

优势函数的理论定义是 ,但实际中通常不直接计算 。从定义出发,经过一步展开就能得到一个更实用的形式。

开始。动作价值函数的定义是:

这个期望的含义:在状态 做了动作 之后,拿到的即时奖励加上下一状态的价值。如果只取一次采样(不走完整个 episode,也不对所有可能转移求平均),就得到 的一步估计:

其中 是这一步实际拿到的奖励, 是这一步实际到达的下一状态。把这个近似代入优势函数定义:

右边就是TD Error

符号含义
这一步实际拿到的即时奖励。
折扣因子,控制未来价值被打多少折扣。
Critic 对下一状态 的价值估计。
Critic 对当前状态 的价值估计。
TD Error:走了一步之后,实际结果比预测好了多少。

用 TD Error 替代 作为策略梯度的信号,有两个好处:

  1. 不需要等 episode 结束——每走一步就能更新( 需要跑完一整局,这是MC 方法的限制)
  2. 方差更低—— 只涉及一步的随机性( 涉及整条轨迹的随机性)

用一个具体的数值例子走一遍。假设 ,在某一步中:

  • 当前状态 ,Critic 估计
  • 智能体做了某个动作,拿到即时奖励
  • 到达下一状态 ,Critic 估计

代入 TD Error 公式:

,说明这一步比 Critic 的预测好了 。用这个 作为优势估计,策略梯度会轻微推动该动作的概率上升。

换一组数字。假设同一次转移中

,说明这一步比预测差了很多。策略梯度会推动该动作的概率下降。

再看 的情况。如果

:这一步的实际结果和 Critic 的预测完全一致,策略梯度信号为零,该动作的概率不变。

现在把三个时刻连起来看。假设一个 3 步 episode,

时刻状态动作下一状态
02.04.0
14.01.0
21.00.0

三步的 分别是 。时刻 0 的动作远超预期,策略应增加 的概率;时刻 1 的动作低于预期,策略应降低 的概率;时刻 2 略好于预期,轻微鼓励

对比用 MC 回报 的情况(同一条轨迹):

对应的 MC 优势估计:

时刻
05.522.0
12.84.0
221.0

两种估计给出的方向一致(正、负、正),但数值不同。TD 优势 只看一步,MC 优势 看到终点。 的方差更低(只含一步随机性),但有偏差(依赖 的准确性); 无偏但方差高(包含整条轨迹的随机性)。

这是 MC → TD 的演进在策略空间的再现:REINFORCE 用 (MC),Actor-Critic 用 (TD)。

REINFORCE (MC)Actor-Critic (TD)
优势估计(需要完整轨迹)(走一步就更新)
更新时机episode 结束后每走一步
方差
代价需要训练 Critic

Critic 网络实现

要计算 ,你需要知道 。但在真实问题中, 是未知的——需要一个网络来估计它。这个网络就是 Critic

Actor(策略网络)           Critic(价值网络)
  输入:状态 s                 输入:状态 s
  输出:π_θ(a|s) 概率分布     输出:V_φ(s) 标量
  作用:选动作                作用:评估状态价值
  参数:θ                     参数:φ

Actor 和 Critic 共享输入(状态 ),但输出不同:Actor 输出动作概率分布,Critic 输出价值标量。它们通过优势函数 协作:Critic 给出评估,Actor 根据评估调整行为。

但 Critic 怎么训练?它怎么学会准确估计 ?下一节将展开第 3 章速览过的 DP、MC、TD 三种方法在 Critic 训练中的具体应用。Critic 训练方法

现代强化学习实战课程

个人非商业离线镜像 · 内容版权归 WalkingLabs 所有,依 CC BY-NC-SA 4.0 授权 · 查看原文