GAE
核心概念与背景
- 优势函数:,衡量动作相对当前策略平均表现的优劣,是策略梯度的核心输入,目标是低偏差、低方差的估计。
- 传统方法局限:
- TD(0):仅用单步TD残差,方差小但偏差大,依赖价值函数的准确性。
- 蒙特卡洛(MC):用完整轨迹回报,无偏但方差大(随机性强),受噪声影响显著。
- GAE定位:通过指数加权平均融合多步TD估计,用参数λ实现从TD(0)到MC的平滑过渡,兼顾稳定性与准确性。
数学原理与公式推导
基础定义
- TD残差:,反 映价值预测与实际回报的差异。
- k步优势估计:。
- GAE闭合形式:当时,,轨迹末端截断。
- 递归计算式(工程实现):,从轨迹末尾反向递推至起始,效率更高。
| 参数 | 作用 | 常用范围 | 影响 |
|---|---|---|---|
| 折扣未来奖励 | 0.9–0.99 | 接近1时更重视长期回报 | |
| 平衡偏差-方差 | 0.9–0.98(连续控制) | λ=0→TD(0);λ=1→MC;中间值兼顾两者 |
- λ=0:,等价于TD(0),方差最小但偏差最大,适合高度准确场景。
- λ=1:,等价于无限步TD(接近MC),偏差最小但方差最大,适合不准但数据充足场景。
- 0-1:如λ=0.95(常用),通过衰减远期TD误差,既利用长期信息减小偏差,又控制方差,提升训练稳定性。
四、工程实现步骤
- 数据采集:收集轨迹,用 Critic 网络输出与。
- 计算TD残差:逐步计算。
- 反向递归计算GAE:初始化,从反向计算。
- 输出优势估计:得到,用于策略梯度更新(如PPO的损失函数)。
极简代码示例(PyTorch风格)
def compute_gae(rewards, values, gamma=0.99, lam=0.95, last_value=0.0):
values = torch.cat([values, last_value.unsqueeze(0)])
deltas = rewards + gamma * values[1:] - values[:-1]
advantages = torch.zeros_like(rewards)
advantage = 0.0
for t in reversed(range(len(rewards))):
advantage = deltas[t] + gamma * lam * advantage
advantages[t] = advantage
return advantages
- 核心逻辑:反向累加TD残差,用衰减后续优势,保证计算效率与数值稳定性。
你希望我补充GAE与TD(λ)的核心差异对比,这是理解GAE本质非常关键的一点,因为很多初学者容易混淆这两个概念。下面我会从数学形式、核心目标、偏差-方差特性、工程实现和适用场景五个维度,为你清晰梳理它们的核心区别与联系。
GAE 与 TD(λ) 核心差异对比
GAE 是基于 TD(λ) 思想,但专为优势函数估计设计的改进版本,二者共享λ参数的偏差-方差权衡逻辑,但目标、形式和应用场景完全不同。
| 对比维度 | TD(λ) (时序差分λ) | GAE (广义优势估计) |
|---|---|---|
| 核心目标 | 估计状态价值函数 | 估计优势函数 |
| 数学形式 | (前向视角:λ加权多步TD估计)或(反向递归) | (前向视角:γλ加权多步TD残差)或(反向递归) |
| 偏差-方差特性 | λ=0 → TD(0)(估计V,方差小、偏差大)λ=1 → MC(估计V,方差大、偏差小)核心是优化V的估计 | λ=0 → TD(0)优势(方差小、偏差大)λ=1 → 无限步TD优势(接近MC优势)核心是优化A的估计 |
| 权重设计 | 仅λ控制权重:(无γ参与) | γ和λ共同控制权重:(γ是折扣因子,λ是优势衰减因子) |
| 工程实现 | 递归计算,最终更新(α是学习率) | 递归计算,最终输入策略梯度 |
| 适用场景 | 仅用于价值函数(Critic)的更新训练 | 仅用于策略函数(Actor)的梯度更新,是策略梯度算法(PPO/TRPO)的核心组件 |
| 与Actor-Critic的关系 | 属于Critic侧的训练方法 | 连接Critic(输出V)和Actor(用A更新策略)的桥梁 |
关键补充说明
1. 数学形式的本质差异
-
TD(λ) 的递归式:,最终是用 修正 (目标是让V更准);
-
GAE 的递归式:,最终是用 衡量动作优劣(目标是指导策略更新)。
二者递归式看似相同,但用途和最终作用对象完全不同:TD(λ) 服务于Critic的价值拟合,GAE服务于Actor的策略优化。
2. 权重中γ的作用差异
- TD(λ) 中γ是“奖励折扣因子”,仅出现在TD残差 中,λ仅控制多步TD的加权;
- GAE 中γ和λ结合为 ,既折扣未来奖励(γ),又衰减远期优势的影响(λ),双重控制方差,这是GAE更适配策略梯度的关键。
3. 通俗理解
- TD(λ) :“我用λ调节多步信息,只为把状态价值V算得更准”;
- GAE:“我基于TD(λ)的思想,用λ调节多步信息,只为把‘动作比平均好多少’(优势A)算得更稳”。
总结
- 核心目标不同:TD(λ) 优化状态价值V的估计,GAE 优化优势函数A的估计;
- 权重机制不同:GAE 用 联合控制远期信息权重,TD(λ) 仅用λ;
- 应用场景不同:TD(λ) 用于Critic训练,GAE 用于Actor的策略梯度更新,是PPO等算法的核心。
简单来说,TD(λ) 是“给Critic用的工具”,而GAE是“基于TD(λ)改造、给Actor用的工具”,二者虽共享λ的偏差-方差权衡逻辑,但服务于强化学习Actor-Critic框架的不同部分。