优势函数
第 5 章末尾我们发现:减掉基线 可以降低策略梯度的方差,而不改变梯度的方向。本节将深入这个关键洞察,引出优势函数——它是连接 Actor 和 Critic 的桥梁。
从基线到优势函数
回忆 REINFORCE 的策略梯度:
是从当前步到 episode 结束的总回报。问题在于 波动巨大——同一个策略、同一个状态,跑两次可能拿到完全不同的 。
减掉基线 后:
括号里的 就是优势函数(Advantage Function) 的一种估计。优势函数的正式定义是:
它的含义是:做了这个动作,比"平均能拿多少分"好了多少。
- :这个动作比预期好,应该多选
- :这个动作比预期差,应该少选
- :这个动作和预期差不多
用下棋类比: 是"这个棋局整体胜率 60%", 是"走车之后胜率 75%"。优势 ,说明走车比平均水平好了 15%,是个好选择。
为什么优势函数比 G_t 更好
优势函数之所以能降低方差,核心在于它减掉了"本来就能拿到的分",只保留"因为做了这个动作多拿的分"。
一个具体的数值例子:假设某状态 下,策略的平均回报是 。两个 episode 的回报分别是 和 。
| 用 | 用 | |
|---|---|---|
| Episode 1 | 梯度信号 = 15(很大) | 梯度信号 = 5(适中) |
| Episode 2 | 梯度信号 = 5(中等) | 梯度信号 = -5(负方向) |
用 时,两个 episode 都给出正的梯度信号(只是大小不同),看起来动作都是"好的"。用 时,Episode 1 给出正信号("比平均好了 5"),Episode 2 给出负信号("比平均差了 5")。优势函数把"绝对回报"变成了"相对回报",让信号更精确、方差更低。
用 TD Error 估计优势
优势函数的理论定义是 ,但实际中我们通常不直接计算 。利用 TD Error,可以用一种更高效的方式来估计 :
这就是第 3 章介绍的 TD Error。用 TD Error 替代 作为策略梯度的信号,有两个好处:
- 不需要等 episode 结束——每走一步就能更新( 需要跑完一整局)
- 方差更低—— 只涉及一步的随机性( 涉及整条轨迹的随机性)
这是 MC → TD 的演进在策略空间的再现:REINFORCE 用 (MC),Actor-Critic 用 (TD)。
| REINFORCE (MC) | Actor-Critic (TD) | |
|---|---|---|
| 优势估计 | (需要完整轨迹) | (走一步就更新) |
| 更新时机 | episode 结束后 | 每走一步 |
| 方差 | 高 | 低 |
| 代价 | 无 | 需要训练 Critic |
Critic:V(s) 的神经网络实现
要计算 ,你需要知道 和 。但在真实问题中, 是未知的——需要一个网络来估计它。这个网络就是 Critic。
Actor(策略网络) Critic(价值网络)
输入:状态 s 输入:状态 s
输出:π_θ(a|s) 概率分布 输出:V_φ(s) 标量
作用:选动作 作用:评估状态价值
参数:θ 参数:φActor 和 Critic 共享输入(状态 ),但输出不同:Actor 输出动作概率分布,Critic 输出价值标量。它们通过优势函数 协作:Critic 给出评估,Actor 根据评估调整行为。
但 Critic 怎么训练?它怎么学会准确估计 ?下一节将展开第 3 章速览过的 DP、MC、TD 三种方法在 Critic 训练中的具体应用。Critic 训练方法