# 折扣回报与 GAE 计算器

> 来源：https://dqn.cn/tools/returns ｜ 作者：DQN.CN 编辑部 ｜ 发布：2026-10-30 ｜ 更新：2026-10-30 ｜ 许可：CC BY-NC-SA 4.0（文字）/ MIT（代码）

> （此处为交互工具，请在网页中使用：https://dqn.cn/tools/returns）

## 计算公式

设一条长度为 $T$ 的轨迹，$r_{t+1}$ 是在状态 $s_t$ 执行动作后得到的奖励，$V(s_t)$ 是价值估计。若 $s_T$ 是终止状态，则 $V(s_T) = 0$；若回合是被**截断**的（例如达到时间上限），则用 $V(s_T)$ 自举。

**折扣回报**（从后往前递推）：

$$
G_t = r_{t+1} + \gamma G_{t+1},\qquad G_T = V(s_T)\ \text{（终止时为 0）}
$$

**TD 误差**：

$$
\delta_t = r_{t+1} + \gamma V(s_{t+1}) - V(s_t)
$$

**GAE 优势**（Schulman et al., 2016）：

$$
\hat A_t^{\text{GAE}(\gamma,\lambda)} = \sum_{l=0}^{T-t-1} (\gamma\lambda)^l \delta_{t+l} = \delta_t + \gamma\lambda \hat A_{t+1}
$$

**λ-回报**：$G_t^\lambda = \hat A_t + V(s_t)$，它是 PPO 等算法中价值网络的回归目标。

两个特殊情况可以帮你检查理解：

- $\lambda = 0$：$\hat A_t = \delta_t$，即单步 TD 优势——方差小，但价值估计不准时偏差大；
- $\lambda = 1$：$\hat A_t = G_t - V(s_t)$，即蒙特卡洛优势——无偏（相对于所用的 $V(s_T)$），但方差大。表格最后一列给出了 $G_t - V(s_t)$，把 λ 拖到 1，GAE 列会与它完全相同。

## 可以试试

- **稀疏奖励**：点击“稀疏奖励”示例，最后一步才有奖励 1。$\gamma = 0.9$ 时 $G_0 = 0.9^9 \approx 0.387$；把 $\gamma$ 调到 0.99，$G_0 \approx 0.914$。这说明 $\gamma$ 越小，远处的奖励被“打折”得越厉害。
- **有效视界**：$\gamma$ 的有效视界约为 $1/(1-\gamma)$ 步：$\gamma = 0.99$ 约 100 步，$\gamma = 0.9$ 约 10 步。下方的权重曲线展示了 $\gamma^k$ 和 $(\gamma\lambda)^k$ 的衰减速度。
- **截断与终止**：点击“被截断的回合”示例，再勾选 / 取消“$s_T$ 是终止状态”。截断时如果错误地当作终止处理（自举值取 0），最后几步的回报会被严重低估——这正是本站 PPO、A2C 代码中区分 `terminated` 和 `truncated` 的原因。
- **λ 的偏差-方差权衡**：在 CartPole 风格的示例中把价值估计改得很离谱（例如全部改成 0），对比 λ = 0 和 λ = 1 时 GAE 列的变化。

## 相关教程

- [马尔可夫决策过程](https://dqn.cn/basics/mdp)：回报与折扣的定义。
- [时序差分学习](https://dqn.cn/basics/td-learning)：TD 误差与 TD(λ)。
- [Actor-Critic：A2C / A3C](https://dqn.cn/advanced/actor-critic)、[PPO](https://dqn.cn/advanced/ppo)：GAE 的实际使用。

## 参考文献

- Schulman, J., Moritz, P., Levine, S., Jordan, M., & Abbeel, P. (2016). High-Dimensional Continuous Control Using Generalized Advantage Estimation. *ICLR*. [arXiv:1506.02438](https://arxiv.org/abs/1506.02438)
- Sutton, R. S., & Barto, A. G. (2018). *Reinforcement Learning: An Introduction* (2nd ed.), Chapter 12. MIT Press.
