【总结】为什么对累积奖励减去baseline项能起到减小方差的作用?

2023-11-18

深度强化学习实验室

论坛http://deeprlhub.com/

来源:https://zhuanlan.zhihu.com/p/98506549

作者: 风清云

很多论文的工作都专注于减少policy gradient的方差,以得到更加优质且稳定的policy。其中一项最经典的工作就是对policy gradient的累积奖励减去一个baseline,但为什么减去一个baseline就可以达到减小方差,同时又不引入偏差的效果呢?

关于这个问题,Daniel Seita大佬在他的博客中有详细的讲解(链接给在最后),但笔者水平不够,仍然有部分未看明白的地方,强作此文说说自己的理解,希望有大佬看到并给出指导。

写在前面:符号约定

 在强化学习的policy gradient中,通常会通过环境仿真出一系列的trajectories,以起到类似于对某种概率分布进行采样的作用,某个以时刻T为结束时刻的trajectory可以约定如下:

其中 分别代表状态,动作和奖励。接下来,本文将按照简单的结论->证明->结论的结构来探讨减小方差这个问题。

结论

对policy gradient的表达式中的累积奖励项减去一个baseline项,可以起到减小policy gradient的方差且同时不引入偏差的效果。如下式:

在实际工作中,通常把baseline取为状态 的状态-值函数,即 。

证明

首先需要写明两个技巧:

(1)log-derivative

此技巧是介绍如何将对数塞入对某个函数发f(x)的期望的梯度中去的。过程如下

这个过程看起来似乎十分简单直接,相当于乘了一项 ,再把分母移动到微分项下 面,利用简单的复合函数求导:

就在积分里增加了对数项,最后根据期望的定义得到了最终的表达式。

但这里是有一个疑问的,那就是在第二个等式中,直接把微分号放入了积分号里面,这种直接交换微分和积分次序的变换应满足什么条件才成立?在这里是否成立?,笔者不甚理解,希望理解的朋友给予指导。

其中 表示初始状态的概率分布, 表示policy, 表示状态转移概 率。第一个等式是根据乘法原理,把生成trajectory 的概率 拆开写成了在已知初始状态概率分 布 的情况下,所有时刻的policy和状态转移概率的乘积 ; 注意这里默认假设了时刻 所采取 的动作 仅依赖于状态 ,状态 也仅依赖于前一时刻的状态 和动作 (一阶马尔科 夫性)。

第二个等式就是简单的取对数运算。 

第三个等式就是关于参数 的求微分运算,因为与参数 有关的项仅有 , 因此其他项对 参数 的导数为0。

接下来,应用这两个技巧看看期望奖励关于参数的导数,即policy gradient的表达式。

这里第一个等式即期望的定义式;

第二个等式即log-derivative技巧;

第三个等式即对trajectory  \tau的对率求导的技巧;

第四个等式即写回期望。

在正式引入baseline之前,还需要对上式做一些变换:

等式 (i) 是简单的替换 , 这里令折扣因子 ; 等式 (ii) 是个难点。首先定义这个新冒出来的符号 , 这个代表以时刻 为最终时刻的 

上式成立是因为在时刻 , trajectory就已经结束,因此后续的状态和奖励的取值对 并无影 响, 从而期望相等。等式 (i) 想要得到等式 (ii),关键在于以下等式的成立:

这个等式的左边仍然是policy gradient的定义,右边却变成了以不同的时刻 为最终时刻的trajectories的奖励 的求和运算。为什么这个等式成立呢? 这里说说我的理解,不一定正确。直观上来看,等式右边就是的期望内容 是把以下trajectories的最后一个奖励求和了:

如果考虑对以时刻 为终止时刻的某一个trajectory求期望累积奖励的话,那么必然需要对时刻0 到时刻 的所有状态 和 的可能取值进行遍历 (因为积分),并将所有时刻的奖励取关 于概率 的加权和; 同样地,也可以考虑以不同时刻 的多条trajectories, 遍历时刻0到时刻 的所有时刻,并分开将每一条 trajectory的最后时刻的 累加起来。公式表达如下:

理解了这一步转换,就可以开始下一步推导了。

第一个等式上面已经说明;

第二个等式,Daniel Seita的博客里提到了“Assume we can exchange the sum with the gradient,”也就是说,假设求和符号和微分符号位置可以互换,笔者不太明白为啥可以这样假设,但还是先假设下去吧。

第三个等式,这里就很直观了。再使用前面的两个技巧,就把微分符号变换进去咯;

第四个等式,这里需要注意,期望的下标已经发生变化了,相当于把trajectories变回了one trajectory,这里前面已有说明。

等式 (ii) 到这里就扯完了。现在来看等式 (iii) 。等式 (iii) 是个简单的将等式 (ii) 加和项进行 重组。把等式 (ii) 单项都拆开写,以符号 替换 可以得到:

将上面这个形似下三角的累加项逐列累加,则每一列的累加结果为:, 再把每一列的 结果累加起来,就得到了等式 (iii) 的结果啦。

扯了这么多。终于可以开始减去baseline项了。基于上面最后一个等式给出的结果,对累加的期望减去baseline可以得到:

首先看引入了baseline以后,为什么不会引入偏差:

根据期望的线性性质,直接看baseline的期望:

第一个等式是简单的split,即把序列trajectory 拆分成两个互不交叠的部分,这个split成立的本 质还是积分/求和具有线性性质,这两部分的变量不一样当然可以写成这样; 第二个等式值得注意:这里的baseline 仅仅是关于状态 的函数,和后续的状态以及动 作无关。这和 是不一样的, 因为 是后续状态累积奖励的期望。所以此处可以把 作为常量提出; 第三个等式又是个难点。展开过程如下:

再次结论

参考文献

【1】Going Deeper Into Reinforcement Learning: Fundamentals of Policy Gradients

【2】Notes on Exact Inference in Graphical Models

本文来源自知乎博客:作者风清云

https://zhuanlan.zhihu.com/p/98506549

总结1:周志华 || AI领域如何做研究-写高水平论文

总结2:全网首发最全深度强化学习资料(永更)

总结3:  《强化学习导论》代码/习题答案大全

总结4:30+个必知的《人工智能》会议清单

总结52019年-57篇深度强化学习文章汇总

总结6:   万字总结 || 强化学习之路

总结7:万字总结 || 多智能体强化学习(MARL)大总结

总结8:深度强化学习理论、模型及编码调参技巧

第119篇: 29页中文材料详述模仿学习完整过程

第118篇:【总结】170道强化学习面试题目汇总

第117篇:【Mava】一个分布式MARL研究框架

第116篇:CORL: 基于变量序和RL的因果发现算法

第115篇:人工强化学习未来的发展方向

第114篇:使用新的物理模拟引擎加速强化学习

第113篇:如何降低深度强化学习研究的计算成本

第112篇:基于Novelty-Pursuit的高效探索方法

第111篇:Reward is enough奖励机制。

第110篇:163篇ICML2021强化学习领域论文汇总

第109篇:【Easy-RL】200页强化学习总结笔记

第108篇:清华大学李升波老师《强化学习与控制》

第107篇:阿里巴巴2022届强化学习实习生招聘

第106篇:奖励机制不合理:内卷,如何解决?

第105篇:FinRL: 一个量化金融自动交易RL库

第104篇:RPG: 通过奖励发现多智能体多样性策略

第103篇:解决MAPPO(Multi-Agent PPO)技巧

第102篇:82篇AAAI2021强化学习论文接收列表

第101篇:OpenAI科学家提出全新强化学习算法

第100篇:Alchemy: 元强化学习(meta-RL)基准环境

第99篇:NeoRL:接近真实世界的离线强化学习基准

第98篇:全面总结(值函数与优势函数)的估计方法

第97篇:MuZero算法过程详细解读

第96篇:  值分布强化学习(Distributional RL)总结

第95篇:如何提高"强化学习算法模型"的泛化能力?

第94篇:多智能体强化学习《星际争霸II》研究

第93篇:MuZero在Atari基准上取得了新SOTA效果

第92篇:谷歌AI掌门人Jeff Dean获冯诺依曼奖

第91篇:详解用TD3算法通关BipedalWalker环境

第90篇:Top-K Off-Policy  RL论文复现

第89篇:腾讯开源分布式多智能TLeague框架

第88篇:分层强化学习(HRL)全面总结

第87篇:165篇CoRL2020 accept论文汇总

第86篇:287篇ICLR2021深度强化学习论文汇总

第85篇:279页总结"基于模型的强化学习方法"

第84篇:阿里强化学习领域研究助理/实习生招聘

第83篇:180篇NIPS2020顶会强化学习论文

第82篇:强化学习需要批归一化(Batch Norm)吗?

第81篇:《综述》多智能体强化学习算法理论研究

第80篇:强化学习《奖励函数设计》详细解读

第79篇: 诺亚方舟开源高性能强化学习库“刑天”

第78篇:强化学习如何tradeoff"探索"和"利用"?

第77篇:深度强化学习工程师/研究员面试指南

第76篇:DAI2020 自动驾驶挑战赛(强化学习)

第75篇:Distributional Soft Actor-Critic算法

第74篇:【中文公益公开课】RLChina2020

第73篇:Tensorflow2.0实现29种深度强化学习算法

第72篇:【万字长文】解决强化学习"稀疏奖励"

第71篇:【公开课】高级强化学习专题

第70篇:DeepMind发布"离线强化学习基准“

第69篇:深度强化学习【Seaborn】绘图方法

第68篇:【DeepMind】多智能体学习231页PPT

第67篇:126篇ICML2020会议"强化学习"论文汇总

第66篇:分布式强化学习框架Acme,并行性加强

第65篇:DQN系列(3): 优先级经验回放(PER)

第64篇:UC Berkeley开源RAD来改进强化学习算法

第63篇:华为诺亚方舟招聘 || 强化学习研究实习生

第62篇:ICLR2020- 106篇深度强化学习顶会论文

第61篇:David Sliver 亲自讲解AlphaGo、Zero

第60篇:滴滴主办强化学习挑战赛:KDD Cup-2020

第59篇:Agent57在所有经典Atari 游戏中吊打人类

第58篇:清华开源「天授」强化学习平台

第57篇:Google发布"强化学习"框架"SEED RL"

第56篇:RL教父Sutton实现强人工智能算法的难易

第55篇:内推 ||  阿里2020年强化学习实习生招聘

第54篇:顶会 || 65篇"IJCAI"深度强化学习论文

第53篇:TRPO/PPO提出者John Schulman谈科研

第52篇:《强化学习》可复现性和稳健性,如何解决?

第51篇:强化学习和最优控制的《十个关键点》

第50篇:微软全球深度强化学习开源项目开放申请

第49篇:DeepMind发布强化学习库 RLax

第48篇:AlphaStar过程详解笔记

第47篇:Exploration-Exploitation难题解决方法

第46篇:DQN系列(2): Double DQN 算法

第45篇:DQN系列(1): Double Q-learning

第44篇:科研界最全工具汇总

第43篇:起死回生|| 如何rebuttal顶会学术论文?

第42篇:深度强化学习入门到精通资料综述

第41篇:顶会征稿 ||  ICAPS2020: DeepRL

第40篇:实习生招聘 || 华为诺亚方舟实验室

第39篇:滴滴实习生|| 深度强化学习方向

第38篇:AAAI-2020 || 52篇深度强化学习论文

第37篇:Call For Papers# IJCNN2020-DeepRL

第36篇:复现"深度强化学习"论文的经验之谈

第35篇:α-Rank算法之DeepMind及Huawei改进

第34篇:从Paper到Coding, DRL挑战34类游戏

第33篇:DeepMind-102页深度强化学习PPT

第32篇:腾讯AI Lab强化学习招聘(正式/实习)

第31篇:强化学习,路在何方?

第30篇:强化学习的三种范例

第29篇:框架ES-MAML:进化策略的元学习方法

第28篇:138页“策略优化”PPT--Pieter Abbeel

第27篇:迁移学习在强化学习中的应用及最新进展

第26篇:深入理解Hindsight Experience Replay

第25篇:10项【深度强化学习】赛事汇总

第24篇:DRL实验中到底需要多少个随机种子?

第23篇:142页"ICML会议"强化学习笔记

第22篇:通过深度强化学习实现通用量子控制

第21篇:《深度强化学习》面试题汇总

第20篇:《深度强化学习》招聘汇总(13家企业)

第19篇:解决反馈稀疏问题之HER原理与代码实现

第18篇:"DeepRacer" —顶级深度强化学习挑战赛

第17篇:AI Paper | 几个实用工具推荐

第16篇:AI领域:如何做优秀研究并写高水平论文?

第15篇:DeepMind开源三大新框架!

第14篇:61篇NIPS2019DeepRL论文及部分解读

第13篇:OpenSpiel(28种DRL环境+24种DRL算法)

第12篇:模块化和快速原型设计Huskarl DRL框架

第11篇:DRL在Unity自行车环境中配置与实践

第10篇:解读72篇DeepMind深度强化学习论文

第9篇:《AutoML》:一份自动化调参的指导

第8篇:ReinforceJS库(动态展示DP、TD、DQN)

第7篇:10年NIPS顶会DRL论文(100多篇)汇总

第6篇:ICML2019-深度强化学习文章汇总

第5篇:深度强化学习在阿里巴巴的技术演进

第4篇:深度强化学习十大原则

第3篇:“超参数”自动化设置方法---DeepHyper

第2篇:深度强化学习的加速方法

第1篇:深入浅出解读"多巴胺(Dopamine)论文"、环境配置和实例分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【总结】为什么对累积奖励减去baseline项能起到减小方差的作用? 的相关文章

随机推荐

  • [Unity] Unity 插件Behavior Designer行为树使用

    Unity 插件Behavior Designer行为树使用 1 创建行为树 在Tools gt Behavior Designer gt Editor中打开行为树编辑编辑窗口 选择一个游戏物体 在Behavior Designer中右键A
  • open3d-点云读写和显示

    目录 一 点云读取 二 点云写入 二 点云显示 三 open3d支持如下点云文件类型 四 代码及结果示例 一 点云读取 read point cloud filename format auto remove nan points True
  • 人工智能专家:AI并不像你想象的那么先进

    2019 10 28 14 44 32 神译局是36氪旗下编译团队 关注科技 商业 职场 生活等领域 重点介绍国外的新技术 新观点 新风向 编者按 近些年 很多人工智能产品已经投入应用 走进人们的生活 人工智能迅猛的发展速度很难不引人注意
  • OSI七层模型及各层功能概述

    目录 1 OSI的基本概念及原则 2 OSI七层模型各层功能概述 3 OSI七层模型举例 4 OSI七层模型总结 1 OSI的基本概念及原则 OSI是Open System Interconnect的缩写 意为开放式系统互联 其各个层次的划
  • pandas读取SQL数据库到DataFrame

    在查询sql数据库时可以直接将数据读取到dataframe中 这样直接解决读取了大量含BLOB的记录后出现BLOB数据无效的问题 如LOB variable no longer valid after subsequent fetch 对这
  • python绘制饼图双层_Python通过matplotlib画双层饼图及环形图简单示例

    1 饼图 pie 即在一个圆圈内分成几块 显示不同数据系列的占比大小 这也是我们在日常数据的图形展示中最常用的图形之一 在python中常用matplotlib的pie来绘制 基本命令如下所示 python3 X版本 vals 1 2 3
  • 刷脸支付促使传统行业迎来了数字化变革契机

    人脸识别的时候可以进行性别识别 性别识别是利用计算机视觉来辨别和分析图像中的人脸性别属性 多年来 人脸性别分类因其在人类身份认证 人机接口 视频检索以及机器人视觉中的潜在应用而备受关注 性别分类是一个复杂的大规模二次模式分类问题 分类器将数
  • Flutter安装的常见错误

    1 android studio not installed flutter config android studio dir E Android AndroidStudio 指定android studio的目录 2 flutter d
  • Pytorch Windows C++调用(libtorch) Cmake编译 分别在python和C++中验证一致

    0 下载准备 具备vs2015 cmake libtorch libtorch https pytorch org get started locally 先用的release版本测试了一下 把lib中的dll放在bin中 然后加到环境变量
  • 云服务器网卡mac地址修改,服务器mac地址修改教程

    服务器mac地址修改教程 内容精选 换一换 您可以根据以下步骤使用管理控制台创建一个裸金属服务器实例 本教程以部署一台Web应用服务器为场景 旨在帮助您快速创建一个实例 因此不会涵盖所有可能的选项 详细的创建信息和参数说明 请参见创建裸金属
  • NGUI的学习

    一 导入和创建UIROOT 1 导入Ngui 导入哪个都可以 推荐第一个 2点击NGUI Options Reset prefabs ToolBar 插入背景prefab创建了UIROOT和摄像机及背景 二 UI Label 的使用 1 选
  • (三)kityMinder如何实现节点间的跳转

    本文章系列将会记录在做kityminder二次开发过程中 遇到的问题以及解决方法 有同事反馈需要脑图能够支持类似于xmind中的节点中的跳转的功能 但是实际上节点目前支持的链接方式只是支持跳转到外部的链接上去而已 并不能够支持节点间跳转的功
  • 微信支付——微信退款实战教程(Java版)

    微信支付之微信申请退款实战 Java版 微信支付业务场景 一 注意事项 二 微信支付退款案例 1 微信退款案例 二 微信支付官方说明 总结 微信支付业务场景 当交易发生之后一年内 由于买家或者卖家的原因需要退款时 卖家可以通过退款接口将支付
  • 利用python中GDAL读写tif文件

    废话不多说 直接上代码 读取tif from osgeo import gdal import sys def Read img2array img file path 读取栅格数据 将其转换成对应数组 img file path 栅格数据
  • 推特色情机器人账号泛滥,马斯克的“治推谋略”何在?

    据BleepingComputer消息 推特虚假机器人账户泛滥的问题不仅还未得到解决 其中传播色情信息的机器人账户近期反而严重泛滥 在安全研究小组MalwareHunterTeam最近的一项调查研究中曝光了多个传播虚假消息的机器人账户 它们
  • ASP.NET三层架构详解

    实例截图 文件 590m com f 25127180 489402295 978e99 访问密码 551685 以下内容无关 分割线 在vue3里面 我们可以通过 reactive 来实现引用类型的响应性 那么基础类型的响应性如何来实现呢
  • C语言 在数组中找到和值为目标值的两个元素

    输入你的目标值target 就能找到相加为target的两个数了 自己输入一个数组 并且设定一个目标值 target 就能在数组中找到两个相加等于target的元素了 include
  • 基于linux的调试技术

    虽然使用printk函数可以很方便的将消息写入日志文件或者控制台 但是大量使用printk函数频繁的操作日志文件或者控制台文件会严重影响到linux驱动的开发性能 因此 这就需要linux驱动在开发阶段使用printk函数输出消息 在正式发
  • 解决“Pick up system reserved threshold 500ms because of config missing”

    skywalking启动日志一直刷 Pick up system reserved threshold 500ms because of config missing 如下图 原因缺少动态的配置项 skywalking支持动态配置的配置项如
  • 【总结】为什么对累积奖励减去baseline项能起到减小方差的作用?

    深度强化学习实验室 论坛 http deeprlhub com 来源 https zhuanlan zhihu com p 98506549 作者 风清云 很多论文的工作都专注于减少policy gradient的方差 以得到更加优质且稳定