价值学习
了解dueling network之前你还需要一定的DQN基础,可以看我的上一篇博客简单了解一下(王树森强化学习笔记——价值学习),或者学习王树森教授的强化学习课程。
Dueling DQN
advantage function
在引入优势函数之前我们先复习一下之前所学的最优动作价值函数和最优状态价值函数:
-
最优动作价值函数 Q ∗ Q^* Q∗:
Q ∗ ( s , a ) = m a x π Q ( s , a ) Q^*(s,a)=max_{\pi}Q(s,a) Q∗(s,a)=maxπQ(s,a) -
最优状态价值函数 V ∗ V^* V∗:
V ∗ ( a ) = m a x π V ( s ) V^*(a)=max_{\pi}V(s) V∗(a)=maxπV(s)
其中 π \pi π是策略函数,用来控制agent的行为,当agent学习到了最好的策略函数时,此时的动作价值函数和状态价值函数可以取到最大值,这也是为什么要用神经网络来近似这两个函数的原因。
最优优势函数
A
∗
A^*
A∗:
A
∗
(
s
,
a
)
=
Q
∗
(
s
,
a
)
−
V
∗
(
s
)
A^*(s,a)=Q^*(s,a)-V^*(s)
A∗(s,a)=Q∗(s,a)−V∗(s)
将最优状态价值函数作为基准,在当前状态下,用最优动作价值函数减去最优价值函数,可以衡量出当前状态下动作的优势值,即当前做什么动作接下来是有利的。
-
理论一: V ∗ ( s ) = m a x a Q ∗ ( s , a ) V^*(s)=max_aQ^*(s,a) V∗(s)=maxaQ∗(s,a)
- 即要想让状态价值函数最优,每次应该选择执行动作价值函数中动作价值最大的动作。
-
理论二: Q ∗ ( s , a ) = V ∗ ( s ) + A ∗ ( s , a ) − m a x a A ∗ ( s , a ) Q^*(s,a)=V^*(s)+A^*(s,a)-max_aA^*(s,a) Q∗(s,a)=V∗(s)+A∗(s,a)−maxaA∗(s,a)
-
我们对 A ∗ ( s , a ) = Q ∗ ( s , a ) − V ∗ ( s ) A^*(s,a)=Q^*(s,a)-V^*(s) A∗(s,a)=Q∗(s,a)−V∗(s)等式两边同时取最大化操作,根据理论一可以得到: m a x a A ∗ ( s , a ) = m a x a Q ∗ ( s , a ) − V ∗ ( s ) = 0 max_aA^*(s,a)=max_aQ^*(s,a)-V^*(s)=0 maxaA∗(s,a)=maxaQ∗(s,a)−V∗(s)=0,即得到 m a x a A ∗ ( s , a ) = 0 max_aA^*(s,a)=0 maxaA∗(s,a)=0
-
∵ A ∗ ( s , a ) = Q ∗ ( s , a ) − V ∗ ( s ) ∴ Q ∗ ( s , a ) = V ∗ ( s ) + A ∗ ( s , a ) 又 ∵ m a x a A ∗ ( s , a ) = 0 ∴ Q ∗ ( s , a ) = V ∗ ( s ) + A ∗ ( s , a ) − m a x a A ∗ ( s , a ) \because A^*(s,a)=Q^*(s,a)-V^*(s)\\\therefore Q^*(s,a)=V^*(s)+A^*(s,a)\\又\because max_aA^*(s,a)=0\\\therefore Q^*(s,a)=V^*(s)+A^*(s,a)-max_aA^*(s,a) ∵A∗(s,a)=Q∗(s,a)−V∗(s)∴Q∗(s,a)=V∗(s)+A∗(s,a)又∵maxaA∗(s,a)=0∴Q∗(s,a)=V∗(s)+A∗(s,a)−maxaA∗(s,a)
-
Dueling Network
由理论二我们可以对DQN网络进行改进:
使用一个神经网络来近似最优状态价值函数 V ∗ V^* V∗,记作 V ∗ ( s ; w V ) V^*(s;w^V) V∗(s;wV),其中 w V w^V wV是神经网络的参数.
如上图所示,首先对图像进行卷积提取图像的特征,然后用一个全连接层来近似最优状态价值函数,输出对这个状态的价值预测V。
使用一个神经网络来近似最优动作价值函数 A ∗ A^* A∗,记作 A ∗ ( s , a ; w A ) A^*(s,a;w^A) A∗(s,a;wA),其中 w A w^A wA是神经网络的参数如下,图所示:
A ∗ A^* A∗的输出和原始的DQN一致,是对每个动作的优势打分。
根据理论二,对最优动作价值函数
Q
∗
Q^*
Q∗,我们可以写成:
Q
∗
(
s
,
a
;
w
V
,
w
A
)
=
V
∗
(
s
;
w
V
)
+
A
∗
(
s
,
a
;
w
A
)
−
m
a
x
a
A
∗
(
s
,
a
;
w
A
)
Q^*(s,a;w^V,w^A)=V^*(s;w^V)+A^*(s,a;w^A)-max_aA^*(s,a;w^A)
Q∗(s,a;wV,wA)=V∗(s;wV)+A∗(s,a;wA)−maxaA∗(s,a;wA)
注意,这里只是将原始的DQN网络结构进行了改变,实际dueling network所做的还是对最优动作价值函数
Q
∗
Q^*
Q∗近似,所以,dueling network和DQN的训练方法完全一致!
根据上式,我们可以将DQN的网络改成下面的结构:
因为 A ∗ ( s , a ; w A ) A^*(s,a;w^A) A∗(s,a;wA)和 V ∗ ( s ; w V ) V^*(s;w^V) V∗(s;wV)都需要用到图像的特征,所以让他们共享卷积层,经过两个全连接层得到红色和蓝色向量。其中红色的向量代表的是 A ∗ ( s , a ; w A ) A^*(s,a;w^A) A∗(s,a;wA)的输出,蓝色向量是 V ∗ ( s ; w V ) V^*(s;w^V) V∗(s;wV)的输出,接下来,根据公式进行拼接,将红色向量的每个值加上蓝色向量的值,再减去红色向量中的最大值,就得到了紫色的向量,即Q值。
Overcome non-identifiability
上面的学习我们明白了dueling network是什么,怎么做的,但是还有一个问题,就是为什么要强行执行 − m a x a A ∗ ( s , a ; w A ) -max_aA^*(s,a;w^A) −maxaA∗(s,a;wA)这一动作,而不是直接将两个网络的输出相加,因为从公式上来说, m a x a A ∗ ( s , a ; w A ) max_aA^*(s,a;w^A) maxaA∗(s,a;wA)的值为0,是可有可无的,下面来分析一下为什么要这么做?
- 不确定性:假设我们不进行 − m a x a A ∗ ( s , a ; w A ) -max_aA^*(s,a;w^A) −maxaA∗(s,a;wA)这一操作,只将两个网络的输出想加,那么这样的两个网络是不确定的,例如我们令近似出来的 V ∗ ( s ; w V ) = V ∗ − 10 V^*(s;w^V)=V^*-10 V∗(s;wV)=V∗−10,近似出来的 A ∗ ( s , a ; w A ) = A ∗ + 10 A^*(s,a;w^A)=A^*+10 A∗(s,a;wA)=A∗+10,那么 Q ∗ ( s , a ) = V ∗ + A ∗ = V ∗ ( s ; w V ) + A ∗ ( s , a ; w A ) Q^*(s,a)=V^*+A^*=V^*(s;w^V)+A^*(s,a;w^A) Q∗(s,a)=V∗+A∗=V∗(s;wV)+A∗(s,a;wA),这样的网络有无数个。
- 不确定性会带来什么危害呢?在训练中,如果神经网络A和V上下波动并且幅度相同方向相反,那么dueling network的输出完全一致,这会导致网络不再关注V网络和A网络的值,而是关注最后的输出值,显然这是不对的,使用 Q ∗ ( s , a ; w V , w A ) = V ∗ ( s ; w V ) + A ∗ ( s , a ; w A ) − m a x a A ∗ ( s , a ; w A ) Q^*(s,a;w^V,w^A)=V^*(s;w^V)+A^*(s,a;w^A)-max_aA^*(s,a;w^A) Q∗(s,a;wV,wA)=V∗(s;wV)+A∗(s,a;wA)−maxaA∗(s,a;wA)可以解决这个问题,同样的,如果V和A上下波动,幅度相同但方向相反,而此时 Q ∗ Q^* Q∗的值也会跟着浮动,这样最后训练好的V和A网络会趋于稳定。
- 实际上在训练中,dueling network常常采用 Q ∗ ( s , a ; w V , w A ) = V ∗ ( s ; w V ) + A ∗ ( s , a ; w A ) − m e a n a A ∗ ( s , a ; w A ) Q^*(s,a;w^V,w^A)=V^*(s;w^V)+A^*(s,a;w^A)-mean_aA^*(s,a;w^A) Q∗(s,a;wV,wA)=V∗(s;wV)+A∗(s,a;wA)−meanaA∗(s,a;wA)而不是减去最大化 A ∗ A^* A∗的值,因为实验结果表明减去均值最终取得的效果要更好。
小结
-
dueling network实际上就是将DQN的网络架构进行了更改,其更改的理论依据为:
Q ∗ ( s , a ; w V , w A ) = V ∗ ( s ; w V ) + A ∗ ( s , a ; w A ) − m e a n a A ∗ ( s , a ; w A ) Q^*(s,a;w^V,w^A)=V^*(s;w^V)+A^*(s,a;w^A)-mean_aA^*(s,a;w^A) Q∗(s,a;wV,wA)=V∗(s;wV)+A∗(s,a;wA)−meanaA∗(s,a;wA) -
dueling network控制agent做决策的原理和DQN一样,所以训练dueling network和训练DQN的方法也是一样的。
-
训练dueling network是训练整个网络,而不是要单独训练 V ∗ V^* V∗和 A ∗ A^* A∗这两个网络。