ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DQN 笔记 double DQN

2021-11-30 13:02:44  阅读:253  来源: 互联网

标签:function network 动作 double 笔记 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′ 算出来的。

        所以:

  • 假设第一个 Q-function 高估了它现在选出来的动作 a,只要第二个 Q-function Q′ 没有高估这个动作 a 的值,那你算出来的就还是正常的值。
  • 假设 Q′ 高估了某一个动作的值,那也没差,因为只要前面这个 Q 不要选那个动作出来就没事了,这个就是 Double DQN 神奇的地方。

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有