深度强化学习(DRL)五:优先回放DQN(Prioritized experience replay)

本文介绍了优先回放(Prioritized Replay)在DQN算法中的应用,以提高学习效率。通过使用TD偏差作为优先级标准,打破均匀采样,赋予高学习效率样本更大权重。文章详细讲解了优先回放的三个关键改变,包括使用SumTree存储和采样,根据TD偏差加权目标函数,以及每次更新时重新计算TD误差。还提供了相关代码实现,包括SumTree和ReplayMemory_PER类。最后,展示了如何在PerDQN类中整合这些概念进行学习。

全部代码

https://github.com/ColinFred/Reinforce_Learning_Pytorch/tree/main/RL/DQN

一、优先回放

在经验回放中是利用均匀分布采样,而这种方式看上去并不高效,对于智能体而言,这些数据的重要程度并不一样,因此提出优先回放(Prioritized Replay)的方法。优先回放的基本思想就是打破均匀采样,赋予学习效率高的样本以更大的采样权重。

一个理想的标准是智能体学习的效率越高,权重越大。符合该标准的一个选择是TD偏差δ。TD偏差越大,说明该状态处的值函数与TD目标的差距越大,智能体的更新量越大,因此该处的学习效率越高。

简而言之,就是在原来的replay buffer中给每个Transition增加了抽样的优先级(priority)

优先回放DQN主要有三点改变:

1, 为了方便优先回放存储与及采样,采用sumTree树来存储;

原文有两种方法计算样本抽样概率:proportional priority和rank-based priority。proportional priority就是样本被sample到的概率是正比于TD偏差的priority;rank-based priority就是概率正比于Transition priority的排序(rank)。这里考虑proportional priority,Transition被抽到的概率与TD偏差成正比。

并且,为保证每一个存入的Transition都能被sample到,新Transition会被赋予一个很大的priority。

2, 目标函数在计算时根据样本的TD偏差添加了权重(权重和TD偏差有关,偏差越大,权重越大):
1 m ∑ j = 1 m w j ( y j − Q ( s j , a j , w ) ) 2 \frac{1}{m}\sum\limits_{j=1}^m w_j (y_j-Q(s_j, a_j, w))^2 m1j=1mwj(yjQ(sj,aj,w))2

3,每次更新Q网络参数时,都需要重新计算TD误差 δ j = y j − Q ( s j , a j , w ) \delta_j = y_j- Q(s_j, a_j, w) δj=yj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值