Advantage 优势函数及其变种
Advantage 优势函数
在强化学习中,智能体并不只是关心“一个动作最后得到了多少回报”,更重要的是判断:在当前状态下,这个动作是否比正常选择更好。仅使用回报 \(G_t\) 或动作价值 \(Q(s,a)\) 进行策略更新,容易受到状态本身难易程度的影响;有些状态天然容易获得高回报,有些状态即使动作正确,回报也可能不高。因此,优势函数 Advantage 被引入,用来衡量某个动作相对于当前状态平均水平的好坏。它通常表示为 \(A(s,a)=Q(s,a)-V(s)\),其中 \(Q(s,a)\) 表示在状态 \(s\) 下执行动作 \(a\) 的期望回报,\(V(s)\) 表示该状态下按照当前策略行动的平均期望回报。通过比较二者,Advantage 能告诉策略:哪些动作应该被强化,哪些动作应该被削弱。也正因为这一点,它成为 Actor-Critic、A2C、PPO 等策略优化算法中的核心概念。
回顾强化学习相关定义:
- 回报 \(G_t\): 一次轨迹里实际算出来的累计回报。
- \(Q(s,a)\):很多次可能结果的平均/期望回报(在 s 下先固定做动作 a 后的平均未来回报
returns.mean()),定义:
- \(V(s)\):在状态 s 下,按当前策略行动的平均未来回报
由此,为了形容某步动作的 “好坏” ,我们得到了标准的 Advantage 函数:
如果 \(A(s,a)>0\) 说明当前动作带来的收益高于平均回报,在策略网络优化时提高这个动作的概率。
如果 \(A(s,a)<0\),说明这个动作比平均水平差,应该降低概率。
1. Monte Carlo Advantage
回顾REINFORCE 算法在 Reinforce 算法中,基础版本并没有用到 Advantage,而是直接用每局回报 \(G_t\) (MC采样)来优化策略:
这导致它面临两个问题:
- 一是由于回报是MC采样得到,噪声很大,方差大,训练波动大。
- 二是由于共享回报导致不清楚哪几步是关键动作主导了游戏。
- 三是严格来说 Reinforce 不知道那个动作好坏,如果returns都是整数,则该episode中好坏动作概率都会扩大,只是幅度不同。进一步提高了训练难度。
加 baseline 做法:
REINFORCE可以加 baseline:\(b(s_t)\)。加了baseline后 优化目标变为
策略更新从“回报高就强化”变成“比预期表现好才强化,比预期差就削弱”
Monte Carlo estimate of advantage
REINFORCE 加 baseline 有了 Advantage 的雏形,是一种Monte Carlo estimate of advantage。
在 REINFORCE / MC 里,经常用这一次的 \(G_t\) 作为 \(Q(s,a)\):
REINFORCE加 baseline 中,通过引入状态价值函数\(V(s)\) 计算 \(b(s)\),用单次 MC return \(G_t\) 减 baseline,得到一个 advantage estimate。
2. TD Advantage
在标准的 Advantage 公式中,\(Q(s,a)\) 定义原指的是当前状态 | 动作 后的很多 return 的期望——如果想更接近期望意义下的 \(Q(s,a)\),需要很多条 episode 的 \(G_t\)做平均。如果是 MC estimate \(A_t\) 则至少要等一局 episode 结束。
A2C 的动机
A2C 算法最核心的设计——用 TD 误差作为 Advantage
TD Advantage 单步偏差估计
仅用“一步真实奖励 + 下一状态价值的折扣”与“当前状态价值”的差表示优势函数 \(A(s,a)\)
不用等完整 episode 得到 MC return,也不用依赖很多局后的平均估计,而是基于 Bellman 方程:用“眼前的奖励”加上“下一步的 V 值”来快速近似。当前动作价值 \(Q(s,a)\)
\(γV(s_{t+1})\) 折扣未来价值:Critic 自己对下一状态的预测,经过折扣后作为对未来回报的估计。
所以 TD Advantage 可以写为:
3. n-step Advantage
用未来 n 步奖励来估计当前动作好不好。
TD/A2C:只用一步奖励估计 \(Q(s,a)\),方差小但可能偏。
n-step Advantage:用真实未来几步,再用 Critic 补后面没看到的部分计算回报 \(G_t\)
其中,\(\gamma^n V(s_{t+n})\) 称为 Bootstrap —— 即真实奖励还没拿到时,用Critic的估计值补上后面的未来回报。
4. GAE
Generalized Advantage Estimation
PPO 需要准确的优势函数\(A(s,a)\)来衡量动作好坏。GAE 通过多步 TD 误差的衰减累加,平衡了“单步 TD 的高偏差”和“蒙特卡洛的高方差”,是 PPO 训练稳定的关键。
GAE 递归公式(核心)
从后往前累加多步 TD 误差,权重为 \((γλ)^l\),GAE 的求和也会在 done 处停止向后传播,不会越过 episode 边界。
其中(\(δₜ\))就是单步 TD 误差
当前时刻的真实回报与预测价值的差。
总结
Advantage(优势函数)的核心作用,是把策略更新从“这个动作带来了多少回报”转化为“这个动作是否比当前状态下的平均水平更好”。在标准定义中,\(A(s,a)=Q(s,a)-V(s)\),其中 \(Q(s,a)\) 表示在状态 \(s\) 下执行动作 \(a\) 后的期望回报,\(V(s)\) 表示该状态下按照当前策略行动的平均期望回报。因此,Advantage 衡量的是动作相对于当前状态基准的相对好坏,而不是回报的绝对大小。在 REINFORCE 中,基础版本直接用 Monte Carlo return \(G_t\) 更新策略,容易产生较大方差;加入 baseline 后,更新项变为 \((G_t-b(s_t))\),相当于用一次采样回报减去状态基准,形成 advantage estimate。A2C 进一步用 TD 误差 \(r_t+\gamma V(s_{t+1})-V(s_t)\) 来近似 Advantage,避免等待完整 episode。n-step Advantage 则在单步 TD 和完整 Monte Carlo 之间折中,使用未来多步真实奖励并通过 bootstrap 补足更远的未来价值。GAE 在此基础上将多步 TD 误差加权累积,用 \(\lambda\) 控制偏差与方差的平衡,因而成为 PPO 等现代 Actor-Critic 算法中稳定策略更新的重要组成部分。
引用
- Williams, R.J. (1992) ‘Simple statistical gradient-following algorithms for connectionist reinforcement learning’, Machine Learning, 8, pp. 229–256. doi: 10.1007/BF00992696.
- Mnih, V. et al. (2016) ‘Asynchronous methods for deep reinforcement learning’, Proceedings of the 33rd International Conference on Machine Learning.
- Schulman, J., Moritz, P., Levine, S., Jordan, M. and Abbeel, P. (2015) ‘High-dimensional continuous control using generalized advantage estimation’, arXiv preprint arXiv:1506.02438.
- Schulman, J., Wolski, F., Dhariwal, P., Radford, A. and Klimov, O. (2017) ‘Proximal Policy Optimization Algorithms’, arXiv preprint arXiv:1707.06347.

浙公网安备 33010602011771号