深度强化学习(二)-- Dueling DQN深度强化学习

基于值的深度强化算法

今天要介绍的Dueling DQN网络是对于网络架构而非算法的改进,之前的章节中提到过,通过优化动作-优势函数(A(s,a))利用状态值函数V(s)和动作值函数Q(s,a)之间的联系优化学习过程。

Dueling DQN

Dueling DQN(竞争强化网络)的思路是将原始的Q值,拆成两个部分,一部分是动作无关的值函数V(s),另一个是在这个状态下各个动作的优势函数A(s,a)。如图1-1

1-1

下图让我们看下一个Dueling DQN和传统DQN网络的区别,这个也是唯一的区别。主要的区别是在末尾出的特征拆解,上路用于预测值函数V,表示静态状态空间的本身具有的价值,一部分用于预测a,表示选择动作以后获得的额外价值。然后汇聚到一起预测A的分布。其实我们发现实际的值函数是两部分的组合,而这两部分都是未知数,又有无数种组合,如果你按照这样做会发现很少能够符合情理。所以在实际的工作中,所以要对A进行限定,强制令所有选择贪婪动作的优势函数为0.

Q(s,a,θ,α,β)=V(s,θ,β)+(A(s,a,θ,α)maxAaA(s,a,θ,α))Q(s,a, \theta, \alpha,\beta)=V(s, \theta,\beta)+(A(s,a, \theta,\alpha)-max A_{a' \in A} (s,a', \theta,\alpha))

这样我们就能固定值函数,

a=argmaxQ(s,a,θ,α,β)=argmaxA(s,a,θ,α)Q(s,a,θ,α,β)=V(s,θ,β)a^{*}=argmaxQ(s,a', \theta, \alpha,\beta)=argmaxA(s,a', \theta,\alpha) \\ Q(s,a^{*}, \theta, \alpha,\beta)=V(s, \theta,\beta)

因为同一个状态值函数是确定的,与行动无关,不会随着行为变化而变化,这样学出来的V和A更加具有实际的意义。

image.png

标签

状态值函数(V值)的标签:
V值表示在当前状态 s 下,采取任意动作的期望回报。在训练过程中,我们使用目标Q网络来估计V值,即使用目标Q网络的输出来表示状态值函数。

优势函数(Advantage值)的标签:
优势函数表示在当前状态 s 下,采取动作 a 相对于采取其他动作的优势。为了计算优势函数的标注,我们需要使用目标Q网络来估计目标Q值,并从中减去V值。

试用场景

在一般的游戏场景中,经常存在很多的状态,但是采用什么样的动作对下一步的状态转换没有什么影响,这些情况下计算动作的价值函数就没有计算状态价值函数的意义大,在频繁出现智能体采用不同的动作但是对应的值函数相等的情况下,Dueling DQN的优势会有表达的优势。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×