double dqn report
@(paper reading)
Double DQN (https://arxiv.org/abs/1509.06461)
Thrun & Schwartz (1993) 在那个古老的年代就已经指出Q-learning中存在过度估计 (overestimation)问题。因为DQN本质上是基于Q-learning的,那么DQN中也一定存在过度估计的问题,并且一定程度上会影响DQN的性能。
由此,作者提出了Double DQN。由下表可以看到,相比Nature DQN,Double DQN的性能得到了进一步提升。
什么是overestimation?
这种现象是由Q-learning中的max操作带来的。
可以通过假设的一个例子来理解这个问题:
假设当前状态下,对于所有动作,它们实际的return value都应当是0。但是因为估计必定存在误差,所以一些动作可能返回正值,而另一些动作可能返回负值 (这里不妨假设为+0.5及-0.5)。Q-learning中用Q function返回估计值,为当前状态下的所有动作计算估计值,并选择拥有最大Q值的动作。那么问题就来了,这个最大值是+0.5,而不是0,并且每一步(在每个状态下)都会出现这个问题。这也就是Q-learning中的overestimation。随着迭代的进行,这种overestimation可能会导致策略逐渐变为一个次优解。
Double DQN
结合double q-learning的目的在于减少overestimation。
其基本思想为:将target Q中选择和评估动作分离,让它们使用不同的Q网络。
nature dqn中
YQt≡Rt+1+γmaxaQ(St+1,a;θ−t)
double dqn中
YDoubleQt≡Rt+1+γQ(St+1,argmaxaQ(St+1,a;θt);θ−t)
其中
Yt
为target,注意这两者的不同,double dqn中计算target使用了两个不同的
θ
,分别来自current q-network 以及 target q-network。current q-network负责选择动作,而带有delayed
θ
的target q-network来计算target Q值。
因为nature dqn引入了单独的target q-network,等于已经是double q了,所以double dqn在原有的架构上,基本不需要做什么改动。
至于
θ−
的更新,文中说 This second set of weights can be updated symmetrically by switching the roles of
θ
and
θ−
. 这里应该仍旧指每D步从current Q更新一次。
为什么将selection和evaluation分离可以减少overestimation?
这块感觉文章自己也没讲清楚。
接着上面的例子,把现在需要计算的Q function叫做Q1。如果用另一个同样有噪声问题的Q2来选择动作,带入到Q1中去,留意上面的等式,这里的Q1并没有取max的操作,所以得到的结果可正可负,平均下来就会接近于0,得到一个相对无偏的结果。
存在问题
overestimation是个老问题,但是显然之前都没有意识到它是这么common and severe,故而double dqn是一次比较大的提升。
然而,虽然这篇文章里没有提到,但作者在他10年的double q-learning一文里表示,double q-learning虽然能有有效降低overestimation的问题,但是有时也会导致underestimation。
double DQN会不会反而导致underestimation的出现?有没有可能实现一种unbiased q-learning?
ps: 为什么编辑的公式后面会有个竖线??