回顾DQN和TD算法
DQN 用神经网络来近似
Q
∗
Q^{*}
Q∗函数
通常用TD算法来训练DQN
在之前的内容中,我们使用的是在线梯度下降算法来更新参数w
为什么要做经验回放
1.TD算法浪费经验
2.有害的相关性
相邻两个状态之间通常非常相似,而这种相关性是有害的,实验证明,把序列打散会获得更好的训练效果。
经验回放可以解决上面两个问题
首先建立replay buffer
n是个超参数 需要调参
带有经验回放的TD算法流程:计算TD error 的时候从buffer中随机抽取一个来计算
Prioritized Experience Replay (优先经验回放):经验回放的一种改进
用非均匀抽样代替均匀抽样
buffer里有很多transitions 但重要性不同
TDerror的绝对值越大,transitions 就越重(稀缺经验)
均匀抽样的时候,可以使用统一的学习率。但是当非均匀抽样的时候,应该根据抽样概率来调整学习率
抽样概率大的时候,学习率应该调整的比较小
为了做有限经验回放,每一条transition都需要被标记TD error:
δ
t
\delta_t
δt
δ
t
\delta_t
δt决定其重要性,抽样率
如果一条transition刚刚被收集到,还不知道
δ
t
\delta _t
δt,则直接设置为最大值,即如果没有被用过的,给予最高权重。
在训练DQN的同时,$\delta_t $要被更新