【RL】--DQN、Double DQN、DQN-Prioritized Experience Replay、Dueling DQN

DQN介绍

DQN算法是在Q-learning基础上的改进,在Q-learning中必须存在一张Q表。当时当环境变得极其复杂时,Q表的数据量会相当大,更新过程会变得异常复杂。在经过深度网络的学习之后,我们就可以利用神经网络来代替Q表,只需要把状态S和行动a作为输入就可以得到相应的输出Q(s,a)。

算法原理

【RL】--DQN、Double DQN、DQN-Prioritized Experience Replay、Dueling DQN_第1张图片
DQN相比于 Q-learning的改进之处在于上图中的两处神经网络NN-1和NN-2,两个网络结果具有相同的结构但是具有不同的参数,为了切断相关性,NN-1的参数是最新的参数,而NN-2的参数是每隔一定步数之后才进行更新。
Q(s,a1)的估计值为Q(s,a1),现实值为r+λQ(s_,a2)。损失函数的定义为现实值-估计值。

离线学习的实现

因为Q-learning属于离线学习,因此我们需要建立了一个记忆库,用来存储每一步上一步的状态(S)、上一步所采取的行动(a)、现在的状态(S_)以及到达现在的状态所获取的奖励(r)。每走一步就会生成一条记忆。在程序中的实现如下所示:

def store_transition(self, s, a, r, s_):

建立好数据库之后我们就可以从数据库中随机选取一批数据在神经网络中进行训练。随机抽取这种做法打乱了经历之间的相关性, 也使得神经网络更新更有效率。

Double DQN

在Nature DQN中,计算Q现实时选择Q值是按照max的方式选择的,所以可能导致高估。
在这里插入图片描述
为了解决高估带来的影响我们可以引进另外一个神经网络。恰巧在DQN中存在两个参数不同结构相同的神经网络。因此可以先利用Qeval网络得到Q值,然后选择Qmax对应的action。然后再用Qnext网络得到最终的Q值。
在这里插入图片描述

DQN-Prioritized Experience Replay

在Nature DQN中,从记忆库中选择记忆时是随机选的。在记忆库中的正负样本比例相差比加大时,Nature DQN就很难重视数量较少的样本,而Prioritized Experience Replay方法会对数据库中的每一个样本设置一个优先级,在抽取样本时按照优先级进行选择。
为了高效的利用优先级来抽取样本,可以采用SumTree的方法。

Dueling DQN

Dueling DQN将每个动作的 Q拆分成每个s的value与每个a的advantage的和。第一部分我们称之为价值函数,记作V(s,w,α),第二部分称之为优势函数,记作A(s,a,w,β),那么最终的价值函数可以表示为:
Q(s,a,w, α,β) = V(s,w,α) + A(s,a,w,β)
Nature DQN与Dueling DQN在结构上面的不同如下图所示:
【RL】--DQN、Double DQN、DQN-Prioritized Experience Replay、Dueling DQN_第2张图片

你可能感兴趣的:(RL,DQN,Double,DQN,DQN-Prioritized,Experience,Replay,Dueling,DQN)