double dqn report

来源:互联网 发布:洛克王国手机辅助软件 编辑:程序博客网 时间:2024/04/29 19:40

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中YQtRt+1+γmaxaQ(St+1,a;θt)
double dqn中YDoubleQtRt+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值。
Alt text

因为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: 为什么编辑的公式后面会有个竖线??

0 0
原创粉丝点击