Deep Reinforcement Learning with Double Q-learning
文章地址:
https://arxiv.org/abs/1509.06461
摘要
写这篇文章的原因:流行的Q-Learning算法在某些条件下会产生高估动作值。然而,这种高估是否是普遍存在、是否影响算法的结果、是否可以预防,都没有被研究。
论文干了什么:文章通过使用Q-Learning算法在Atari 2600进行实验,证明了高估确实普遍存在,并且产生了消极影响。通过Double Q-learning的对比,证明这种高估可以被解决,实验部分提出了Double DQN,与DQN做对比,结果是不仅减少了高估,而且有更好的表现。
因为文章是针对Q-Learning算法中的高估问题写的,因此文章从介绍Q-Learning高估问题起笔:
高估产生的原因是在估计动作价值时,使用了maxization操作。之前的研究将高估归因于函数近似不够灵活,以及噪声(函数近似不够灵活:即由于函数的拟合能力有限,造成对动作价值的估计不够准确。噪声:由于环境原因造成我们对动作价值的估计不够准确。在下文的实验中也针对这两个方面进行了实验探究。)本文则将这两个原因统一起来,找到了根本原因:动作价值预测不准确。(即不管你是什么原因导致动作价值预测不准确,都会产生高估)但学习过程中,动作价值预测不准确是常见的,因此高估也是普遍的。
过估计是否会在实践中产生负面影响也是一个悬而未决的问题,乐观的价值估计本事不一定是一个问题,如果所有估计都一致地被高估,那么算法对每个操作的相对偏好就会被保留,结果就不一定会变得糟糕。在另外一篇论文中提到乐观主义在面对不确定性时是一种常用的技术。(在探索时,我们使用贪心策略,即以 1 − ϵ 1-\epsilon 1−ϵ的概率选取最优动作,以 ϵ \epsilon ϵ的概率随机选择动作,如果以乐观主义(即某个动作的价值较高),那么它成为最优动作的概率就较高,被选择的概率也就越高,即会用更多轮次的交互对该动作的价值进行估计)可是如果过估计是不一致的并且不是集中在我们想要学习更多的状态,那就可能对最终策略产生消极影响(收敛到次优策略)。
为了测试过估计的发生规模,作者研究了DQN算法的表现。DQN是Q-learning和灵活的深度神经网络的结合,并且在Atari2600游戏中达到了人类水平。这样的设置对Q-learning而言是从最佳情况下考虑的,因为深度神经网络有较小的渐进近似误差,确定性的环境防止了噪声的有害影响。(即尽量减少之前提到的两种情况)但即使在这种场景下,DQN仍然会产生对动作价值的高估。
论文在Double Q-learning的基础上,使用深度神经网络近似Q函数构造了一个新的算法Double DQN。
Background
在给定策略
π
\pi
π的情况下,在状态
s
s
s下动作
a
a
a的真实价值是:
Q
π
(
s
,
a
)
≡
E
[
R
1
+
γ
R
2
+
.
.
.
∣
S
0
=
s
,
A
0
=
a
,
π
]
Q_\pi (s,a)\equiv \mathbb{E} [R_1+\gamma R_2+...|S_0=s,A_0=a,\pi]
Qπ(s,a)≡E[R1+γR2+...∣S0=s,A0=a,π]最优价值
Q
∗
(
s
,
a
)
=
max
π
Q
π
(
s
,
a
)
Q_*(s,a)=\max_\pi Q_\pi (s,a)
Q∗(s,a)=maxπQπ(s,a),选择每个状态中的价值最高的动作就能得到最优策略。
DQN
定义一个参数化Q函数:
Q
(
s
,
a
;
θ
t
)
Q(s,a;\theta_t)
Q(s,a;θt),参数
θ
\theta
θ的更新公式如下:
θ
t
+
1
=
θ
t
+
α
(
Y
t
Q
−
Q
(
S
t
,
A
t
;
θ
t
)
)
∇
θ
t
Q
(
S
t
,
A
t
;
θ
t
)
\theta_{t+1}=\theta_t + \alpha (Y_t^Q-Q(S_t,A_t;\theta_t))\nabla_{\theta_t}Q(S_t,A_t;\theta_t)
θt+1=θt+α(YtQ−Q(St,At;θt))∇θtQ(St,At;θt) 其中
α
\alpha
α是更新步长。
Y
t
Q
Y_t^Q
YtQ是更新目标,公式表示为:
Y
t
Q
=
R
t
+
1
+
γ
max
a
Q
(
S
t
+
1
,
a
;
θ
t
)
Y_t^Q = R_{t+1}+\gamma \max_a Q(S_{t+1},a;\theta_t)
YtQ=Rt+1+γamaxQ(St+1,a;θt)(原文中并没有直接说是DQN而是说Q-learning,因为函数近似的方式有很多,不一定是DQN(深度神经网络),此处简单起见直接写DQN(最流行,本文用到的也是这个))
对DQN的两个提升方法是:
(1)加入目标网络
Q
θ
−
Q_{\theta^-}
Qθ−,使用目标网络后的DQN的目标的计算公式为:
Y
t
D
Q
N
=
R
t
+
1
+
γ
max
a
Q
(
S
t
+
1
,
a
;
θ
t
−
)
Y_t^{DQN} = R_{t+1}+\gamma \max_a Q(S_{t+1},a;\theta_t^-)
YtDQN=Rt+1+γamaxQ(St+1,a;θt−)(2)经验回放(此处略,之后会再专门写关于阅读经验回放的博客)
Double Q-learning
在原来的Q-learning和DQN算法中,因为计算目标值
Y
t
Y_t
Yt时用到了最大化的操作,导致产生高估的可能性变大。
上面的目标值(没有使用目标网络)的计算公式可以展开为:
Y
t
Q
=
R
t
+
1
+
γ
Q
(
S
t
+
1
,
arg max
a
Q
(
S
t
+
1
,
a
;
θ
t
)
;
θ
t
)
Y_t^Q = R_{t+1}+\gamma Q(S_{t+1},\argmax_a Q(S_{t+1},a;\theta_t);\theta_t)
YtQ=Rt+1+γQ(St+1,aargmaxQ(St+1,a;θt);θt)公式中使用同一个Q网络选择一个最好的动作,再使用同一个Q网络计算其Q值(就相当于一个体操运动员,自己上场表演了一场,然后自己给自己的动作打了一个分,如果这个运动员的动作已经是最好的,那他给自己打了一个最高分是合理的,但如果这个运动员的动作不是最好的,但他认为自己是最好的,就产生了高估),目标值偏大就会导致Q网络向一个高估的方向更新,导致最终策略的高估。
在Double Q-learning中目标值的公式如下:
Y
t
D
o
u
b
l
e
Q
=
R
t
+
1
+
γ
Q
(
S
t
+
1
,
arg max
a
Q
(
S
t
+
1
,
a
;
θ
t
)
;
θ
t
′
)
Y_t^{DoubleQ} = R_{t+1}+\gamma Q(S_{t+1},\argmax_a Q(S_{t+1},a;\theta_t);\theta_t^{'})
YtDoubleQ=Rt+1+γQ(St+1,aargmaxQ(St+1,a;θt);θt′)从公式中可以看到,Double Q-learning使用了参数为
θ
t
\theta_t
θt的网络选取了值最大的动作(这个网络就是真实在环境中探索时选取动作所使用的网络),使用参数为
θ
t
′
\theta_t^{'}
θt′的网络对动作的价值进行估计(相当于不再让运动员给自己打分,而是让另一个人给他打分)。可以交换
θ
t
\theta_t
θt和
θ
t
′
\theta_t^{'}
θt′的角色来对称更新两个网络的参数。
Overoptimism due to estimation errors
Thrun 和 Schwartz 提出了当随机误差均匀分布在区间 [ − ϵ , ϵ ] [-\epsilon,\epsilon] [−ϵ,ϵ]时,Q-learning算法每个目标值的过估计可达到 γ ϵ m − 1 m + 1 \gamma\epsilon\frac{m-1}{m+1} γϵm+1m−1,其中m是动作数。
在本节中,更普遍地证明证明了任何类型的偏差都可能导致高估偏差,无论偏差是由什么原因引起的。然而由于在训练开始时,动作的初始值是未知的,因此误差是普遍存在的,因此高估也是普遍存在的。上面给出了对于特定设置下的高估上限,本文推导出了高估的下限。
理论1:考虑一个状态s,对于一些
V
∗
(
s
)
V_*(s)
V∗(s),所有真实最优动作在
Q
∗
(
s
,
a
)
=
V
∗
(
s
)
Q_*(s,a)=V_*(s)
Q∗(s,a)=V∗(s)相等。令
Q
t
Q_t
Qt是任意价值估计,这个价值估计在
∑
a
(
Q
t
(
s
,
a
)
−
V
∗
(
s
)
)
=
0
\sum_a (Q_t(s,a)-V_*(s))=0
∑a(Qt(s,a)−V∗(s))=0的意义上是总体无偏的,但并不是全部正确,例如:
1
m
∑
a
(
Q
t
(
s
,
a
)
−
V
∗
(
s
)
)
2
=
C
\frac{1}{m}\sum_a(Q_t(s,a)-V_*(s))^2=C
m1∑a(Qt(s,a)−V∗(s))2=C,其中
m
≥
2
m \geq 2
m≥2是在状态s下的动作数,
C
>
0
C>0
C>0。在这些条件下,
max
a
Q
t
(
s
,
a
)
≥
V
∗
(
s
)
+
C
m
−
1
\max_a Q_t(s,a) \geq V_*(s) + \sqrt{\frac{C}{m-1}}
maxaQt(s,a)≥V∗(s)+m−1C。这个下界是紧的。在相同条件下,Double Q-learning的绝对误差下界是0。
(我的理解这个定理的意思是:
Q
t
(
s
,
a
)
Q_t(s,a)
Qt(s,a)的均值是无偏的,但方差是有偏的,在这个情况下,Q-learning在状态s最优动作的Q值比真实的最优Q值高
C
m
−
a
\sqrt{\frac{C}{m-a}}
m−aC,而Double Q-learning的估计的绝对误差下限为0,即
max
a
Q
t
(
s
,
a
)
=
V
∗
(
s
)
+
C
m
−
1
\max_a Q_t(s,a) = V_*(s) + \sqrt{\frac{C}{m-1}}
maxaQt(s,a)=V∗(s)+m−1C)
这个定理不需要假设不同动作的估计误差是独立的,即使值估计的平均值是正确的,任何来源的估计错误都会使估计值比真正的最优值大。
从理论1可以推导出:对Q-learning来说动作数越多,这个误差的下限越低。但这个只是一个假象,需要非常特殊的值才能够到达这个下限。然后作者进行了一个实验来推翻这个说法,证明了Q-learning的高估误差随着动作数增加而增加。而Double Q-learning是无偏的(动作数增加对误差的影响不大)
因此另一个说法是:在状态s,对于所有真实最优动作价值在
Q
∗
(
s
,
a
)
=
V
∗
(
s
)
Q_*(s,a)=V_*(s)
Q∗(s,a)=V∗(s)处相等,假设估计误差
Q
t
(
s
,
a
)
−
Q
∗
(
s
,
a
)
Q_t(s,a)-Q_*(s,a)
Qt(s,a)−Q∗(s,a)独立均匀分布在[-1,1]上,则
E
[
max
a
Q
t
(
s
,
a
)
−
V
∗
(
s
)
=
m
−
1
m
+
1
]
\mathbb{E}[\max_aQ_t(s,a)-V_*(s)=\frac{m-1}{m+1}]
E[amaxQt(s,a)−V∗(s)=m+1m−1]
下面的一大部分都在讲解作者进行的一项实验,这里简单介绍:
作者设计了这样一个实验:每个状态有10个离散的动作,但每个状态的真实最优动作值函数仅仅取决于状态,即每个动作在该状态下的真实Q值都是相同的,并使用函数近似来拟合每个状态的真实最优Q值,这个函数是一个d维的多项式。上图中,第一行和第二行使用的是d=6的多项式,第三行使用的是d=9的多项式,第一行的真实最优Q函数定义为
Q
∗
(
s
,
a
)
=
sin
(
s
)
Q_*(s,a)=\sin(s)
Q∗(s,a)=sin(s),第二行和第三行真实最优Q函数定义为
Q
∗
(
s
,
a
)
=
2
exp
(
−
s
2
)
Q_*(s,a)=2\exp(-s^2)
Q∗(s,a)=2exp(−s2),左图紫线显示了真实的最优Q值,绿点显示了用于拟合真实最优Q函数采样的点,绿线是函数对单个动作价值的估计。中间的图显示的是对多个动作的值估计以及最大的值估计。最后一张图是显示偏差。
左图显示了在d较小时,函数近似不够灵活,因此不能很好拟合造成偏差;当d较大时,由于左侧采样的间隔较大,因此左侧的偏差较大。实验主要揭示了上面所提到的,不论值估计的误差是由什么原因产生的,都会造成高估。
Double DQN
Double Q-learning减少过估计的方法是将目标值计算时的最大化运算分解为动作选择和动作价值估计。可以使用DQN中的目标网络来作为动作价值估计的网络。最终的目标值计算公式为:
Y
t
D
o
u
b
l
e
D
Q
N
=
R
t
+
1
+
γ
Q
(
S
t
+
1
,
arg max
a
Q
(
S
t
+
1
,
a
;
θ
t
)
;
θ
t
−
)
Y_t^{DoubleDQN} = R_{t+1}+\gamma Q(S_{t+1},\argmax_a Q(S_{t+1},a;\theta_t);\theta_t^{-})
YtDoubleDQN=Rt+1+γQ(St+1,aargmaxQ(St+1,a;θt);θt−)目标网络的更新和DQN中相同,即周期性地从选择动作的网络中copy。
Empirical result
这一章主要讲了实验。实验主要是验证DQN的高估并验证Double DQN的高估较弱。
主要心得:
(1)离散环境中获取真实价值的方法:通过运行几个最优学习策略,并计算实际累积奖励来获得真实价值的平均值。(最上方四个图中蓝线的计算方式)
(2)作者的算法比较简单,理论部分也不多,但实验讲解的很详细,设计的也很巧妙,尤其是指明了在哪个论文实验的基础上进行的。
(3)一个评估鲁棒性的方法:从人类专家序列中选择起始点(其实是作者参考另一篇论文),并证明了DoubleDQN有更强的鲁棒性。
(4)Good solutions must therefore rely heavily on the learning algorithm — it is not practically feasible to overfit the domain by relying only on tuning.
我认为这篇文章的主要看点在于对过估计问题的分析,以及实验方法(虽然这篇文章的实验方法也是借鉴之前的论文)。文末的证明使用了反证法,但因为我看的一知半解的,就没有写。