深度强化学习实验室
论坛: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
完
总结3: 《强化学习导论》代码/习题答案大全
总结6: 万字总结 || 强化学习之路
完
第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)基准环境
第98篇:全面总结(值函数与优势函数)的估计方法
第97篇:MuZero算法过程详细解读
第96篇: 值分布强化学习(Distributional RL)总结
第95篇:如何提高"强化学习算法模型"的泛化能力?
第94篇:多智能体强化学习《星际争霸II》研究
第93篇:MuZero在Atari基准上取得了新SOTA效果
第91篇:详解用TD3算法通关BipedalWalker环境
第88篇:分层强化学习(HRL)全面总结
第85篇:279页总结"基于模型的强化学习方法"
第84篇:阿里强化学习领域研究助理/实习生招聘
第83篇:180篇NIPS2020顶会强化学习论文
第81篇:《综述》多智能体强化学习算法理论研究
第80篇:强化学习《奖励函数设计》详细解读
第79篇: 诺亚方舟开源高性能强化学习库“刑天”
第77篇:深度强化学习工程师/研究员面试指南
第75篇:Distributional Soft Actor-Critic算法
第74篇:【中文公益公开课】RLChina2020
第73篇:Tensorflow2.0实现29种深度强化学习算法
第72篇:【万字长文】解决强化学习"稀疏奖励"
第71篇:【公开课】高级强化学习专题
第70篇:DeepMind发布"离线强化学习基准“
第66篇:分布式强化学习框架Acme,并行性加强
第65篇:DQN系列(3): 优先级经验回放(PER)
第64篇:UC Berkeley开源RAD来改进强化学习算法
第61篇:David Sliver 亲自讲解AlphaGo、Zero
第59篇:Agent57在所有经典Atari 游戏中吊打人类
第58篇:清华开源「天授」强化学习平台
第57篇:Google发布"强化学习"框架"SEED RL"
第53篇:TRPO/PPO提出者John Schulman谈科研
第52篇:《强化学习》可复现性和稳健性,如何解决?
第51篇:强化学习和最优控制的《十个关键点》
第50篇:微软全球深度强化学习开源项目开放申请
第49篇:DeepMind发布强化学习库 RLax
第48篇:AlphaStar过程详解笔记
第47篇:Exploration-Exploitation难题解决方法
第45篇:DQN系列(1): Double Q-learning
第44篇:科研界最全工具汇总
第42篇:深度强化学习入门到精通资料综述
第41篇:顶会征稿 || ICAPS2020: DeepRL
第40篇:实习生招聘 || 华为诺亚方舟实验室
第39篇:滴滴实习生|| 深度强化学习方向
第37篇:Call For Papers# IJCNN2020-DeepRL
第36篇:复现"深度强化学习"论文的经验之谈
第35篇:α-Rank算法之DeepMind及Huawei改进
第34篇:从Paper到Coding, DRL挑战34类游戏
第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原理与代码实现
第17篇:AI Paper | 几个实用工具推荐
第16篇:AI领域:如何做优秀研究并写高水平论文?
第15篇:DeepMind开源三大新框架!
第13篇:OpenSpiel(28种DRL环境+24种DRL算法)
第11篇:DRL在Unity自行车环境中配置与实践
第8篇:ReinforceJS库(动态展示DP、TD、DQN)
第5篇:深度强化学习在阿里巴巴的技术演进
第4篇:深度强化学习十大原则
第2篇:深度强化学习的加速方法