Prioritized Experience Replay
按 TD error 优先采样更有学习价值的 transition,并用重要性权重校正偏差。
学习目标
- 优先复习高残差样本,同时处理非均匀采样引入的权重偏差。
- 独立复核“优先采样概率与逆概率权重”的输入、计算和解释。
- 权重校正采样分布,并不消除 TD 目标本身的估计误差。
为什么重要
优先复习高残差样本,同时处理非均匀采样引入的权重偏差。
学习前需要掌握
背景与问题
均匀 replay 可能反复抽到已很容易预测的转移,却很少抽到重要的新错误。PER 根据优先级调整抽样概率,让高残差转移更常出现;但训练分布也随之改变,不能无视采样偏差。
概念定义
比例式 PER 通常令优先级为绝对 TD error 加小正数,再取指数 α 形成采样概率。训练损失使用与采样概率相关的重要性权重,β 控制修正程度。优先级需在重新计算误差后刷新,避免永远沿用过时判断。
直观理解
错题本会多练常错题,但如果只练噪声很大的错题,可能忽略整体题目分布。重要性权重减少高频题对总体目标的过度支配。
核心原理
α=0 对应均匀抽样;α 越大越集中于高优先级样本。小正数保证低误差样本仍有机会被抽到,不能把当前残差小误解成永远不需要学习。
若目标仍是均匀数据平均,理想单样本修正包含 1/(N P(i));常用 β 次幂及批内或全缓冲归一化控制尺度。β 小于 1 时是部分修正,不应声称严格消除了偏差。
高 TD error 可能来自真正新信息,也可能来自奖励噪声、异常记录或永远不可预测的转移。只追残差会过度抽样噪声,需检查优先级分布、有效样本量和覆盖。
数学表达
比例式 PER
常用 p 为绝对 TD error 加 ε;实际还可能归一化 w。
变量含义
p_i正优先级α优先采样强度β重要性修正程度N缓冲中的样本数
计算步骤
- 1采样概率为 0.25、0.75。
- 2重要性权重为 1/(2×0.25)=2 与 1/(2×0.75)=2/3。
- 3加权后的期望贡献概率均为 0.5。
代码对应位置
示例 1优先采样概率与逆概率权重:样本概率为 0.250、0.750,权重为 2.000、0.667。
变量解释
| 变量 | 含义 |
|---|---|
p_i | 正优先级 |
α | 优先采样强度 |
β | 重要性修正程度 |
N | 缓冲中的样本数 |
完整数值示例
优先采样概率与逆概率权重
已知条件
- 两个样本优先级为 1、3,α=1。
- 缓冲大小 N=2,β=1;本例不做最大值归一化。
计算步骤
- 采样概率为 0.25、0.75。
- 重要性权重为 1/(2×0.25)=2 与 1/(2×0.75)=2/3。
- 加权后的期望贡献概率均为 0.5。
计算结果
样本概率为 0.250、0.750,权重为 2.000、0.667。
处理前后对比
- 权重校正采样分布,并不消除 TD 目标本身的估计误差。
- 实际实现常归一化权重,损失整体尺度会随之变化。
计算与实现步骤
- 按 priority 采样
- 计算 IS weight
- 加权 loss
- 更新网络和 priority
代码实现
示例 1
优先采样概率与逆概率权重
example_01.py用途:样本概率为 0.250、0.750,权重为 2.000、0.667。
priority = [1.0, 3.0]
probabilities = [p / sum(priority) for p in priority]
weights = [1 / (len(priority) * p) for p in probabilities]
for p, weight in zip(probabilities, weights):
print(f"P={p:.3f}, weight={weight:.3f}, contribution={p*weight:.3f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
样本概率为 0.250、0.750,权重为 2.000、0.667。
Step 1 · 1–5 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
priority = [1.0, 3.0]
probabilities = [p / sum(priority) for p in priority]
weights = [1 / (len(priority) * p) for p in probabilities]
for p, weight in zip(probabilities, weights):
print(f"P={p:.3f}, weight={weight:.3f}, contribution={p*weight:.3f}")预期输出或运行结果
P=0.250, weight=2.000, contribution=0.500 P=0.750, weight=0.667, contribution=0.500
常见错误 · 3 条
- 使用优先采样,却仍宣称训练等价于均匀平均。
- 抽样后不刷新优先级,长期追逐陈旧残差。
- 把高残差直接当作有益学习价值或高回报。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 使用优先采样,却仍宣称训练等价于均匀平均。
- 抽样后不刷新优先级,长期追逐陈旧残差。
- 把高残差直接当作有益学习价值或高回报。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Schaul 等:Prioritized Experience Replay。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 使用优先采样,却仍宣称训练等价于均匀平均。
- 抽样后不刷新优先级,长期追逐陈旧残差。
- 把高残差直接当作有益学习价值或高回报。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
PER 总能提升样本效率吗?
不保证。若高残差主要是不可约噪声或异常数据,优先采样会浪费预算;还需要考虑优先级维护和树结构采样的开销。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。