标准dqn的策略网络参数更新所采用的规则为Q-learning中的更新规则,总所周知的是Q-learning是异策略算法,异策略算法就是行为策略和评估策略(更新所得策略)是不同的。

更新规则:

q-learning 如果使用不使用函数近似来表示Q值,那么存在:

也就是说,只要运行迭代的次数足够多,趋近于无穷的情况那么我们得到最优策略下的Q值,而最优策略又必是确定性策略,那么我们就可以获得最优策略了。

但是如果不使用函数近似来表示Q值,那么算法就没有泛化性,由于实际问题中状态空间十分巨大,所以这样做是不现实的。面对实际问题唯一可行的就是使用函数近似来表示Q值,如果使用函数近似后的Q-learning能够收敛并获得最优解,那么就有:

那么,我们就可以获得最优Q值。

但是现实是使用函数近似后的Q-learning往往难以收敛,就连获得局部最优解都难以保证,尤其是使用非线性的函数表示Q值,也就是说实际使用函数近似后的Q-learning得到的最终策略并不是确定性策略,因为只有得到最优解我们才会获得最优策略,也就是说只有最终获得最优策略才是确定性策略,而算法在中间的迭代过程(计算过程)所进行评估得到的策略(中间策略)都不是确定性策略,都是随机策略。

这里面就有一个误区,那就是Q-learning学习到的策略就一定是确定性策略,其实不然,Q-learning只是在迭代计算的时候更新规则使用的是确定性的更新规则( 使用后一状态的最大Q值来代替V值而不是计算各Q值的期望,  即 max Q'(s,a)   ),也只用Q-learning算法最终得到最优策略的时候我们才会获得确定性策略,其中的迭代过程中所评估的策略都不是确定性的策略。而使用函数近似的Q-learning算法是难以获得最优解的,或者说使用函数近似后的Q-learning最终能得到的策略都是随机策略,这也是为什么我们在评估函数近似的Q-learning的时候是使用随机策略(epilon-greedy策略)而不是确定性策略(greedy策略)。

那么为什么在标准dqn中要将epilon设置为0.05呢???

在Q-learning的更新规则可以看到,在迭代计算中所进行评估的策略是当前epilon下的epilon-greedy策略,但是需要注意的一点是虽然中间迭代计算过程中的评估策略是epilon-greedy策略,但是它的Q值并不是该策略下的真实值。那么又该如何评价计算过程中的策略性能呢,这时当然是使用epilon-greedy策略,也就是当前所得Q值确定的epilon-greedy策略,又由于当前评估策略的Q值并不是当前epilon下的最优解或者说并不是当前epilon下的真实Q值,这也就导致此时进行测评时epilon并没有一个很好的依据,但是有一点就是训练策略的epilon和测试策略的epilon相近那么此时测试所得性能表现就会越好。但由于我们实际测试算法性能时需要对比的是不同算法的性能,那么只要保证每个算法在相同训练时间下测试策略使用的epilon保持一致就可(各算法在相同训练时间下对应的测试epilon相同即可),至于单独一个算法在不同训练时间下测试策略的epilon的设置和训练epilon设置是否相近并不能太多影响各算法间性能的对比,因此我们可以在整个测试期间都将epilon设置为一个固定值。由于在标准dqn中在运行一段时间后训练epilon固定为0.1,那么我们最终评估策略时epilon都是等于0.1的,而此时的Q值所对应的真实策略应该是epilon小于0.1的epilon-greedy策略(由于Q-learning的更新规则导致),同时由于最终设定统一的测试epilon应该更多的考虑运算后期的真实性能测评,因此测试epilon设置最好为小于最终训练epilon=0.1的一个值,因此这里设置为0.05(当然这也是小于0.1大于0的一个中间值,由于最终策略不是epilon=0的确定性策略也不是最后训练策略epsilon=0.1,因此取中间值0.05)。

------------------------------------------------------

标准DQN在测试算法性能时为什么要将探索概率epsilon设置为0.05呢,而不是使用其他探索概率的epsilon-greedy策略或者直接使用greedy探索策略呢?的更多相关文章

  1. (5) openssl speed(测试算法性能)和openssl rand(生成随机数)

    1.1 openssl speed 测试加密算法的性能 支持的算法有: openssl speed [md2] [mdc2] [md5] [hmac] [sha1] [rmd160] [idea-cb ...

  2. Apache JMeter--网站自动测试与性能测评

    Apache JMeter--网站自动测试与性能测评 2013-02-28 15:48:05 标签:Jmeter From:http://bdql.iteye.com/blog/291987 出于学习 ...

  3. 使用iozone测试磁盘性能

    IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...

  4. 【转】利用 Apache JMeter 测试 WebSphere 性能

    如果您预算紧张并且时间紧迫 —— 或者即使您不是这样 —— 那么,您可能希望考虑使用 JMeter 来对 Web 和其他应用程序进行压力测试.IBM 的 Greg Herringer 详细描述他使用这 ...

  5. 背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战

    背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.ne ...

  6. 使用iozone测试磁盘性能(测试文件读写)

    IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...

  7. 【机器学习】机器学习入门02 - 数据拆分与测试&算法评价与调整

    0. 前情回顾 上一周的文章中,我们通过kNN算法了解了机器学习的一些基本概念.我们自己实现了简单的kNN算法,体会了其过程.这一周,让我们继续机器学习的探索. 1. 数据集的拆分 上次的kNN算法介 ...

  8. Android IOS WebRTC 音视频开发总结(五六)-- 如何测试网络性能?

    本文主要介绍如何测试网络性能,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help 网络性能直接决定了视频通话效果,比如qq,很多时候我们我们觉得通 ...

  9. iozone测试磁盘性能

    什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...

  10. iperf测试网络性能

      分类: LINUX 2013-06-17 18:52:21     Iperf是一个网络性能测试工具.可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽 ...

随机推荐

  1. 连续段 dp - 状态转移时依赖相邻元素的序列计数问题

    引入 在一类序列计数问题中,状态转移的过程可能与相邻的已插入元素的具体信息相关. 这类问题通常的特点是,如果只考虑在序列的一侧插入,问题将容易解决. 枚举插入顺序的复杂度通常难以接受,转移时枚举插入位 ...

  2. C#.NET 使用Task.Run和Task.Delay 延时执行任务(代码)

    C#.NET 使用Task.Run和Task.Delay 延时执行任务(代码) 环境: .NET 4.5.2 .NET WEB MVC + WEB API. 示例代码: using CommonUti ...

  3. ISO pod 使用

    pod 安装 相关依赖包 新建podfile 文件 pod init 编辑podfile文件添加第三方库 // pod '第三方依赖库名', '版本号' pod 'SDWebImageSwiftUI' ...

  4. spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中,切面内重新抛出异常

    spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中 aop类实现Aspect的多个方法注解中,只有Around注解的方法是有返回值的,可以对方法的入参和返回值均进 ...

  5. 多个if查询及case when 语句

    concat( if(t2.`flow_flag`=1 and t1.`field_source`= '06','支付宝账号1',''),if(t2.`flow_flag`=0 and t1.`fie ...

  6. Nginx+Fail2ban 实现同一ip在一分钟内连续三次请求同一接口并响应成功时进行封禁

    1. 安装 Fail2Ban 和 Nginx 如果尚未安装 Fail2Ban 和 Nginx,可以使用以下命令进行安装: # CentOS默认的仓库中可能不包含Nginx,所以需要添加EPEL(Ext ...

  7. .NET 个人博客-给文章添加上标签

    个人博客-给文章添加上标签 优化计划 置顶3个且可滚动或切换 推荐改为4个,然后新增历史文章,将推荐的加载更多放入历史文章,按文章发布时间降序排列. 标签功能,可以为文章贴上标签 推荐点赞功能 本篇文 ...

  8. 《DNK210使用指南 -CanMV版 V1.0》第一章 本书学习方法

    第一章 本书学习方法 1)实验平台:正点原子DNK210开发板 2)章节摘自[正点原子]DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com ...

  9. Docker 快速学习手册及相关笔记 附带一些问题解决方案

    参考与前言 Docker 官方教程 [英文]:https://docs.docker.com/get-started/ Windows Docker 安装 | 菜鸟教程 (runoob.com) Do ...

  10. (转载)linux命令英文缩写的含义(方便记忆)

    linux常用命令的英文单词缩写 命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat packa ...