折扣因子 γ:时间视野不是随便填的
γ 定义 agent 多看重未来;和 episode 长度、reward scale 强耦合,改 γ 等于改任务语义。

1. γ=0.99 不是万能默认值
折扣因子零点九九决定 effective horizon:权重 gamma 的 k 次方在 k 约等于一除以(一减 gamma)步后显著衰减。零点九九大约看一百步;零点九五大约二十步。短 episode(CartPole 约二百步)和小 gamma 有时更稳;长 horizon 操作任务需要大 gamma 才能把稀疏终局奖励传回来。改 gamma 等于改任务语义——和产品经理讨论 horizon 时,我会画 discounted weight 曲线:零点九九时一百步后权重还剩约百分之三十七,五百步后几乎只看长期。
2. Return 与 backup 两处出现
Return 是折扣奖励之和。gamma 也出现在 GAE 和 TD backup 两处,别和 lambda 混淆。改 gamma 时同步改 GAE 和 value bootstrap,三者必须一致。SB3 里 gamma 是构造参数,中途改必须重训;旧 checkpoint 只能当 warm start 参考,不能和不同 gamma 的曲线直接比。Team 内对齐 gamma 语义:产品要「看三十步」还是「看整局」,再填 hyperparam。讨论 clip 之前先问 discount 与 task 是否一致。
3. 与 reward scale 联动
每步 reward 若是负一(存活惩罚),gamma 大则长期累积很负,value 幅度大,需要更小 LR 或 reward scaling。若终局加一千、中间零,gamma 太小则中间状态几乎学不到方向。Sparse terminal 加一千、中间每步负零点零一混在一起却不 scale 时,critic 会被 sparse 项拉爆,policy 梯度几乎全来自最后几步。若每步 reward 大约在负一到一,gamma 零点九九,一百步 episode 的 return 量级大约几十,Q 网络输出也应在这个量级。
4. 失败模式
gamma 等于一在无穷 horizon 非 episodic 设置里 return 可能无界(需 average reward 或 truncation)。gamma 与 TimeLimit 不匹配:五百步截断但 gamma 零点九九九,bootstrap 和 Monte Carlo 混用感强。Finite horizon 任务若 gamma 太小,最后几步 reward 权重过低,agent 会「提前放弃」换短期惩罚。不同实验 gamma 不一致却对比曲线,结论无效。Sparse terminal reward 任务里,gamma 太大且 critic 差,中间 state 的 gradient 极弱,表现为「最后一跳突然学会」。
5. 案例:与 PM 对齐 horizon
和 PM 讨论 horizon 时画 discounted weight 曲线。若产品说「只关心二十步内到位」,gamma 零点九五可能更贴需求。改 gamma 后重新训,旧 checkpoint 不能混比曲线。Ablation 写进 appendix:gamma 属于零点九五、零点九九、零点九九五三曲线保留 sensitivity。和 lambda 联调时:大 gamma 加大 lambda 方差高,可能需要更小 LR 或更大 batch,不是不能训,是要预期训练更噪。
6. 数值直觉与 episodic
算折扣权重之和与 episode 最大长度的关系。固定策略 rollout,比较 gamma 零点九五和零点九九的 return 方差。我改 gamma 时会同时看 normalized return 和 value loss 量级。Episodic vs continuing:工程里大多数 Gym env 是 episodic,gamma 接近 1 即可。Continuing task(无 reset)有时用 average reward criterion,理论工具和 episodic 不同。改 gamma 配合 n-step 或 GAE lambda 一起考虑,单旋钮 rarely enough。
7. 与 episode 长度和产品 horizon 对齐
有限 horizon 任务若 gamma 太小,最后几步回报权重过低,智能体会「提前放弃」换短期惩罚。稀疏终局奖励任务里 gamma 太大且 critic 差,中间状态的梯度极弱,表现成「最后一跳突然学会」。改 gamma 配合 n 步或 GAE lambda 一起考虑,单旋钮 rarely enough。和 lambda 联调时:大 gamma 加大 lambda 方差高,可能需要更小学习率或更大 batch。团队内对齐 gamma 语义:产品要「看三十步」还是「看整局」,再填超参。讨论 clip 之前先问 discount 与 task 是否一致。
8. 验收
- 算折扣权重之和与 episode 最大长度的关系。
- 固定策略 rollout,比较 gamma 零点九五和零点九九的 return 方差。
- 改 gamma 后重新训,旧 checkpoint 不能混比曲线。
- Ablation:gamma 三曲线保留 sensitivity。
- Team 内对齐 gamma 语义与产品 horizon。
gamma 是时间视野的契约。和 episode 长度、reward scale 不对齐,critic 会在错误量级上拟合,policy 梯度来自错误的时间权重。
相关
也可以看看
- ·4 分钟阅读
MDP 五元组:写代码前先对齐任务
把任务写成 (S,A,P,R,γ) 再选算法,能避免 reward 单位、episode 边界和马尔可夫性上的 silent bug。
- ·16 分钟阅读
约束 MDP 的代价估计偏差:安全层看起来在工作
区分期望约束、条件风险与硬屏蔽,解释代价 critic 偏差如何让可行集虚胖;用约束违反轨迹占比、拉格朗日乘子轨迹和安全层旁路注入验收。
- ·17 分钟阅读
离线强化学习的支持集外动作:为什么 Q 值会自我抬高
从 Bellman backup 的分布外 maximization 解释外推误差;比较行为约束、保守价值与策略正则,并用覆盖率切片与 FQE 交叉验证部署边界。
johan's blog