作者:Edward
链接:https://zhuanlan.zhihu.com/p/68407730
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  1. 前言 本文主要论述强化学习策略迭代流程以及策略迭代算法收敛证明,强调逻辑的合理流畅,但不会非常严谨。2. 策略迭代流程2.1 总流程 第1步:策略估计( Policy Evaluation ): 计算当前策略下每个状态的价值,此价值计算过程称为“状态价值函数”; 第2步: 策略提升 ( Policy Improvment ) : 计算每个状态每个动作的价值,此价值计算过程称为“动作状态价值函数”,对每个状态取每个动作中使得价值函数最大动作作为当前状态新的动作(策略),注意后面会证明更新后的策略必定使得第1步中所述“状态价值”不小于原来的策略,即当前策略肯定不会比原来策略差; 第3步:策略迭代停止判断:判断之前策略每个状态对应的动作分布组成的整体动作策略)和更新后的策略是否有不同,不同则说明策略还可能有改进的空间,回到第1步重新按顺序循环,若相同说明策略已经是最优了,没法再更新了,停止迭代循环;2.2 流程细节2.2.1 策略估计细节 总体流程的第1步是策略估计,即计算每个状态的价值,任意状态的价值函数定义如下,实际上是一个期望,让状态价值最大化,实际上就是让期望价值最大化: (式 2.1 )( 式2.1 )可以分解为两部分的和,如下: 一部分是到达新状态的即刻奖励的期望,即刻奖励实际上是和新状态相关(网上资料写的是和动作以及新状态相关),所以即刻奖励是明确的,相对第二部分对可视为常数项。 另一部分是所到达新状态的期望奖励的期望 ( 期望的期望,递归 ),新状态的期望奖励乘以一个 0~1 的衰减系数,这个系数用于保证价值函数收敛;下面我们将状态价值函数用矩阵形式表达:状态是有限的,设状态集合 状态价值矩阵为 计算状态价值函数所用的概率矩阵为 , 如下:第一部分直接用下式表示 在当前状态、动作、新状态确定的情况下, 也是确定的,为常数矩阵,所以所有状态的价值函数用矩阵形式表示为 ( 式2.2 )如果式2.2明显的表明我们要求的每个状态组成的价值函数矩阵 是 下面函数的不动点,即当 . ( 式2.3 )综上,我们明确策略估计实际上就是求每个状态的价值,即它们所组成的矩阵 , 而这个 就是式2.3的不动点。 如何求不动点?随机设置一个 x 值,再计算F(x),然后将F(x)作为新的x输入,得到 F ( F ( x ) ),依此不断递归(迭代)循环,直到x 和 F(x) 之间差值非常小停止,这里差值非常小相当于 F(x) - x 趋于0,即 F(x) = x 按照上述方法从一个随机x值开始,不断迭代必定能得到一个不动点?这在第3节中证明。2.2.2 策略提升细节 策略提升就是确定更好 ( 不比原来动作策略差 ) 的动作策略,的过程,评价当前状态好坏用前述的状态价值函数 就可以了,当要确定某个状态下用哪个动作比较好,就涉及到状态和动作两个变量,就得用“状态-动作价值函数”, 如下式. ( 式2.4 ) 所谓策略提升 ( Policy Improvment ) 实际上就是遍历每个状态,并在每个状态下,遍历每个动作,分别计算被遍历到的状态下每个动作对应的价值 , 取使得价值最大的动作作为当前状态的最新策略, 为状态s对应的动作a的分布,有下式: 为离散分布, 当然这个分布比价特殊,采用使得状态动作价值最大的动作 的概率为 1 , 这种即是所谓的 “贪婪”策略; 遍历每个状态,都按如上方法进行策略更新,那么原来的策略 就更新为新的策略 。第3节会证明用这个策略得到的 ( 式 2.1 ) 状态价值 必定不小于原策略得到的状态价值 ,即 >= ,不小于说明策略提升了。3. 策略迭代收敛证明3.1 策略估计中不动点存在且递归迭代收敛到不动点证明根据 (式2.2)和(式2.3)可知策略估计中的价值矩阵 ,实际是求F(x) 的不动点。下面我们引出和不动点相关的“压缩映射定理”( Contracting Mapping Theorem ):Contracting Mapping Theorem 对于完备的度量空间 ( metric space ) <M, d>,如果 是它的一个压缩映射, 那么*在该 metric space 中,存在唯一的点 满足 .*并且,对于任意的 ,定义序列 , , 该序列会收敛于 即 如果我们确定( 式2.3 ) 满足:1. x 取值归属于某个完备的度量空间2. F(x) 也同样归属于 x 所归属的度量空间,并且映射 F 满足压缩映射那么 初始值取度量空间中的任意值 ,都能通过不断的递归迭代 得到 不动点 ,这个 就是我们求的状态价值 ,这里再描述下递归迭代:随机取初始值 迭代 n=1 次: 迭代n = 2次: 迭代n = 3次: …实际实现时,为了求不动点,我们不可能迭代无穷次,一般迭代到 和 相差很小时停止迭代.上面又涉及到两点:度量空间和完备的度量空间2. 压缩映射度量空间: 度量空间(Metric Space),在数学中是指一个集合,并且该集合中的任意元素之间的距离是可定义的。比较常见的度量空间比如 3D 欧式空间。度量空间以及完备性的详细定义讲解请参考资料 [1]。度量空间的完备性: 直观的,完备的度量空间 <M, d> 是没有缺少的点,这个缺少在数学上用“当且仅当所有在M中的Cauchy序列都会收敛到M中”来表达的,就是说所有逐渐收敛的数列(Cauchy)都不会收敛到M以外(没有缺少,完备);请参考资料 [1]压缩映射:对于一个度量空间< M, d >,和一个函数映射: ,如果存在实数 使得对于 M 中的任意两个点 x , y 满足 那么 f 就是该度量空间中的一个压缩映射,其中满足条件的最小的k值称为 Lipschitz 常数.压缩映射的直观意义是映射后两点之间的距离小于映射前两点之间的距离,这个小于就表达了“压缩”,k是压缩系数,k越小,压缩越厉害。 状态价值不动点存在且任意值递归迭代收敛到不动点证明:前面已经定义 我们考虑 是全空间(我也不是很理解,我们定义这个空间是全的,就是必定是完备的这个意思?),因此 是一个完备的度量空间. 属于该度量空间。对于 我们可以证明F是一个压缩映射,具体证明如下: d( F(u) , F(v) ) = 其中 是用来表示前述无穷范数的符号,其实上述资料[1]中证明过程中的第一个不等式没怎么明白,对于第一个不等式,是不是不需要的?应该是如下过程更合理:考虑到 是一个概率分布,我们有 至此我们证明了d( F(u) , F(v) ) ,即 F 是一个压缩映射;那么根据压缩映射定理,我们得到结论: 存在不动点,设 就是此不动点,即 从任意初始价值开始,经过F(x)的不断递归迭代求值,必定会收敛到不动点 .3.2 策略提升及策略会收敛的证明3.2.1 策略提升证明 原策略为 ,使用使得每个状态的 取值为最大的动作 a 组成新动作策略,由于 是根据动作分布的期望,但其实这个分布是比较特殊的,就是某个动作上的概率分布为1,其它动作概率分布值为0 ,直观地(显然的)我们计算所有a对应的 ,并比较取最大值,那么我们必然有 ,其中 那么对于每个状态 s , 更新后的策略 (注: 就是在当前状态和当前动作明确情况下的奖励期望) ( 注:策略更新是贪婪的,即策略概率分布集中在使得 最大的动作 a 上,所以实际如果状态明确,状态下所采取的动作也是明确的,也就是说状态和动作明确下的奖励期望与状态明确下奖励期望是相等的 ) (注:同样的,我们有 ) … ( 注:上面这段实际上是将期望递归无限展开,得到了新策略下奖励的原始形式,式2.1 状态价值Bellman函数就是通过这个原始形式推导而来的,这个推导实际上就是上述推导的逆过程 ,那个期望的期望的期望… 等于原始形式的期望这个是怎么得到的,我也不知道如何证明吆,只是直觉上觉得是合理 )最终我们得到 也就是根据 这个贪婪策略更新所有状态的动作得到的新策略必定使得每个状态的价值不小于更新前的,这样我们就证明了策略是提升的,不会倒退;3.2.2 策略更新收敛证明 资料[1] 中最后讨论了所谓的“贝尔曼最优方程”,如下: 根据上述bellman最优方程实在推导不出下面不等式: 因为取得是最优的动作a, 因而实际上 和 对应的 a 很可能是不同的,所以目前看到的资料都没有给出上述不等式比较详细合理的证明过程,感觉在a不同的情况下,上述不等式是不成立的; 自己想了下证明方法,我们先明确策略收敛的意思:迭代t是的所有状态动作策略组成的动作策略为 ,同样 迭代 t+1 为 ,若 = 表示策略迭代收敛; 只要每次迭代时 求 遍历每个策略次序保持一致,我们容易得到 若 ,那么必定有新动作 等于原动作 a ,即 .我们已知状态对应的策略动作是有限的,因而每个状态的对应的策略动作组成的整体策略也是有限的,因为有限的组合也是有限的。因而策略更新不收敛的原因只有“策略震荡”导致,所谓策略震荡指策略A更新后得到策略B,策略B更新后又到A,若 A = B ,那么根据策略迭代收敛定义,我们会停止迭代,A=B 就是我们的最佳策略,所以 A != B 。 根据前述策略提升证明以及 时才会有 , 所以如果不收敛,必定震荡,震荡必有A != B,必定会导致策略价值(不同的不动点)不断的提升,但是,既然策略是有限的,那么不动点也是有限的,不动点中必定有一个是最大的,就是我们必定有最优的不动点,这和不断的提升是矛盾的;所以在满足迭代时每个状态遍历动作的次序保持一致的条件下,策略更新必定会收敛。4. 参考文档[1] 《如何证明迭代式策略评价、值迭代和策略迭代的收敛性?》陈达贵:如何证明迭代式策略评价、值迭代和策略迭代的收敛性?[2] 《Reinforcement Learning , An Introduction 》second edtion , Richard S.Sutton And Andrew G. Barto

强化学习策略迭代及收敛证明相关推荐

  1. 干货!对抗深度强化学习策略的训练和理论保障

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 在一个两人深度强化学习任务中,最近的研究表明,攻击者可以学习一种敌对策略,这种策略会触发目标代理表现不佳,甚至以不希望的方式做出反应.然 ...

  2. 深度学习:Q-learning收敛证明

    Q-learning收敛证明 https://github.com/borninfreedom/DeepLearning/blob/master/Papers/ProofQlearning.pdf

  3. 强化学习策略梯度方法之: REINFORCE 算法(从原理到代码实现)

    强化学习策略梯度方法之: REINFORCE 算法 (从原理到代码实现) 2018-04-01  15:15:42   最近在看policy gradient algorithm, 其中一种比较经典的 ...

  4. 不动点迭代方程收敛判据及MATLAB实现

    %函数 fx=x.^3-3.*x+1; %收敛性判断 xl=0; xr=1; %不动点所在区间 x=xl:0.001:xr; y=(x.^3+1)./3;%需要修改判断的方程 if max(y)> ...

  5. 关于欧几里得算法(Euclidean Algorithm)的迭代次数的证明

    欧几里得算法(Euclidean Algorithm)的迭代次数和算法复杂度的证明 我们直到欧几里得算法是计算两个数的最大公因数(或者两个多项式的最大公因式),并且在其他算法中(例如因子分解算法)经常 ...

  6. Java——迭代公式收敛性

    F(x)=x3-x2-1=0在[1.3,1.6]内的根 可改写方程为 x=(x-1)-0.5 迭代公式为Xk+1=(Xk-1)-0.5 java实现 import java.text.DecimalF ...

  7. 高斯牛顿迭代matlab程序,高斯—牛顿法(LM法)迭代无法收敛,代码如下,R14b版本...

    本帖最后由 大禹man 于 2017-2-25 16:07 编辑 需要拟合的函数为zeta,用omeg的前两个数计算得到系数a0和a1,他们会在循环过程中随着miu0和miu1变化,我的程序如下,可以 ...

  8. Pytorch 实现强化学习策略梯度Reinforce算法

    一. 公式推导 这里参考邱锡鹏大佬的<神经网络与深度学习>第三章进阶模型部分,链接<神经网络与深度学习>. ` 伪代码: 二.核心代码 def main():env = gym ...

  9. 一文概述2017年深度学习NLP重大进展与趋势

    本文,我将概述 2017 年深度学习技术在 NLP 领域带来的进步.可能会有遗漏,毕竟涵盖所有论文.框架和工具难度太大.我想和大家分享这一年我最喜欢的一些研究.我认为 2017 年是 NLP 领域的重 ...

  10. 深度学习(1)---2017年深度学习NLP重大进展与趋势

    深度学习(DL)架构和算法在图像识别.语音处理等领域实现了很大的进展.而深度学习在自然语言处理方面的表现最初并没有那么起眼,不过现在我们可以看到深度学习对 NLP 的贡献,在很多常见的 NLP 任务中 ...

最新文章

  1. 【转】android自定义控件
  2. 『中级篇』docker之wordpress容器SSL(番外篇)(78)
  3. java-运算符以及简单运用
  4. SpringBoot入门(1)——创建springBoot项目
  5. Linux 利用lsof命令恢复删除的文件
  6. android gridview item 边框,Android实现为GridView添加边框效果
  7. C指针原理(19)-C指针基础
  8. 请给出linux中查看系统已经登录用户的命令?
  9. centOS chkconfig 使用
  10. 我的教师生涯4:被忘却的第一节课
  11. 51NOD 1244 莫比乌斯函数之和
  12. 去掉a标签下划线_编辑器、HTML基础、编码、基础标签
  13. Thinkpad T430 重装系统不能从光盘或者U盘启动/BIOS设置 关于T430 无法光盘引导安装-BIOS设置问题...
  14. 头条鲁班新户千展费用_今日头条广告投放的费用大概是多少?
  15. caffe:最优化方法
  16. Openstack Kilo安装错误汇总
  17. Grafana常用定制修改
  18. 好的股票程序化交易api接口模型该怎么做?
  19. qt android png透明,Qt处理照片实现白色背景转透明
  20. Omnipeek11抓包工具操作方法

热门文章

  1. 面试留“家庭作业”的公司,都TM是耍流氓!
  2. 六十星系之14廉贞贪狼坐巳亥
  3. 贡献一个fisco-bcos-browser-front基于官方的代码改造的兼容手机浏览器和pc浏览器
  4. jsp——四大作用域详解
  5. php-模板方式模式实现
  6. AiHi+翼次元学院儿童自然感知实践“几米小甜田”+优慧码| Wit++
  7. php页面背景url不显示图片,background-image:url(XXXX.gif)为何不显示背景图片_html/css_WEB-ITnose...
  8. dreamweaver动漫HTML网站制作——海贼王主题网页1页海贼王我当定了(HTML+CSS)
  9. MSM8260,OMAP4430,TEGRA2,EXYNOS 4210详细分析
  10. linux下数学公式的编辑器,如何利用开源中国Markdown/编辑器优雅的写出数学公式?(KaTeX公式使用篇)...