算法学习(十一)—— Prioritized Experience Replay

基本思想:

使用包含更多信息的样本训练网络,如何快速的选出这些样本以及如何消除样本选择不均匀导致的参数更新错误是重点。

使用条件:

在算法设计足够好的情况,使用该方法不一定有效,如果奖励密度不够高、可以尝试。使用pr,算法效率可能降低,所以不一定好用。

关键点:

TD-error、sumtree和isweights

TD-error:

算法学习(十一)—— Prioritized Experience Replay_第1张图片

其目的在于不用样本赋予的权重,

算法学习(十一)—— Prioritized Experience Replay_第2张图片

 

sumtree:用于对不同TD-error的数据提供一个选择上的优先级。

算法学习(十一)—— Prioritized Experience Replay_第3张图片

抽样时, 我们会将 p 的总和除以 batch size, 分成 batch size 那么多区间, (n=sum(p)/batch_size). 如果将所有 node 的 priority 加起来是42的话, 我们如果抽6个样本, 这时的区间拥有的 priority 可能是这样. [0-7], [7-14], [14-21], [21-28], [28-35], [35-42] 然后在每个区间里随机选取一个数. 比如在第区间 [21-28] 里选到了24, 就按照这个 24 从最顶上的42开始向下搜索. 首先看到最顶上 42 下面有两个 child nodes, 拿着手中的24对比左边的 child 29, 如果 左边的 child 比自己手中的值大, 那我们就走左边这条路, 接着再对比 29 下面的左边那个点 13, 这时, 手中的 24 比 13 大, 那我们就走右边的路, 并且将手中的值根据 13 修改一下, 变成 24-13 = 11. 接着拿着 11 和 13 左下角的 12 比, 结果 12 比 11 大, 那我们就选 12 当做这次选到的 priority, 并且也选择 12 对应的数据。

 

isweights:用于修正数据有偏选择造成的偏差。

算法学习(十一)—— Prioritized Experience Replay_第4张图片

 

基本流程:

算法学习(十一)—— Prioritized Experience Replay_第5张图片

 

参考文章:

强化学习模型-Priority Replay Buffer

强化学习的学习之路(二十)_2021-01-20:Priority Replay Buffer

RL 7.Prioritized Experience Replay经验回放

【一文弄懂】优先经验回放(PER)论文-算法-代码

 

代码:

https://github.com/rlcode/per

你可能感兴趣的:(强化学习,Pytorch)