DQN网络
DQN(Deep Q Networks)网络属于深度强化学习中的一种网络,它是深度学习与Q学习的结合,在传统的Q学习中,我们需要维护一张Q(s,a)表,在实际运用中,Q表往往是巨大的,并且当状态和行为的组合无穷时,则无法通过查表的方式获取最优的行为,因此我们需要一个深度学习模型来拟合Q(s,a)表,即能够帮助Q算法在对应的状态下找出最优的行为,即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,s′Di[(r+γ∗maxa′Q(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+γ∗maxa′Q(s′,a′,wi−) 表示当前得到的Reward加上下一状态所能获取的最大Q值,用该目标减去当前的Q值,作为误差值。
针对训练数据<s, a, r, s’>,个体每执行依次动作,都能够获取到一个训练样本,因此,在每执行依次动作后将<s, a, r, s’>放入经验池中。但是,由于状态之间都是连续的,因此依次放入的训练样本之间必然存在一定的关联,这样训练出来的神经网络容易产生过拟合现象,为了解决这个问题,我们从经验池中随机抽取少量的训练数据作为一个batch,这样既保证了训练样本时独立同分布的,又能够加快训练速率。
DQN网络的训练算法如下图所示:
从上面损失函数的公式
L
i
(
θ
i
)
L_{i}(\theta_{i})
Li(θi) 中可以看出有两个训练参数
w
i
−
w_{i}^{-}
wi− 和
w
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}^{-})
maxa′Q(s′,a′,wi−) 也在不断更新,因此算法很难收敛,而当我们使用两个神经网络DQN1和DQN2,在训练时,我们固定住学习目标
m
a
x
a
′
Q
(
s
′
,
a
′
,
w
i
−
)
max_{a'}Q(s',a',w_{i}^{-})
maxa′Q(s′,a′,wi−)中的参数
w
i
−
w_{i}^{-}
wi−,这样另一个神经网络中的参数
w
i
w_{i}
wi是针对一个固定的目标在更新,实现神经网络的训练。
其算法如下图所示:
以上就是深度强化学习中DQN网络的详细介绍,使用TD方法结合非线性的神经网络函数近似时可能不会收敛,但是DQN网络使用经理重现和固定的Q目标值,能够做到收敛而且算法具有很好的鲁棒性。