其他分享
首页 > 其他分享> > DQN 笔记 double DQN

DQN 笔记 double DQN

作者:互联网

1 DQN的问题

DQN 笔记 State-action Value Function(Q-function)_UQI-LIUWJ的博客-CSDN博客 中,我们知道DQN的学习目标是

         但是,这个Q的值是被“高估”了的。因为每一次策略Π更新的时候,Π(s)都取的是最大的那个action,也即Q^\pi(S_{t+1},\pi(s_{t+1}))=max_a Q(S_{t+1},a)

        然而,实际网络环境中,由于每个状态都有一定的概率取不同的动作(policy-based network),所以实际的Q^\pi(S_{t+1},\pi(s_{t+1})) \le max_a Q(S_{t+1},a)【reward小的那些action会“向下”拉低一些Q值】,也就是说,我们回归的目标值是“高估”了的

这是double-DQN paper里的图,可以形象地说明这个“高估” 

        这边有 4 个不同的小游戏,横轴是训练的时间,红色锯齿状一直在变的线就是 Q-function 对不同的状态估计出来的平均 Q 值。有很多不同的状态,每个状态都 sample 一下,然后算它们的 Q 值,把它们平均起来,得到这条红色锯齿状Q-function。

         这条红色锯齿状的线在训练的过程中会改变,但它是不断上升的。因为 Q-function 是取决于你的策略的。学习的过程中你的策略越来越强,你得到的 Q 值会越来越大。在同一个状态, 你得到 reward 的期望会越来越大,所以一般而言,这个值都是上升的,但这是 Q-network 估测出来的值。【所以为啥Alien那里会下降,我就不得而知了】

        接下来真的去玩那个游戏,玩很多次。然后真的去算,在某一个状态, 你会得到的 Q 值到底有多少。(红色直线)

        你会发现估测出来的值远比实际的值大,在每一个游戏都是这样,都大很多。这就是“高估”的效果

         就着这个图我们再看一下double DQN的效果。

        蓝色的锯齿状的线是 Double DQN 的 Q-network 所估测出来的 Q 值。

        蓝色的无锯齿状的线是真正的 Q 值,你会发现它们是比较接近的。

2 double DQN的原理

2.1 大体思想

        在 Double DQN 里面,选动作的 Q-function 跟算值的 Q-function 不是同一个。

        在原来的 DQN 里面,你穷举所有的 a,把每一个 a 都带进去, 看哪一个 a 可以给你的 Q 值最高,那你就把那个 Q 值加上 rt​。但是在 Double DQN 里面,你有两个 Q-network:

  • 第一个 Q-network Q 决定哪一个动作的 Q 值最大(你把所有的 a 带入 Q 中,看看哪一个 Q 值最大)。
  • 你决定你的动作以后,你的 Q 值(也就是回归的目标值)是用 Q′ 算出来的。

        所以:

2.2 Q 和Q'的选取

        使用DQN 笔记 State-action Value Function(Q-function)_UQI-LIUWJ的博客-CSDN博客 第三小节说的target network

        在实现上,你有两个 Q-network:目标的 Q-network 和你会更新的 Q-network。

        所以在 Double DQN 里面,你会拿你会更新参数的那个 Q-network 去选动作,然后你拿目标网络(固定住不动的网络)去算值

        Double DQN 相较于原来的 DQN 的更改是最少的,它几乎没有增加任何的运算量,连新的网络都不用,因为原来就有两个网络了。你唯一要做的事情只有,本来你在找 Q 值最大的 a 的时候,你是用fixed的 Q′ (目标网络) 来算【也就是说,我原来更新和找最大的a都是用Q’来求得的】。现在改成用另外一个会更新的 Q-network 来算最大的a,只用Q'来更新Q-function。

标签:function,network,动作,double,笔记,Double,DQN,高估
来源: https://blog.csdn.net/qq_40206371/article/details/121629559