作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在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=sum⁡t=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​:=δt​A^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)相关推荐

  1. 学习淘淘商城第四十八课(商品搜索功能Controller实现)

    在taotao-search-web工程需要添加对Search服务的引用,如下图所示. springmvc.xml文件所有代码如下: <?xml version="1.0" ...

  2. 六级考研单词之路-四十八

    Day48 1.clasp[n.钩,扣,紧抱/握:v.抱紧,握紧,扣紧] eg: He gave my head a warm clasp.     他热切地紧握我的手. 2.overcome[v.克 ...

  3. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  4. JavaScript学习(四十八)—原型对象的增删改查

    JavaScript学习(四十八)-原型对象的增删改查 一.构造方法与原型对象的图解 二.型对象的增删改查 (一).什么是原型 每个函数都会有一个属性--prototype属性,这个属性都会有一个对象 ...

  5. 如何选择适合你的兴趣爱好(四十八),手风琴

    围城网的摇摇今天给大家带来了"如何选择适合你的兴趣爱好"系列专辑的第四十八讲--手风琴.手风琴是一种既能够独奏,又能伴奏的簧片乐器,不仅能够演奏单声部的优美旋律,还可以演奏多声部的 ...

  6. [Python从零到壹] 四十八.图像增强及运算篇之形态学开运算、闭运算和梯度运算

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. 该多吃素的四十八个理由

    该多吃素的四十八个理由   动物的痛苦 1.无数的动物由于大量的饲养而被虐待. 2.不杀生是培养慈悲心的第一步.吃肉是很残忍的习惯为什么呢?希腊作家布鲁达克曾在他写的"有关肉食的短文″中指出:人类已经 ...

  8. 【零基础学Java】—自定义异常(四十八)

    [零基础学Java]-自定义异常(四十八) 自定义异常类:java提供的异常类,不够我们使用,需要自己定义一个异常类 格式: public class XXXException extends Exc ...

  9. 罗永浩:我今年四十八岁,还可以承受无数次的失败;iOS14 或将推出系统级「小程序」功能;​ PyCharm新版发布| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自视觉中国 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦, ...

  10. 【Visual C++】游戏开发四十八 浅墨DirectX教程十六 三维地形系统的实现

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

最新文章

  1. Linux下sh/bash/source/.命令的区别(转)
  2. Linux下一些操作命令
  3. dubbo扫描第三方包_今天来浅谈一下dubbo
  4. python起步输入-第 4 节 小Python 起步
  5. 【星球知识卡片】注意力机制发展如何了,如何学习它在各类任务中的应用?...
  6. Android 7.0 源码分析项目一期竣工啦
  7. Superhero Transformation
  8. PHP反射之类的反射
  9. taz文件_我们将赠送LulzBot Taz 6 3D打印机
  10. Qt 插件学习(一)
  11. 用TMG搭建×××服务器(二)---L2TP/IPsec ×××
  12. poj 1657 Distance on Chessboard
  13. latex 常用学习/模板/公式输入网站合集
  14. 如何使用python刷博客浏览量---第一种方法
  15. 编译flink1.9.0 报flink-fs-hadoop-shaded找不到
  16. 笔记本cpu温度多少正常?温度过高的4个常见原因
  17. Shave Beaver! CodeForces - 331B2 (线段树)
  18. SpringCloud—笔记(三)高级篇
  19. sudo apt-get update 报错 ubuntu xenial InRelease 明文签署文件不可用,结果为‘NOSPLIT’(您的网络需要认证吗?)解决
  20. 蚂蚁帮路由器Antbang A3s V2.0刷入OpenWrt/LEDE

热门文章

  1. 怎么把excel转换成word
  2. linux下安装虚拟天文馆,如何在Ubuntu 18.04/17.10/16.04中安装Stellarium 0.17.0 虚拟天文馆...
  3. 【Git】git add
  4. 【Git】git tag
  5. 涨跌的例题用C语言编辑,基于LSTM的股票涨跌分析-pytorch
  6. bug_ warning: control reaches end of non-void function
  7. 微信小程序 java社区快递柜取件管理系统python php
  8. 某程序员入职后,发现领导是前公司的下属
  9. Layer Norm
  10. excel表格公式无效、不生效的解决方案及常见问题、常用函数