稀疏/延迟奖励与 Credit Assignment
解决奖励少、来得晚以及如何归因到早期动作。
学习目标
- 分清奖励出现少、反馈来得晚和历史贡献难归因这三个问题。
- 独立复核“一次成功中,MC 与一步 TD 传播到哪里”的输入、计算和解释。
- 备份顺序不同会改变一次扫描的信息传播速度。
为什么重要
分清奖励出现少、反馈来得晚和历史贡献难归因这三个问题。
学习前需要掌握
背景与问题
迷宫里只有到终点才得 1 分,会同时遇到两个困难:可能始终走不到终点,即探索失败;偶尔走到了,又难判断长路径里哪些动作必要,即信用分配困难。增加回放次数不能产生数据中从未出现的成功证据。
概念定义
稀疏奖励指大量转移没有有用的非零或区分性反馈;延迟奖励指结果在动作很久以后才出现;信用分配决定如何将后果关联到早先决策。三者相关但并不等价,密集噪声反馈同样可能难归因。
直观理解
团队项目几周后成功,不能给每次会议同样的功劳。某些动作建立了条件,另一些只是恰好发生;把终点分数无差别复制给所有动作会有很大方差。
核心原理
一步 TD 用后继价值向前传播信息。如果初始价值全为零,第一次成功只直接更新离终点最近的状态;更早状态需要之后的备份或重放才能接收这项证据。
Monte Carlo 和 n-step 回报让一次成功影响更长的历史,但更依赖整段轨迹的随机结果。资格迹与 GAE 用衰减权重融合多步信号,在传播距离与估计方差之间折中。
辅助奖励和目标重标记能让学习信号更丰富,但必须核对任务语义。任意“离终点更近就加分”可能鼓励来回刷分;势函数塑形的条件和终止处理不能省略。
数学表达
折扣回报
当前回报由下一奖励与折扣后的未来回报组成。
变量含义
G_t从时刻 t 开始的折扣累计回报。R_{t+1}执行动作后收到的下一步奖励。γ折扣因子,通常位于 [0,1)。
计算步骤
- 1更新 s0 时,后继旧价值还是 0,所以 TD 值为 0。
- 2更新 s1 时直接得到终点奖励 10。
- 3完整回报已知后,MC 可给 s0 目标 0+0.9×10=9。
代码对应位置
示例 1一次成功中,MC 与一步 TD 传播到哪里:一次向前 TD 扫描得到 V(s0)=0、V(s1)=10;MC 的 s0 目标为 9。
变量解释
| 变量 | 含义 |
|---|---|
G_t | 从时刻 t 开始的折扣累计回报。 |
R_{t+1} | 执行动作后收到的下一步奖励。 |
γ | 折扣因子,通常位于 [0,1)。 |
完整数值示例
一次成功中,MC 与一步 TD 传播到哪里
已知条件
- 轨迹为 s0→s1→终点,奖励依次为 0、10。
- 初始价值均为 0,折扣 0.9,学习率 1;按时间向前做一次 TD。
计算步骤
- 更新 s0 时,后继旧价值还是 0,所以 TD 值为 0。
- 更新 s1 时直接得到终点奖励 10。
- 完整回报已知后,MC 可给 s0 目标 0+0.9×10=9。
计算结果
一次向前 TD 扫描得到 V(s0)=0、V(s1)=10;MC 的 s0 目标为 9。
处理前后对比
- 备份顺序不同会改变一次扫描的信息传播速度。
- MC 更快使用这条轨迹的远期奖励,但不意味着它的统计方差更低。
计算与实现步骤
- 分析奖励时延
- 设计可保持最优性的 shaping
- 使用多步/trace
代码实现
示例 1
一次成功中,MC 与一步 TD 传播到哪里
example_01.py用途:一次向前 TD 扫描得到 V(s0)=0、V(s1)=10;MC 的 s0 目标为 9。
gamma = 0.9
values = [0.0, 0.0, 0.0]
values[0] = 0 + gamma * values[1]
values[1] = 10.0
mc_target_s0 = 0 + gamma * 10.0
print(f"one_pass_td_s0={values[0]:.1f}, td_s1={values[1]:.1f}")
print(f"mc_target_s0={mc_target_s0:.1f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
一次向前 TD 扫描得到 V(s0)=0、V(s1)=10;MC 的 s0 目标为 9。
Step 1 · 1–7 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
gamma = 0.9
values = [0.0, 0.0, 0.0]
values[0] = 0 + gamma * values[1]
values[1] = 10.0
mc_target_s0 = 0 + gamma * 10.0
print(f"one_pass_td_s0={values[0]:.1f}, td_s1={values[1]:.1f}")
print(f"mc_target_s0={mc_target_s0:.1f}")预期输出或运行结果
one_pass_td_s0=0.0, td_s1=10.0 mc_target_s0=9.0
常见错误 · 3 条
- 将探索失败误诊为只需要更强的价值网络。
- 把所有零奖励当成没有学习信息。
- 随意添加过程奖励而不检查最优策略是否改变。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 将探索失败误诊为只需要更强的价值网络。
- 把所有零奖励当成没有学习信息。
- 随意添加过程奖励而不检查最优策略是否改变。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Sutton 与 Barto《Reinforcement Learning: An Introduction》(第 5—7、12 章)。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 将探索失败误诊为只需要更强的价值网络。
- 把所有零奖励当成没有学习信息。
- 随意添加过程奖励而不检查最优策略是否改变。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
奖励延迟就必须使用折扣吗?
折扣定义偏好和有效时间范围,不能消除信用分配困难;有限 episode 也可使用不折扣回报,具体取决于任务目标。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。