RL(十三)深度Q网络(DQN)


在前面的学习中,我们主要是学习强化学习这一内容,强化学习具有很好的决策能力,但是在很多的实际任务中,我们不仅仅需要我们的算法有决策能力还要有很好的感知能力。而在现在的机器学习中,深度学习就具有很好的感知能力,并且在很多的方面得到了应用。那如果把他们的各自的优点结合起来是不是就能很好的解决我们的问题了呢。因此深度强化学习就诞生了。深度强化学习能够同时发挥深度学习的表征优势和强化学习的决策优势,为求解更为复杂的大规模决策控制问题提供了可能。这一章我们就来学习深度强化学习。

1、神经网络和强化学习的差异对比

神经网络时典型的监督学习方法,需要大量的标签数据训练预测和分类模型。相对于深度学习,强化学习训练过程缺乏直接的监督信号,其主要基于与环境交互的过程获得大量奖励和状态信号,并基于反馈信号对学习过程进行调整以获得最优的行动策略。所以两者在训练数据、学习过程等方面存在着明显的差异。主要体现在下面这三个方面:

(1)深度学习具有固定的监督信号(标签),而强化学习缺乏监督信号且只有环境反馈的奖励信号。除此之外,奖励自身存在噪声、延迟、和稀疏性等问题。
(2)深度学习的监督信号一般是独立同分布的,但是强化学习的动作和状态分布之间存在着相关性,即序列上的相邻状态或动作之间相互影响。
(3)深度学习的网络结构可以用于刻画非线性的函数关系,但是在实际任务中,采用非线性的深度学习网络结构表示值函数时,可能会导致强化学习算法的损失值波动甚至损失函数无法收敛。
也因为上述这些问题,融合强化学习和深度学习存在巨大的困难和挑战,但是下面我们要讲的DQN(deep Q-network)就很好的融合了这两种算法。

2、DQN(Depp Q-Network)算法

DQN算法是Google DeepMind团队在2013年提出来的第一个深度强化学习算法,并在2015年得到了很好的完善。在Atrari游戏中,DQN取得了惊人的实战表现,并由此引发了研究深度强化学习的热潮。

深度强化学习算法是把神经网络与前面讲的Q-learning算法相结合,利用神经网络对图像的强大的表征能力,把视频帧数据作为强化学习中的状态,并作为神经网络模型的输入;随后神经网络模型输出每个动作对应的价值(Q值),得到要执行的动作。

回顾前面讲的深度学习和强化学习的差别,我们想要把他们相互融合在一起肯定就要解决这些个问题,下面我们一个一个来解决。

2.1神经网络来近似价值函数

前面我们有提到用函数近似来逼近值函数,在这里我们用神经网络来逼近。因为神经网络在处理高维的状态空间和动作空间时更加有效。基于深度学习构建针对强化学习任务的价值网络用于求解价值函数。既然用神经网络来逼近,那肯定就需要去更新价值网络中的权重参数,用神经网络的方法就是要构建一个损失函数,这里对应于强化学习中的目标函数。而神经网络只有输入值和输出值,所以我们把状态信息s和奖励信息r输入价值网络,输出Q值,从而得到损失函数L(θ)。有了损失函数就可以很方面的对价值网络的权重参数进行迭代更新。

这里的损失函数L(θ)是通过Q-learning算法得到的,回顾之前的Q-learning算法的更新公式:
在这里插入图片描述
通过上式我们可以得到DQN的损失函数为:
L ( θ ) = E [ ( T a r g e t Q − Q ( s , a , θ ) ) 2 ] L(θ) = E[(TargetQ - Q(s,a,θ))^2] L(θ)=E[(TargetQQ(s,a,θ))2]
其中,θ为神经网络模型的权重参数。目标Q值,即TargetQ为:
T a r g e t Q = r + γ m a x a ′ Q ( s ′ , a ′ , θ ) TargetQ = r+ γmax_{a'}Q(s',a',θ) TargetQ=r+γmaxaQ(s,a,θ)

通过上式得到DQN的损失函数之后,可直接采用梯度下降算法对神经网络模型损失函数L(θ)的权重参数θ进行求解。

2.2经验回放

前面说因为深度学习的样本数据之间是独立同分布的,但是在强化学习中样本往往是关联的、非静态的,如果使用关联的数据进行深度神经网络训练,会导致模型难以收敛、损失值持续波动等问题。

所以DQN引入了经验回放机制:把每一时间步个体和环境交互得到的经验样本数据存储到经验池中,当需要进行网络训练时,从经验池中随机抽取小批量的数据进行训练。通过引入经验回放,一方面可以较为容易的对奖励数据进行备份;另一方面,随机的从经验池中抽取小批量的数据有助于解决数据之间的相关性和非静态分布等情况,使得网络更加容易收敛。(当然这里的存储池其实是电脑里的存储空间)

其中,每一个经验样本都是以一个五元组(s,a,r,s’,T)的形式进行存储的。这个五元组表示个体在状态s下执行动作a,到达新状态s’,并获得相应的奖励r。其中T为布尔类型,表示新的状态s’是否为终止状态。
环境每执行一步,个体把执行该步所获得的经验存储在经验池,在一般执行4步之后(原论文中使用4次作为预测网络的更新频次),个体从经验池中随机的抽取小批量经验样本数据。

2.3使用两个网络

在原始的Q-learning算法中,预测Q值和目标Q值使用了相同的参数模型dong,当预测Q值增大时,目标Q值与会随之增大,这在一定程度上增加了模型震荡和发散的可能性。
所以在这里用来两个神经网络模型,一个是预测网络,另一个是目标网络。
预测网络是用来评估当前状态动作对的价值函数。
目标函数用于生产前面所讲的目标价值(TargetQ)。
算法根据损失函数的更新公式来更新网络中的参数,每经过n轮迭代后,将预测网络中的参数复制给目标网络中的参数。通过引入目标函数,使得一段时间内目标Q值保持不变,并在一定程度上降低了预测Q值和目标Q值的相关性,死的训练时损失值震荡发散的可能性降低,从而提高了算法的稳定性。

3、总结

通过上面的解决办法很好的解决了深度学习和强化学习不能很好融合的问题,但是并不能说他们之间的融合很完美,还会有很多的问题。还需要我们不断的探索,慢慢完善才能逐渐的解决更复杂的问题。
下一篇我们学习深度确定性策略

下一章:深度确定性策略

参考文章:https://www.cnblogs.com/pinard/p/9714655.html

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值