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

article/2025/11/1 3:10:27

作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在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 表示这一类计算方法的基本形式:
R Q π ( x , a ) = Q π ( x , a ) + E μ [ ∑ t ⩾ 0 γ t ( ∏ s = 1 t c s ) ( r t + γ Q π ( x t + 1 , ⋅ ) − Q μ ( x t , a t ) ) ] \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μ[t0γt(s=1tcs)(rt+γQπ(xt+1,)Qμ(xt,at))]
其中:

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

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

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

    此时 ∏ s = 1 t c s = 1 \prod_{s=1}^{t} c_{s}=1 s=1tcs=1 ,当t=0时,上面的公式就变成了 Actor Critic 中 TD-Error 的计算公式:
    R Q π ( x , a ) = r t + γ Q π ( x t + 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,)
    如果时间长度进一步拉长,我们可以得到
    R t = 1 Q π ( x , a ) = Q π ( x , a ) + E π [ r t + γ Q π ( x t + 1 ∣ ⋅ ) − Q μ ( x t , a t ) + γ ( r t + 1 + γ Q π ( x t + 2 ∣ ⋅ ) − Q μ ( x t + 1 , a t + 1 ) ) ] = Q π ( x , a ) + E π [ ∑ d = 0 1 γ d ( r t + d + γ Q π ( x t + d + 1 ∣ ⋅ ) − Q μ ( x t + d , a t + 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=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))
    此时的公式形式和 GAE 的计算公式比较接近。

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

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

    image-20210329223239050

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

  5. Retrace ⁡ ( λ ) : c s = λ min ⁡ ( 1 , π ( a s ∣ x s ) / μ ( a s ∣ x s ) ) \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,π(asxs)/μ(asxs)) 。Retrace算是前面提到的算法的优点整合的一个算法,它不仅在 π \pi π μ \mu μ 相差比较大时保障了算法的安全性,而且当 π \pi π μ \mu μ 比较接近时也不会出现切掉较远轨迹,造成效率低的问题。而且由于 c s c_s cs由于最大值是1,所以也不会出现 Π s = 1 t c s \Pi_{s=1}^{t} c_{s} Πs=1tcs 数值很大的情况。

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

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

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

image-20210329231021171

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


http://chatgpt.dhexx.cn/article/pb0T71jq.shtml

相关文章

RecId

我记得好像AX最初版本RecId是所有表都唯一的。但是这样有一个坏处就是限制了数据库可存储的数据的条数。D365FO中RecId 不再全局唯一,但是表唯一。 每个表都有一个Sequences生成表的RecId,格式是:SEQ_TableId 右键Sequences可以看下当前RecId的值&#…

ResNet过程

#ResNet 因为网络传播的层次太深,后面的很难传播到前面,所以增加了一个短接层,深层次网络可以退化成一个浅层次网络 #filter_num 卷积核数量 #stride 步长 class BasicBlock(layers.Layer):def __init__(self,filter_num,stride1):super(Bas…

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志 (1)如果Android Studio里面没有安装下列插件之一的,在Settings的Plugins里面安装其中一个: (2)菜单栏中的code里面找到反混…

android还原代码混淆proguard日志的工具--retrace和SmartRetrace

介绍 代码混淆时android反编译的常用方法,android SDK提供了Proguard工具,路径是 ANDROID_SDK_HOME/tools/proguard 命令行在ANDROID_SDK_HOME/tools/proguard/bin下,而实际的执行代码路径为ANDROID_SDK_HOME/tools/proguard/lib apk经过混…

with recursive用法

with recursive 则是一个递归的查询子句&#xff0c;他会把查询出来的结果再次代入到查询子句中继续查询。 with recursive d(n, fact) as ( values (1,2) union all #合并 select n1, (n1)*fact from d where n < 5) SELECT * from d;递归过程如下&#xff1a; n1 fact2 n…

python实验之绘制南丁格尔玫瑰图

一、实验目的 了解玫瑰图的前世今生&#xff1b;了解 matplotlib 标准库中的 pyplot 模块&#xff1b;了解在极坐标 系中绘制柱状图。 二、实验基本原理及步骤&#xff08;或方案设计及理论计算&#xff09; 实验步骤&#xff1a; 查阅文档&#xff0c;了解南丁格尔玫瑰图的原…

南丁格尔玫瑰图 | 集才华和美貌于一身的数据图表

南丁格尔玫瑰图将柱图转化为更美观的饼图形式&#xff0c;是极坐标化的柱图&#xff0c;其夸大了数据之间差异的视觉效果&#xff0c;适合展示数据原本差异小的数据。 1、玫瑰图的前世今生 长得像饼图又不是饼图&#xff0c;这种有着极坐标的统计图有着一个美丽的名字—南丁格…

雷达图+南丁格尔玫瑰图

具体实现的效果图&#xff1a; 使用的图表插件是echarts,具体的完整代码如下&#xff1a; import * as echarts from echarts;var chartDom document.getElementById(main); var myChart echarts.init(chartDom); var option;var arr [{ name: 1楼, value: 30 },{ name: 2楼…

Echarts南丁格尔玫瑰图、锥形柱状图、渐变曲线图

目录 1、南丁格尔玫瑰图 2、锥形柱状图 3、渐变曲线图 4、曲线图 1、南丁格尔玫瑰图 option {title: {text: 作物占比,left: 50, // 组件离容器左侧的距离top: 20},legend: {top: 52%,x: center,y: top,width: 180,height: 60,itemGap: 30,itemWidth: 15,itemHeight: 1…

Python数据可视化之南丁格尔玫瑰图(亲测)

文章目录 1. 什么是南丁格尔玫瑰图2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图。 南丁格尔玫瑰图&#xff08;Nightingale rose diagram&#xff09;又名鸡冠花图、极坐标区域图。统计学家和医学改革家佛罗伦斯‧…

【R语言 南丁格尔玫瑰图绘制】

继续上一篇地理信息可视化讲起&#xff0c;为了能够更加直观的展示数据分布情况&#xff0c;发现之前人民日报客户端曾经做过一张关于疫情分布的玫瑰图&#xff0c;非常惊艳&#xff0c;故尝试用当前爬取的数据进行绘制。 绘图前数据整理 现存数据中不少地区病例已经清零&…

南丁格尔玫瑰图解析

一&#xff1a;先安装软件&#xff0c;任意一个都可以 PyCharm安装教程 https://www.cnblogs.com/du-hong/p/10244304.html Anaconda安装教程 https://blog.csdn.net/ITLearnHall/article/details/81708148 二&#xff1a;相关软件以及Python库的知识讲解&#xff1a; Py…

Echarts南丁格尔图.

项目场景&#xff1a; 通过Echarts修改南丁格尔图js文件&#xff0c;修改轮盘颜色。使项目更加美观 文本标签自定义 问题描述 不知道为什么自定义函数使饼图图形上的文本标签label标签显示在内部且&#xff0c;获得对应标签的数据。使用自定义函数formatter的参数是ar&#…

Python+Matplotlib绘制饼状图模拟南丁格尔玫瑰图

开学第一课&#xff1a;一定不要这样问老师Python问题 董付国老师Python系列教材推荐与选用参考 版权声明&#xff1a;由于公众号后台规则问题&#xff0c;本文暂时无法设置原创标记&#xff0c;但仍属原创内容&#xff0c;微信公众号“Python小屋”坚持只发原创技术文章。 推…

使用Matplotlib绘制南丁格尔玫瑰图

前言 在前文中&#xff0c;我们介绍了使用pyecharts绘制南丁格尔玫瑰图&#xff0c;本章我们再学习一下使用matplotlib绘制南丁格尔玫瑰图&#xff0c;了解在极坐标系中绘制柱状图。并对比一下两种不同的绘制方法&#xff0c;如何实现&#xff1f; 介绍 玫瑰图是弗罗伦斯南丁…

从南丁格尔图到医学发展史

可视化中&#xff0c;前端用于表现不同类目的数据在总和中的占比的场景&#xff0c;往往会采用饼图。 针对数据大小相近&#xff0c;南丁格尔图的呈现会更加美观。 南丁格尔图&#xff0c;又称玫瑰图&#xff0c;是由弗罗伦斯南丁格尔发明。 弗洛伦斯南丁格尔 开创了护理事业…

echarts绘制嵌套环形图(南丁格尔玫瑰图)

根据专业总人数和学院总人数绘制嵌套环形图 首先&#xff0c;echarts的基本步骤 引入js&#xff0c;准备容器&#xff0c;初始化实例&#xff0c; <script src"lib/echarts.min.js"></script><style>.box{width: 900px;height: 500px;background…

Python数据可视化之南丁格尔玫瑰图

文章目录 1. 什么是南丁格尔玫瑰图2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图。 南丁格尔玫瑰图&#xff08;Nightingale rose diagram&#xff09;又名鸡冠花图、极坐标区域图。统计学家和医学改革家佛罗伦斯‧…

R-南丁格尔玫瑰图: 仿制效果最好的疫情玫瑰图

这是到目前为止我觉得讲解最为细致、仿制与色彩改进效果最好的疫情玫瑰图教程。所以特约稿给大家学习&#xff01;作者码字不易&#xff0c;还请多多支持。 Angus,温州医科大学在读博士&#xff0c;急诊医学专业&#xff0c;主攻临床数据库及人工智能在危重症患者的应用。 Easy…

教你做超惊艳的南丁格尔玫瑰图

其实早在今年初&#xff0c;疫情还很严重的时候&#xff0c;人民日报发布的这个图就吸引了广大数据分析者的注意。 今天我们就把这个图的前因后果以及怎么做一次性讲清楚。 玫瑰图的前世今生 这个图学名&#xff1a;南丁格尔玫瑰图&#xff0c;是弗罗伦斯南丁格尔女士发明的…