深度强化学习DQN网络

DQN网络

DQN(Deep Q Networks)网络属于深度强化学习中的一种网络,它是深度学习与Q学习的结合,在传统的Q学习中,我们需要维护一张Q(s,a)表,在实际运用中,Q表往往是巨大的,并且当状态和行为的组合无穷时,则无法通过查表的方式获取最优的行为,因此我们需要一个深度学习模型来拟合Q(s,a)表,即能够帮助Q算法在对应的状态下找出最优的行为,即DQN网络,其网络结构如下图所示:
DQN网络结构示意图
其中,DNN网络的训练集为:<s, a, r, s’>,标签为:Reward,损失函数如下所示:
L i ( θ i ) = E s , a , r , s ′ D i [ ( r + γ ∗ m a x a ′ Q ( s ′ , a ′ , w i − ) − Q ( s , a , w i ) ) 2 ] L_{i}(\theta_{i}) = E_{s,a,r,s' D_{i}}[(r+\gamma*max_{a'}Q(s',a',w_{i}^{-})-Q(s,a,w_{i}))^{2}]Li(θi)=Es,a,r,sDi[(r+γmaxaQ(s,a,wi)Q(s,a,wi))2]
其中,r + γ ∗ m a x a ′ Q ( s ′ , a ′ , w i − ) r+\gamma*max_{a'}Q(s',a',w_{i}^{-})r+γmaxaQ(s,a,wi) 表示当前得到的Reward加上下一状态所能获取的最大Q值,用该目标减去当前的Q值,作为误差值。

针对训练数据<s, a, r, s’>,个体每执行依次动作,都能够获取到一个训练样本,因此,在每执行依次动作后将<s, a, r, s’>放入经验池中。但是,由于状态之间都是连续的,因此依次放入的训练样本之间必然存在一定的关联,这样训练出来的神经网络容易产生过拟合现象,为了解决这个问题,我们从经验池中随机抽取少量的训练数据作为一个batch,这样既保证了训练样本时独立同分布的,又能够加快训练速率。

DQN网络的训练算法如下图所示:
DQN训练算法流程
从上面损失函数的公式L i ( θ i ) L_{i}(\theta_{i})Li(θi) 中可以看出有两个训练参数w i − w_{i}^{-}wiw i w_{i}wi ,这表示了我们需要两个神经网络DQN1和DQN2,它们的结构完全一样,但是其中的权重、偏置参数不同,一个是w i − w_{i}^{-}wi,另一个是w i w_{i}wi,其中DQN1网络,即参数w i − w_{i}^{-}wi所在的神经网络被称为Target Network网络。

之所以需要训练两个神经网络,是因为如果只有一个神经网络的话,那么随着参数w i w_{i}wi的不断更新,其学习的目标m a x a ′ Q ( s ′ , a ′ , w i − ) max_{a'}Q(s',a',w_{i}^{-})maxaQ(s,a,wi) 也在不断更新,因此算法很难收敛,而当我们使用两个神经网络DQN1和DQN2,在训练时,我们固定住学习目标m a x a ′ Q ( s ′ , a ′ , w i − ) max_{a'}Q(s',a',w_{i}^{-})maxaQ(s,a,wi)中的参数 w i − w_{i}^{-}wi,这样另一个神经网络中的参数w i w_{i}wi是针对一个固定的目标在更新,实现神经网络的训练。
其算法如下图所示:
DQN训练算法描述
以上就是深度强化学习中DQN网络的详细介绍,使用TD方法结合非线性的神经网络函数近似时可能不会收敛,但是DQN网络使用经理重现和固定的Q目标值,能够做到收敛而且算法具有很好的鲁棒性。


版权声明:本文为a_123zxy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。