强化学习的学习之路(四十八)2021-02-17 GAE(Generalized Advantage Estimation)
作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学习的基础知识,后面也会更新强化学习的论文阅读专栏。本来是想每一篇多更新一点内容的,后面发现大家上CSDN主要是来提问的,就把很多拆分开来了(而且这样每天任务量也小一点哈哈哈哈偷懒大法)。但是我还是希望知识点能成系统,所以我在目录里面都好按章节系统地写的,而且在github上写成了书籍的形式,如果大家觉得有帮助,希望从头看的话欢迎关注我的github啊,谢谢大家!另外我还会分享深度学习-基础知识专栏以及深度学习-论文阅读专栏,很早以前就和小伙伴们花了很多精力写的,如果有对深度学习感兴趣的小伙伴也欢迎大家关注啊。大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!不要高估一年的努力,也不要低估十年的积累,与君共勉!
GAE
GAE全称是generalized advantage estimator,几乎所有最先进的policy gradient算法实现里面都使用了该技术。
我们已经知道在策略梯度法中,如果直接使用 On-Policy 的方法交互采样,并用 每一时刻的回报作为梯度中的长期回报估计 ∑t′=tTγt′−trt′,\sum_{t^{\prime}=t}^{T} \gamma^{t^{\prime}-t} \boldsymbol{r}_{t^{\prime}},∑t′=tTγt′−trt′, 会使算法产生较大的波动,换句话说,梯度的方差会比较大。如果采用 Actor-Critic 的方法,通过模型估计状态的价值,那么模型优化的方差会减小,但是由于函数拟合的问题,这个方法会产生一定偏差。因此问题的关键就在于如何平衡偏差和方差带来的影响。
Actor Critic 的价值梯度可以表示为
∇θJ(θ)=Es,a∼τ[∑t=0∞Aπ,γ(st,at)∇θlogπθ(at∣st)]\nabla_{\theta} J(\theta)=E_{\boldsymbol{s}, a \sim \boldsymbol{\tau}}\left[\sum_{t=0}^{\infty} A^{\pi, \gamma}\left(\boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right) \nabla_{\theta} \log \pi_{\theta}\left(\boldsymbol{a}_{t} \mid \boldsymbol{s}_{t}\right)\right] ∇θJ(θ)=Es,a∼τ[t=0∑∞Aπ,γ(st,at)∇θlogπθ(at∣st)]
其中
Aπ,γ(st,at)=Qπ,γ(st,at)−Vπ,γ(st)Qπ,γ(st,at)=Est+1,at+1∼τ[∑l=0∞γlrt+l]Vπ,γ(st)=Est+1,at∼τ[∑l=0∞γlrt+l]\begin{aligned} A^{\pi, \gamma}\left(s_{t}, a_{t}\right) &=Q^{\pi, \gamma}\left(s_{t}, a_{t}\right)-V^{\pi, \gamma}\left(s_{t}\right) \\ Q^{\pi, \gamma}\left(s_{t}, a_{t}\right) &=E_{s_{t+1}, a_{t+1} \sim \tau}\left[\sum_{l=0}^{\infty} \gamma^{l} r_{t+l}\right] \\ V^{\pi, \gamma}\left(s_{t}\right) &=E_{s_{t+1}, a_{t} \sim \tau}\left[\sum_{l=0}^{\infty} \gamma^{l} r_{t+l}\right] \end{aligned} Aπ,γ(st,at)Qπ,γ(st,at)Vπ,γ(st)=Qπ,γ(st,at)−Vπ,γ(st)=Est+1,at+1∼τ[l=0∑∞γlrt+l]=Est+1,at∼τ[l=0∑∞γlrt+l]
总的来说, Aπ,γ(st,at)A^{\pi, \gamma}\left(s_{t}, a_{t}\right)Aπ,γ(st,at) 已经可以做到在保持无偏差的情况下,尽可能地降低方差值。如果我们能通过学习得到一个完美的优势函数,模型就可以得到很好的表现。但实际中直接学习优势函数比较困难,我们往往需要组合其他函数得到优势函数,同时还需要考虑偏差和方差对模型的影响,为此我们给出了一个定义: γ\gammaγ -just。当一个函数 A^t\hat{A}_{t}A^t 满足 γ\gammaγ -just 条件时,它就满足下面的公式:
Es0,a0,…∼τ[A^t(s0:∞,a0:∞)∇θlogπθ(at∣st)]=Es0,a0,…∼τ[Aπ,γ(st,at)∇θlogπθ(at∣st)]E_{s_{0}, a_{0}, \ldots \sim \tau}\left[\hat{A}_{t}\left(s_{0: \infty}, a_{0: \infty}\right) \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]=E_{s_{0}, a_{0}, \ldots \sim \tau}\left[A^{\pi, \gamma}\left(s_{t}, a_{t}\right) \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]Es0,a0,…∼τ[A^t(s0:∞,a0:∞)∇θlogπθ(at∣st)]=Es0,a0,…∼τ[Aπ,γ(st,at)∇θlogπθ(at∣st)]
如果我们找到的估计函数能够满足上面的公式,它就可以用来替换优势函数。经过推导分析我们发现, rt+γVπ,γ(st+1)−Vπ,γ(st)r_{t}+\gamma V^{\pi, \gamma}\left(s_{t+1}\right)-V^{\pi, \gamma}\left(s_{t}\right)rt+γVπ,γ(st+1)−Vπ,γ(st) 满足上述条件,是一个合格的替换 项,于是后面的工作将围绕它替换进行。
令 VVV 为一个近似的值函数,我们定义 δtV=rt+γV(st+1)−V(st),\delta_{t}^{V}=r_{t}+\gamma V\left(s_{t+1}\right)-V\left(s_{t}\right),δtV=rt+γV(st+1)−V(st), 这里的 δtV\delta_{t}^{V}δtV 可 以作为 ata_{t}at 的一个优势价值估计。如果上面的公式中 V=Vπ,γ,V=V^{\pi, \gamma},V=Vπ,γ, 那么 δtV\delta_{t}^{V}δtV 就是一个 γ\gammaγ -just 的估计函数,它可以得到 Aπ,γA^{\pi, \gamma}Aπ,γ 的一个无偏估计:
Est+1[δtVπ,γ]=Est+1[rt+γVπ,γ(st+1)−Vπ,γ(st)]=Est+1[Qπ,γ(st,at)−Vπ,γ(st)]=Aπ,γ(st,at)\begin{aligned} E_{\boldsymbol{s}_{t+1}}\left[\boldsymbol{\delta}_{t}^{V^{\pi, \gamma}}\right] &=E_{\boldsymbol{s}_{t+1}}\left[\boldsymbol{r}_{t}+\gamma V^{\pi, \gamma}\left(s_{t+1}\right)-V^{\pi, \gamma}\left(s_{t}\right)\right] \\ &=E_{s_{t+1}}\left[Q^{\pi, \gamma}\left(s_{t}, \boldsymbol{a}_{t}\right)-V^{\pi, \gamma}\left(s_{t}\right)\right]=A^{\pi, \gamma}\left(\boldsymbol{s}_{t}, \boldsymbol{a}_{t}\right) \end{aligned} Est+1[δtVπ,γ]=Est+1[rt+γVπ,γ(st+1)−Vπ,γ(st)]=Est+1[Qπ,γ(st,at)−Vπ,γ(st)]=Aπ,γ(st,at)
接下来我们考虑 nnn 步的优势函数估计,并用 A^t(k)\hat{A}_{t}^{(k)}A^t(k) 表示,可以得到
A^t(1)=δtV=−V(st)+rt+γV(st+1)A^t(2)=δtV+γδt+1V=−V(st)+rt+γV(st+1)+γ(−V(st+1)+rt+1+γV(st+2))=−V(st)+rt+γrt+1+γ2V(st+2)\begin{array}{l} \hat{A}_{t}^{(1)}=\delta_{t}^{V}=-V\left(s_{t}\right)+r_{t}+\gamma V\left(s_{t+1}\right) \\ \hat{A}_{t}^{(2)}=\delta_{t}^{V}+\gamma \delta_{t+1}^{V} \\ =-V\left(s_{t}\right)+r_{t}+\gamma V\left(s_{t+1}\right)+\gamma\left(-V\left(s_{t+1}\right)+r_{t+1}+\gamma V\left(s_{t+2}\right)\right) \\ =-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\gamma^{2} V\left(s_{t+2}\right) \end{array} A^t(1)=δtV=−V(st)+rt+γV(st+1)A^t(2)=δtV+γδt+1V=−V(st)+rt+γV(st+1)+γ(−V(st+1)+rt+1+γV(st+2))=−V(st)+rt+γrt+1+γ2V(st+2)
依此类推,可以得到
A^t(∞)=∑l=0∞γlδt+lV=−V(st)+rt+γrt+1+⋯+γkrt+k+⋯\hat{A}_{t}^{(\infty)}=\sum_{l=0}^{\infty} \gamma^{l} \delta_{t+l}^{V}=-V\left(s_{t}\right)+r_{t}+\gamma \boldsymbol{r}_{t+1}+\cdots+\gamma^{k} \boldsymbol{r}_{t+k}+\cdots A^t(∞)=l=0∑∞γlδt+lV=−V(st)+rt+γrt+1+⋯+γkrt+k+⋯
我们知道 γ\gammaγ 是一个小于 1 的数,随着 kkk 趋近于无穷大,最终 γ∞V(st+∞)→0\gamma^{\infty} V\left(s_{t+\infty}\right) \rightarrow 0γ∞V(st+∞)→0, 所 以 A^t(∞)\hat{A}_{t}^{(\infty)}A^t(∞) 这一项相当于用蒙特卡罗法对优势函数进行估计。此时我们看到,随着估计步数的增加,估计值的偏差逐渐变小,方差逐渐变大。如果我们能将这些估计值同时考虑在内,是就可以在偏差和方差之间找到更好的平衡。
A^tGAE(γ,λ)=(1−λ)(A^t(1)+λA^t(2)+λ2A^t(3)+⋯)=(1−λ)(δtV+λ(δtV+δt+1V)+λ2(δtV+γδt+1V+γ2δt+2V)+⋯)=(1−λ)(δtV(1+λ+λ2+⋯)+γδt+1V(λ+λ2+λ3+⋯)+γ2δt+2V(λ2+λ3+λ4+⋯)+⋯)=(1−λ)(δtV(11−λ)+γδt+1V(λ1−λ)+γ2δt+2V(λ21−λ)+⋯)=∑l=0∞(γλ)lδt+lV\begin{aligned} \hat{A}_{t}^{\mathrm{GAE}(\gamma, \lambda)} &=(1-\lambda)\left(\hat{A}_{t}^{(1)}+\lambda \hat{A}_{t}^{(2)}+\lambda^{2} \hat{A}_{t}^{(3)}+\cdots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}+\lambda\left(\delta_{t}^{V}+\delta_{t+1}^{V}\right)+\lambda^{2}\left(\delta_{t}^{V}+\gamma \delta_{t+1}^{V}+\gamma^{2} \delta_{t+2}^{V}\right)+\cdots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(1+\lambda+\lambda^{2}+\cdots\right)+\gamma \delta_{t+1}^{V}\left(\lambda+\lambda^{2}+\lambda^{3}+\cdots\right)\right.\\ &\left.+\gamma^{2} \delta_{t+2}^{V}\left(\lambda^{2}+\lambda^{3}+\lambda^{4}+\cdots\right)+\cdots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(\frac{1}{1-\lambda}\right)+\gamma \delta_{t+1}^{V}\left(\frac{\lambda}{1-\lambda}\right)+\gamma^{2} \delta_{t+2}^{V}\left(\frac{\lambda^{2}}{1-\lambda}\right)+\cdots\right) \\ &=\sum_{l=0}^{\infty}(\gamma \lambda)^{l} \delta_{t+l}^{V} \end{aligned} A^tGAE(γ,λ)=(1−λ)(A^t(1)+λA^t(2)+λ2A^t(3)+⋯)=(1−λ)(δtV+λ(δtV+δt+1V)+λ2(δtV+γδt+1V+γ2δt+2V)+⋯)=(1−λ)(δtV(1+λ+λ2+⋯)+γδt+1V(λ+λ2+λ3+⋯)+γ2δt+2V(λ2+λ3+λ4+⋯)+⋯)=(1−λ)(δtV(1−λ1)+γδt+1V(1−λλ)+γ2δt+2V(1−λλ2)+⋯)=l=0∑∞(γλ)lδt+lV
我们发现这个公式的最终形式比较简洁,虽然我们引人了一个新的超参数,但是公式并没有复杂太多。此时我们的估计值在偏差和方差方面得到了更好的平衡,我们可以分别计算 λ\lambdaλ 等于 0 和 1 时的值
GAE(γ,0):A^t:=δt=rt+γv(st+1)−v(st)GAE(γ,1):A^t:=∑l=0∞γlδt+l=sumt=0∞γlrt+l−v(st)\begin{array}{lrl} \operatorname{GAE}(\gamma, 0): & \hat{A}_{t}:=\delta_{t} & =r_{t}+\gamma v\left(s_{t+1}\right)-v\left(s_{t}\right) \\ \operatorname{GAE}(\gamma, 1): & \hat{A}_{t}:=\sum_{l=0}^{\infty} \gamma^{l} \delta_{t+l} & =\operatorname{sum}_{t=0}^{\infty} \gamma^{l} r_{t+l}-v\left(s_{t}\right) \end{array} GAE(γ,0):GAE(γ,1):A^t:=δtA^t:=∑l=0∞γlδt+l=rt+γv(st+1)−v(st)=sumt=0∞γlrt+l−v(st)
可以看出,当 λ=0\lambda=0λ=0 时,算法等同于计算 TD-Error,这是一个方差较低但偏差较高的算法;
当 λ=1\lambda=1λ=1 时,算法变成蒙特卡罗目标值和价值估计的差,这是一个偏差较低但方差较高的算法。我们可以通过调整 λ\lambdaλ 值使模型在两者之间得到更好的平衡。因此,
我们可以用它代替前面公式中的优势函数,此时计算的公式就变为
∇θJ(θ)=Es,a∼τ[∑t=0∞A^tGAE(γ,λ)∇θlogπθ(at∣st)]\nabla_{\theta} J(\theta)=E_{s, a \sim \tau}\left[\sum_{t=0}^{\infty} \hat{A}_{t}^{\mathrm{GAE}(\gamma, \lambda)} \nabla_{\theta} \log \pi_{\theta}\left(\boldsymbol{a}_{t} \mid s_{t}\right)\right] ∇θJ(θ)=Es,a∼τ[t=0∑∞A^tGAE(γ,λ)∇θlogπθ(at∣st)]
当时第一次看GAE的时候很不理解为什么GAE选定了 δtV=rt+γV(st+1)−V(st)\delta_{t}^{V}=r_{t}+\gamma V\left(s_{t+1}\right)-V\left(s_{t}\right)δtV=rt+γV(st+1)−V(st)这种形式,后面看到吴恩达老师1998年reward shaping的论文,在做reward shaping的时候将reward加上一个势能函数的差值就保障了加入reward shaping之后策略没有变坏:
r~(s,a,s′)=r(s,a,s′)+γΦ(s′)−Φ(s)\tilde{r}\left(s, a, s^{\prime}\right)=r\left(s, a, s^{\prime}\right)+\gamma \Phi\left(s^{\prime}\right)-\Phi(s) r~(s,a,s′)=r(s,a,s′)+γΦ(s′)−Φ(s)
感觉GAE就是将V函数替代r函数的一种操作,也就是说GAE是一种更加“长视”的reward shaping的方法?不知道这么理解对不对,欢迎大家讨论。
上一篇:强化学习的学习之路(四十七)2021-02-16 TRPO实现策略上的单调提升(Monotonic Improvement with TRPO )
下一篇:强化学习的学习之路(四十九)2021-02-18基于GAE和TRPO的值函数优化
强化学习的学习之路(四十八)2021-02-17 GAE(Generalized Advantage Estimation)相关推荐
- 学习淘淘商城第四十八课(商品搜索功能Controller实现)
在taotao-search-web工程需要添加对Search服务的引用,如下图所示. springmvc.xml文件所有代码如下: <?xml version="1.0" ...
- 六级考研单词之路-四十八
Day48 1.clasp[n.钩,扣,紧抱/握:v.抱紧,握紧,扣紧] eg: He gave my head a warm clasp. 他热切地紧握我的手. 2.overcome[v.克 ...
- OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算
OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...
- JavaScript学习(四十八)—原型对象的增删改查
JavaScript学习(四十八)-原型对象的增删改查 一.构造方法与原型对象的图解 二.型对象的增删改查 (一).什么是原型 每个函数都会有一个属性--prototype属性,这个属性都会有一个对象 ...
- 如何选择适合你的兴趣爱好(四十八),手风琴
围城网的摇摇今天给大家带来了"如何选择适合你的兴趣爱好"系列专辑的第四十八讲--手风琴.手风琴是一种既能够独奏,又能伴奏的簧片乐器,不仅能够演奏单声部的优美旋律,还可以演奏多声部的 ...
- [Python从零到壹] 四十八.图像增强及运算篇之形态学开运算、闭运算和梯度运算
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 该多吃素的四十八个理由
该多吃素的四十八个理由 动物的痛苦 1.无数的动物由于大量的饲养而被虐待. 2.不杀生是培养慈悲心的第一步.吃肉是很残忍的习惯为什么呢?希腊作家布鲁达克曾在他写的"有关肉食的短文″中指出:人类已经 ...
- 【零基础学Java】—自定义异常(四十八)
[零基础学Java]-自定义异常(四十八) 自定义异常类:java提供的异常类,不够我们使用,需要自己定义一个异常类 格式: public class XXXException extends Exc ...
- 罗永浩:我今年四十八岁,还可以承受无数次的失败;iOS14 或将推出系统级「小程序」功能; PyCharm新版发布| 极客头条...
整理 | 屠敏 头图 | CSDN 下载自视觉中国 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦, ...
- 【Visual C++】游戏开发四十八 浅墨DirectX教程十六 三维地形系统的实现
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...
最新文章
- Linux下sh/bash/source/.命令的区别(转)
- Linux下一些操作命令
- dubbo扫描第三方包_今天来浅谈一下dubbo
- python起步输入-第 4 节 小Python 起步
- 【星球知识卡片】注意力机制发展如何了,如何学习它在各类任务中的应用?...
- Android 7.0 源码分析项目一期竣工啦
- Superhero Transformation
- PHP反射之类的反射
- taz文件_我们将赠送LulzBot Taz 6 3D打印机
- Qt 插件学习(一)
- 用TMG搭建×××服务器(二)---L2TP/IPsec ×××
- poj 1657 Distance on Chessboard
- latex 常用学习/模板/公式输入网站合集
- 如何使用python刷博客浏览量---第一种方法
- 编译flink1.9.0 报flink-fs-hadoop-shaded找不到
- 笔记本cpu温度多少正常?温度过高的4个常见原因
- Shave Beaver! CodeForces - 331B2 (线段树)
- SpringCloud—笔记(三)高级篇
- sudo apt-get update 报错 ubuntu xenial InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)解决
- 蚂蚁帮路由器Antbang A3s V2.0刷入OpenWrt/LEDE
热门文章
- 怎么把excel转换成word
- linux下安装虚拟天文馆,如何在Ubuntu 18.04/17.10/16.04中安装Stellarium 0.17.0 虚拟天文馆...
- 【Git】git add
- 【Git】git tag
- 涨跌的例题用C语言编辑,基于LSTM的股票涨跌分析-pytorch
- bug_ warning: control reaches end of non-void function
- 微信小程序 java社区快递柜取件管理系统python php
- 某程序员入职后,发现领导是前公司的下属
- Layer Norm
- excel表格公式无效、不生效的解决方案及常见问题、常用函数