作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学习的基础知识,后面也会更新强化学习的论文阅读专栏。本来是想每一篇多更新一点内容的,后面发现大家上CSDN主要是来提问的,就把很多拆分开来了(而且这样每天任务量也小一点哈哈哈哈偷懒大法)。但是我还是希望知识点能成系统,所以我在目录里面都好按章节系统地写的,而且在github上写成了书籍的形式,如果大家觉得有帮助,希望从头看的话欢迎关注我的github啊,谢谢大家!另外我还会分享深度学习-基础知识专栏以及深度学习-论文阅读专栏,很早以前就和小伙伴们花了很多精力写的,如果有对深度学习感兴趣的小伙伴也欢迎大家关注啊。大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!不要高估一年的努力,也不要低估十年的积累,与君共勉!

Retrace

从本节开始,我们要开始介绍off-policy的策略梯度法,我们首先来介绍一下Retrace,Retrace来自DeepMind在NIPS2016发表的论文Safe and efficient off-policy reinforcement learning。它主要有以下四个特点:

  • 低方差。
  • 不管有什么样的动作策略进行采样,总是能“安全”地利用这些动作策略采样得到的样本,这里的“安全”我理解是当behavior policy和target policy差很多的时候,依然能保障策略最终的收敛性?
  • 对样本的高效使用。
  • 第一个不需要GLIE(Greedy in the limit with infinite exploration)假设就能保证收敛的returned-based off-policy control algorithm,其中return-based是之折扣奖励的累积和,它的重点在于一条轨迹或者一段时间,而不是一般的一个点。

然后我们来具体地介绍以下Retrace方法。一般基于 Off-Policy 的价值估计方法主要使用重要性采样的方法实现,我们可以用一个
R\mathrm{R}R 表示这一类计算方法的基本形式:
RQπ(x,a)=Qπ(x,a)+Eμ[∑t⩾0γt(∏s=1tcs)(rt+γQπ(xt+1,⋅)−Qμ(xt,at))]\mathrm{R} Q_{\pi}(\boldsymbol{x}, \boldsymbol{a})=Q_{\pi}(\boldsymbol{x}, \boldsymbol{a})+E_{\mu}\left[\sum_{t \geqslant 0} \gamma^{t}\left(\prod_{s=1}^{t} c_{s}\right)\left(\boldsymbol{r}_{t}+\gamma Q_{\pi}\left(\boldsymbol{x}_{t+1}, \cdot\right)-Q_{\mu}\left(\boldsymbol{x}_{t}, \boldsymbol{a}_{t}\right)\right)\right] RQπ​(x,a)=Qπ​(x,a)+Eμ​[t⩾0∑​γt(s=1∏t​cs​)(rt​+γQπ​(xt+1​,⋅)−Qμ​(xt​,at​))]
其中:

  • R被称为operator
  • Q(x,a)Q(\boldsymbol{x}, \boldsymbol{a})Q(x,a) 表示值函数估计值
  • μ\muμ 表示参与交互的策略
  • π\piπ 表示待学习的策略
  • γ\gammaγ 表示回报的打折率
  • csc_{s}cs​ 是非负的系数,被称为trace of the operator

我们接下来就来讨论当csc_{s}cs​不同时得到的不同的算法。

  1. 当target policy π\piπ 和 behaviour policy μ\muμ完全相同时:

    此时∏s=1tcs=1\prod_{s=1}^{t} c_{s}=1∏s=1t​cs​=1 ,当t=0时,上面的公式就变成了 Actor Critic 中 TD-Error 的计算公式:
    RQπ(x,a)=rt+γQπ(xt+1,⋅)\mathrm{R} Q_{\pi}(\boldsymbol{x}, \boldsymbol{a})=\boldsymbol{r}_{t}+\gamma Q_{\pi}\left(\boldsymbol{x}_{t+1}, \cdot\right) RQπ​(x,a)=rt​+γQπ​(xt+1​,⋅)
    如果时间长度进一步拉长,我们可以得到
    Rt=1Qπ(x,a)=Qπ(x,a)+Eπ[rt+γQπ(xt+1∣⋅)−Qμ(xt,at)+γ(rt+1+γQπ(xt+2∣⋅)−Qμ(xt+1,at+1))]=Qπ(x,a)+Eπ[∑d=01γd(rt+d+γQπ(xt+d+1∣⋅)−Qμ(xt+d,at+d))\begin{aligned} \mathrm{R}_{t=1} Q_{\pi}(\boldsymbol{x}, \boldsymbol{a})=& Q_{\pi}(\boldsymbol{x}, \boldsymbol{a})+E_{\pi}\left[\boldsymbol{r}_{t}+\gamma Q_{\pi}\left(\boldsymbol{x}_{t+1} \mid \cdot\right)-Q_{\mu}\left(\boldsymbol{x}_{t}, \boldsymbol{a}_{t}\right)+\gamma\left(\boldsymbol{r}_{t+1}+\gamma Q_{\pi}\left(\boldsymbol{x}_{t+2} \mid \cdot\right)\right.\right.\\ &\left.\left.-Q_{\mu}\left(\boldsymbol{x}_{t+1}, \boldsymbol{a}_{t+1}\right)\right)\right] \\ =& Q_{\pi}(\boldsymbol{x}, \boldsymbol{a})+E_{\pi}\left[\sum_{d=0}^{1} \gamma^{d}\left(\boldsymbol{r}_{t+d}+\gamma Q_{\pi}\left(\boldsymbol{x}_{t+d+1} \mid \cdot\right)-Q_{\mu}\left(\boldsymbol{x}_{t+d}, \boldsymbol{a}_{t+d}\right)\right)\right. \end{aligned} Rt=1​Qπ​(x,a)==​Qπ​(x,a)+Eπ​[rt​+γQπ​(xt+1​∣⋅)−Qμ​(xt​,at​)+γ(rt+1​+γQπ​(xt+2​∣⋅)−Qμ​(xt+1​,at+1​))]Qπ​(x,a)+Eπ​[d=0∑1​γd(rt+d​+γQπ​(xt+d+1​∣⋅)−Qμ​(xt+d​,at+d​))​
    此时的公式形式和 GAE 的计算公式比较接近。

  2. 当cs=π(as∣xs)/μ(as∣xs)c_{s}=\pi\left(a_{s} \mid x_{s}\right) / \mu\left(a_{s} \mid x_{s}\right)cs​=π(as​∣xs​)/μ(as​∣xs​),上面的式子其实就是重要性采样(Importance Sampling),重要性采样是当target policy π\piπ 和 behaviour policy μ\muμ 不同时去修正偏差的最简单的一种方式,主要时通过π\piπ和μ\muμ之间的似然率的内积(也可以理解为修正的时sample path的概率)来修正π\piπ和μ\muμ不同时带来的问题。但是重要性采样即使在path有限的情况下也会存在很大的方差,这主要是因为π(a1∣x1)μ(a1∣x1)⋯π(at∣xt)μ(at∣xt)\frac{\pi\left(a_{1} \mid x_{1}\right)}{\mu\left(a_{1} \mid x_{1}\right)} \cdots \frac{\pi\left(a_{t} \mid x_{t}\right)}{\mu\left(a_{t} \mid x_{t}\right)}μ(a1​∣x1​)π(a1​∣x1​)​⋯μ(at​∣xt​)π(at​∣xt​)​的方差造成的。

  3. 当cs=λc_{s}=\lambdacs​=λ时,这是另外一种off-policy correction的方法。由 于 λ\lambdaλ 是一个稳定的数值, 所以不会出现IS中的那种连积后有可能会很大的情况。但是一方面这个 数值比较难定, 要有一定的实际经验; 另一方面这种方法并不能保证对任意的 π\piπ 和 μ\muμ 安全, 这个方法比较适用于 π\piπ 和 μ\muμ 区别不大的时候。

  4. 当cs=λπ(as∣xs)c_{s}=\lambda \pi\left(a_{s} \mid x_{s}\right)cs​=λπ(as​∣xs​),这里用上了target policy π∘\pi_{\circ}π∘​ 保障了算法的安全性, 但是对于两种策略相近时 (称为near on-policy) 的样本利用效率下降了。因为它同样会将一些比较远的轨迹切掉。而在near on-policy的情况下,通常是不希望这样去做的。

  5. Retrace⁡(λ):cs=λmin⁡(1,π(as∣xs)/μ(as∣xs))\operatorname{Retrace}(\lambda): c_{s}=\lambda \min \left(1, \pi\left(a_{s} \mid x_{s}\right) / \mu\left(a_{s} \mid x_{s}\right)\right)Retrace(λ):cs​=λmin(1,π(as​∣xs​)/μ(as​∣xs​)) 。Retrace算是前面提到的算法的优点整合的一个算法,它不仅在 π\piπ 和 μ\muμ 相差比较大时保障了算法的安全性,而且当 π\piπ 和 μ\muμ 比较接近时也不会出现切掉较远轨迹,造成效率低的问题。而且由于csc_scs​由于最大值是1,所以也不会出现 Πs=1tcs\Pi_{s=1}^{t} c_{s}Πs=1t​cs​ 数值很大的情况。

在Retrace的原始论文中,作者对上面提到的几种情况做了总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hSP1ntXw-1617629753250)(https://raw.githubusercontent.com/Yunhui1998/markdown_image/main/RL/image-20210329230702993.png)]

下面是论文中提到的Retrace在60种Artri游戏上的表现,可见Retrace的方法相对于原始的Q-Learning领先非常明显。

上一篇:强化学习的学习之路(五十)2021-02-19 PPO实现策略上的单调提升(Monotonic Improvement with PPO )
下一篇:强化学习的学习之路(五十二)2021-02-21 ACER

强化学习的学习之路(五十一)2021-02-20 Retrace相关推荐

  1. 【强化学习论文合集】三十一.2021智能体和多智能体系统国际联合会议论文(AAMAS2021)

    欢迎订阅本专栏:<强化学习论文合集> 专栏介绍: 本专栏整理了2017~2022年(后面会持续更新)强化学习领域国际顶级会议已录用的论文,会议包括但不限于:ICML.NeurIPS.AAA ...

  2. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

  3. 强化学习的学习之路(十)_2021-01-10:K臂老虎机介绍及其Python实现

    作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助.这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学 ...

  4. 强化学习的学习之路(四十四)2021-02-13 Monotonic Improvement with KL Divergence

    作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助.这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学 ...

  5. 强化学习的学习之路(四十六)2021-02-15自然梯度法实现策略上的单调提升(Monotonic Improvement with Natural gradient descent)

    作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助.这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学 ...

  6. JavaScript学习(五十一)—实训题

    JavaScript学习(五十一)-实训题 实训1 定义一个长方形的构造函数(有参数,通过参数给属性赋值)属性:长.宽方法:面积.周长通过这个构造方法创建3个对象,计算面积和周长 实训2 定义创建等边 ...

  7. 强化学习入坑之路04

    强化学习入坑之路04 今天继续强化学习的学习,这些内容的学习主要参考了李宏毅的强化学习教程,在此基础上加入了个人的理解和总结.好,废话少说下面开始进入正题. 1.Q-learning(DQN) Sta ...

  8. java 设置年轻代堆大小,[JVM学习之路]五堆(一)堆的内存结构参数设置分代思想内存分配...

    [JVM学习之路]五堆(一)堆的内存结构参数设置分代思想内存分配 [JVM学习之路]五.堆(一)堆的内存结构.参数设置.分代思想.内存分配策略及TLAB 一.堆的核心概述 堆的特点: 1.一个jvm实 ...

  9. Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息

    Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息 1.Display text in a 3D view or slice view 2.显示体绘制 VolumeRen ...

最新文章

  1. js表单验证,如果不为空时自动改变提交按钮的背景色
  2. ICLR2018论文投稿抢先看:Ian Goodfellow由衷赞赏的训练稳定方法SN-GANs
  3. PAT (Basic Level) Practise:1017. A除以B
  4. Spring Boot 2发送邮件手把手图文教程
  5. 通过SSIS的“查找”组件进行不同数据源之间数据的合并操作
  6. c语言中extent的用法,extent C
  7. Wireshark安装和基本使用
  8. 数据结构与算法--图论-深度优先搜索及其应用
  9. Java中特质模式的定义
  10. fastjson反序列化过滤字段属性_原创干货 | 从RMI入门到fastjson反序列化RCE
  11. 2.5 Go 算术运算与变量使用技巧
  12. 老也有错?科技行业对大龄程序员的歧视
  13. Mysql 数据库学习笔记04 函数
  14. ApacheCN 翻译/校对/笔记整理活动进度公告 2019.9.27
  15. 【洛谷 P3809】 【后缀数组】【模板】后缀排序
  16. ros软路由防火墙(双线路、日志配置)
  17. 北京大学计算机学院王锐,王锐-北京航空航天大学计算机学院
  18. 什么是瀑布图_什么是瀑布图以及为什么我需要一个
  19. 【电子电路】PT100 四线制高精度采样原理图和两线制和三线制接线办法
  20. 关于7Z自解压文件拆分,读取条目,复写,合并的功能

热门文章

  1. Disk Xray for Mac系统清理软件
  2. 黑鲨手机全面屏的导航栏适配
  3. 西门子PLC通信全解析
  4. win10修改DNS配置
  5. [GDSOI2016]星际穿越
  6. 英特尔intel的面试和笔试
  7. java 可见_java 可见性简单总结
  8. qq手机令牌 for android3.3 官方安装版,qq安全中心手机令牌
  9. 新一代大智慧文件夹结构
  10. java开发150个建议