专栏首页深度强化学习实验室DQN系列(1):Double Q-learning

DQN系列(1):Double Q-learning

深度强化学习实验室报道

作者:DeepRL

论文地址: https://papers.nips.cc/paper/3964-double-q-learning.pdf

本论文由DeepMind发表于2015年NIPS的一篇论文,作者Hasselt。

前言: Q-Learning算法由于受到大规模的动作值过估计(overestimation)而出现不稳定和效果不佳等现象的存在,而导致overestimation的主要原因来自于最大化值函数(max)逼近,该过程目标是为了最大的累计期望奖励,而在这个过程中产生了正向偏差。而本文章作者巧妙的是使用了两个估计器(double estimator)去计算Q-learning的值函数,作者将这种方法定义了一个名字叫“Double Q-learning”(本质上一个off-policy算法),并对其收敛过程进行了证明(缺点:当然double Q-learning算法有时会低估动作值,但不会像Q学习那样遭受过高估计)

1. 问题及原因

"过估计" (overestimate) 过估计是指对一系列数先求最大值再求平均,通常比先求平均再求最大值要大(或相等,数学表达为:

一般来说Q-learning方法导致overestimation的原因归结于其更新过程,其表达为:

其中的 表示为最大化action-value, 而更新最优化过程如下:

对于任意的 来说,最优值函数 的更新依赖于 , 从公式中可以看出,我们把N个Q值先通过取max操作之后,然后求平均(期望),会比我们先算出N个Q值取了期望之后再max要大。这就是overestimate的原因。

注: 一般用于加速Q-learning算法的方法有:Delayed Q-learning, Phased Q-learning, Fitted Q-iteration等

2. Estimator原理与思想

通常情况下对于一个集合中的变量 来说,奖励的最大化累计期望表示为:

那么在实际的过程中,对于每个 ,我们定义 为采样,其中的 表示为对于所有采样的一个子集,假设 满足独立同分布情况, 那么期望值的“无偏估计”可以通过计算每个变量的样本平均值来获得,其计算方法如下:

注: 是 的估计器

这个过程是一个无偏估计,因为每一个采样 是一个对 的无偏估计,因此,近似中的误差仅由估计中的 “方差“ 组成,当我们获得更多样本时会减小。

为了后面方便理解,这里我们定义两个函数:“概率密度函数”(Probability Density Function, PDF)和“累积分布函数”(Cumulative Distribution Function, CDF),概率密度函数表示个 ,则累积分布函数表示为: ,同样的道理,对于PDF和CDF来说估计器分别表示为和。

补充1. 概率密度函数, 其实就是给定一个值, 判断这个值在该正态分布中所在的位置后, 获得其他数据高于该值或低于该值的比例,其中的曲线就是概率密度函数(PDF),通常情况下pdf的曲线下面积(AUC)总和为1,且曲线末端不会接触到x轴(换句话说, 我们不可能100%的确定某件事)。

2. 累积分布函数累积分布函数 (CDF) 计算给定 x 值的累积概率。可使用 CDF 确定取自总体的随机观测值将小于或等于特定值的概率。还可以使用此信息来确定观测值将大于特定值或介于两个值之间的概率。

例如,罐装苏打水的填充重量服从正态分布,且均值为 12 盎司,标准差为 0.25 盎司。概率密度函数 (PDF) 描述了填充重量的可能值的可能性。CDF 提供每个 x 值的累积概率。此处参考PDF-CDF指导

(1)单估计器方法(Single Estimator)

所谓的单估计就是使用一组估计量的最大值作为近似值,

即近似的最好的方式就是最大化估计器,表示为:

表示为估计器,而此处对于最大的估计器来说,它是依赖于 的,若要求取PDF,首先需要考虑CDF,但它的概率分布中最大的估计器小于等于,这等同于所有的估计均小于等于,数学表示为:

那么是对的无偏估计,详细表示为:

(2)双估计器方法(Double Estimator)

对每个变量使用两个估计器,并将估计器的选择与其值解耦。

问题:单一估计器方法导致过高估计可能会对使用此方法的算法(例如Q学习)产生很大的负面影响。为了解决这个问题,double estimator方法用来解决过高估计。

那么对于原来的 来说,此处我们需要定义两个估计器:和,他们分别表示为:,,然后两个估计器都使用采样的样本子集来更新,其规则表示为:

那么像单估计器一样,如果我们假设样本以适当的方式(例如随机地)分布在两组估计器上,则和也都是无偏的。设 为 中最大估计值集合,由于是一个独立的无偏估计值,那么 对于任何都成立,包括

此处有疑问,为什么包括??

设 是最大化 的估计器,表示为:,如果存在多个最大化的 是最大化估计量,我们可以例如随机选择一个,然后我们可以将用作的估计值,那么对于可以近似为:

随着我们获得更多的样本,估计量的方差减小,在极限情况下,

具体证明过程部分如下:

3. Double Q-learning算法

我们可以解释为 Q-learning学习其实使用单估计器(single estimate)去估计下一个状态:那么是 的一个估计,一般的,将期望理解为对同一实验的所有可能运行的平均,而不是(通常在强化学习环境中使用)对下一个状态的期望,根据原理部分,Double Q-learning将使用两个函数 和(对应两个估计器),并且每个函数都会使用另一个函数的值更新下一个状态。两个函数都必须从不同的经验集中学习,这一点很重要,但是要选择要执行的动作可以同时使用两个值函数。 因此,该算法的数据效率不低于Q学习。 在实验中作者为每个动作计算了两个Q值的平均值,然后对所得的平均Q值进行了贪婪探索。算法伪代码如下

为了区分Double Q-learning算法和Q-learning的区别,本文同样Q-learning算法伪代码贴出来了。

对比:此处对于Q-learning算法和double Q-learning 算法来说,double使用了B网络来更新A网络,同样的道理对于B网络则使用A网络的值来更新。

4. 实验过程于结果

在这里插入图片描述

5. 附录:收敛性证明过程

对于Double Q-learning收敛性的证明过程如下:

原文博客地址:

https://blog.csdn.net/gsww404/article/details/103413124

本文分享自微信公众号 - 深度强化学习实验室(Deep-RL),作者:DeepRL

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 解读72篇DeepMind深度强化学习论文

    来源:王小惟的知乎https://zhuanlan.zhihu.com/p/70127847

    J.Q.Wang@2048
  • 方法 || 深度强化学习解决交通控制问题

    作者在现有研究方法的基础上提出了使用深度强化学习解决交通控制的方法,整体结构图如下:

    J.Q.Wang@2048
  • 第13期:深度强化学习《论文快报》

    Direct and indirect reinforcement learning

    J.Q.Wang@2048
  • UCSC Xena:癌症基因组学数据分析平台

    UCSC Xena是一个癌症基因组学数据分析平台,支持对癌症样本的多种组学数据进行可视化和分析,网址如下

    生信修炼手册
  • 友盟叶谦:开发者如何借力第三方服务打造"爆款"App

    去年第四季度我们国内的活跃设备量达到了 9.9 个亿,这是一个比较大的增长,但是另一方面,我们也看到在整个增长的过程中,这个活跃设备的增速是在放缓的,就是说人口...

    BestSDK
  • Milvus 最佳实践之如何设置系统配置项 (2)

    在上文《Milvus 最佳实践之如何选择索引类型》中,针对0.5.3版本和不同用户需求提出了关于选择索引类型的意见。本文针对 Milvus 0.6.0 版本的一...

    ZILLIZ
  • Leetcode 122. Best Time to Buy and Sell Stock II

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn....

    Tyan
  • 使用GDC在线查看TCGA数据

    GDC是Genomic Data Commons的缩写,是由美国国家癌症研究所NCI建立的一套癌症数据共享系统,整合包括TCGA在内的多个癌症数据库中的信息,提...

    生信修炼手册
  • Confluence 6 为登录失败配置使用验证码

    如果你具有 Confluence 管理员的权限,你可以限制 Confluence 登录失败的最大尝试次数。在给予最大登录失败尝试(默认为 3 次)次数后,Con...

    HoneyMoose
  • Git 提交规范

    如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你。可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目就被糟践了。...

    前朝楚水

扫码关注云+社区

领取腾讯云代金券