【5分钟 Paper】Deep Reinforcement Learning with Double Q-learning

简介: 【5分钟 Paper】Deep Reinforcement Learning with Double Q-learning
  • 论文题目:Deep Reinforcement Learning with Double Q-learning

所解决的问题?

  Q-Learning算法中存在动作值函数过估计(overestimate action values)的问题(因为其更新方程中包含一个maximization动作值函数的一项),那这样的过估计问题是否会对其算法性能有所影响呢?能不能去避免这样的一种过估计问题呢?

背景

  如果所有的动作值函数都被均匀地加上一个常数,似乎这不会对策略有什么影响。问题就在于当你有一个动作值函数过估计之后在加上探索和利用技术之后,那可能就会偏向于之前就过估计的动作值函数,而导致有些动作根本就没选到,那就会影响策略学习的好坏了。那么得到的就是一个次优解。

所采用的方法?

  DQN中就是使用相同的值函数来选择和评估动作,因此作者这里是将其拆开,具体公式如下:

  假设你有两个网络θ θ 。一个用来选择动作,决定greedy policy的,另一个用来决定动作值函数的。为了方便与DQN算法对比,这里先写DQN的公式:

image.png

 两者主要的不同就是这个Target中的策略选择和策略评估是否是用的同一个网络。

取得的效果?

  实验作者是用多项式通过采样点拟合曲线。原文如下: The estimate is a d-degree polynomial that is fit to the true values at sampled states, where d = 6 (top and middle rows) or d = 9 (bottom row)。下图中:第一行与第二行的实验对比是为了分析过估计问题的普遍性、第二行跟第三行的实验是为了分析过估计问题与近似函数拟合能力的关系。

  作者设计这个环境,最优动作值函数只与当前状态有关。最上面的最优动作值函数被设计为:Q ∗ ( s , a ) = s i n ( s ) Q_{*}(s,a)=sin(s)Q(s,a)=sin(s),中间和下面的那条线被设计为Q ∗ ( s , a ) = 2 e x p ( − s 2 ) Q_{*}(s,a)=2 exp(-s^{2})Q(s,a)=2exp(s2)。左边那幅图中展示的是对状态动作值函数的近似,绿色的点是做实验过程中的采样点。

  在采样点上的拟合效果还是很好的,但整个值函数方程的逼近效果还不是很理想。尤其是采样点左侧的误差较大。

  作者之后就开始跟最大的作比较,最右边的图最能说明Double DQN能减缓过估计问题了。细节描述如下图所示:

  上面这个实验还说了了一个问题,就是近似函数的拟合能力增强往往对已知数据点拟合效果较好,对未知数据点拟合误差较大。

  上面说明了过估计是会存在的,那过估计会不会影响学习最优策略呢

  实际上也是会的。其实验结果如下:

  从上图中的下方这两幅图可以看出,随着过估计值函数增加,其得分性能下降,所以过估计其实是会损害算法的得分性能。

所出版信息?作者信息?

  2016DeepMind团队发表在ational conference on artificial intelligence上的一篇文章,作者Hado van Hasselt,谷歌DeepMind研究科学家,Rich Sutton同事。

定理证明

Theorem1

image.png


下图展示了,过估计的最低下界会随着动作空间维度增加而减少。

2020021611494360.png

定理1 证明


image.png

image.png

Theorem2

  定理2 描述


image.png

定理2 证明


image.png


 这意味着:

image.png

参考链接


  以前解决过估计的问题是不充分地做值函数近似

  • Thrun and A. Schwartz. Issues in using function approximation for reinforcement learning. In M. Mozer, P. Smolensky, D. Touretzky, J. Elman, and A. Weigend, editors, Proceedings of the 1993 Connectionist Models Summer School, Hillsdale, NJ, 1993. Lawrence Erlbaum.

  或者加一点噪声

  • van Hasselt. Double Q-learning. Advances in Neural Information Processing Systems, 23:2613–2621, 2010.
  • van Hasselt. Insights in Reinforcement Learning. PhD thesis, Utrecht University, 2011.

我的微信公众号名称:深度学习与先进智能决策

微信公众号ID:MultiAgent1024

公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

相关文章
|
机器学习/深度学习 算法 API
论文笔记之:Deep Reinforcement Learning with Double Q-learning
Deep Reinforcement Learning with Double Q-learning Google DeepMind   Abstract    主流的 Q-learning 算法过高的估计在特定条件下的动作值。
1979 0
|
5月前
|
存储 Java
百度搜索:蓝易云【Java语言之float、double内存存储方式】
由于使用IEEE 754标准进行存储,float和double类型可以表示非常大或非常小的浮点数,并且具有一定的精度。然而,由于浮点数的特性,它们在进行精确计算时可能会存在舍入误差。在编写Java程序时,需要注意使
59 0
|
2月前
|
C#
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
C# 字节数组与INT16,float,double之间相互转换,字符数组与字符串相互转换,
37 1
|
7月前
|
存储 C语言
C 语言实例 - 计算 int, float, double 和 char 字节大小
C 语言实例 - 计算 int, float, double 和 char 字节大小。
35 1
|
9月前
|
C++
C/C++ 关于double和float两种类型的区别
C/C++ 关于double和float两种类型的区别
C/C++ 关于double和float两种类型的区别
|
6月前
|
存储 C语言
计算 int, float, double 和 char 字节大小
C 语言实例 - 计算 int, float, double 和 char 字节大小。
44 1
|
6月前
|
Java
float与double精度丢失问题
float与double精度丢失问题
|
7月前
float和double的区别
float和double的区别
59 0
|
8月前
|
存储 Java 编译器
Java语言之float、double内存存储方式
Java语言之float、double内存存储方式
147 0
|
8月前
|
存储 关系型数据库 MySQL
【必看】MySQL中float、double、decimal三个浮点数据类型的区别与总结!
你还不知道MySQL中float、double、decimal三个浮点类型的区别吗?快来看看吧!
107 0
【必看】MySQL中float、double、decimal三个浮点数据类型的区别与总结!

热门文章

最新文章