前言: 本次笔记对《强化学习(第二版)》第十三章进行概括性描述。

以下概括都是基于我个人的理解,可能有误,欢迎交流:piperliu@qq.com。

让时间回到最开始:第二章多臂赌博机。在那一章,我们还没接触状态的概念,只是在一个稳定的环境中,探索最优动作。第十三章中,我们跳过q(s,a)的映射,直接考量π(s,a)并对其数值进行迭代。在第二章中,我们的策略只是π(a),也就是各个动作的使用概率;而第十三章中,我们多了“状态”这个概念,对于不同的状态,我们的动作选择概率是不同的。至于选择哪个动作好,可以使用对于状态的映射进行建模,比如f(θx(s))=π(s)。随着章节的深入,我们发现策略梯度的方法不但理论上有优势,且能解决动作空间连续等问题,更甚,其与人工神经网络逻辑单元运行的原理是相通的利用神经网络抽取特征、建立映射适于策略梯度方法

终于学完了前13章!第13章在我看来有些突兀:其利用了3-12章我们讨论的思想,但却抛弃了我们讨论了整整长达10章的q(s,a)相关方法。不管怎么说,我终于可以进入工程部分,开始领教 DRL 了。小小白同学要变成小白同学了。

正文

13.1 策略近似及其优势

一开始,我们所讨论的还是分幕的情况与离散的状态空间。

如多臂赌博机那张中的内容,我们可以为建立一个指数柔性最大化(softmax)的策略函数:

π(a∣s,θ)=eh(s,a,θ)∑beh(s,b,θ)\pi(a|s,\theta) = \frac{e^{h(s,a,\theta)}}{\sum_b e^{h(s,b,\theta)}}π(a∣s,θ)=∑b​eh(s,b,θ)eh(s,a,θ)​

这种策略参数化的形式被称为动作偏好值的柔性最大化

当然,状态空间已经不再受限,因为我们有参数化的方法。比如θ\thetaθ可以是网络连接权重的向量,而动作偏好值的柔性最大化里,我们使用简单的特征线性组合:

h(s,a,θ)=θTx(s,a)h(s,a,\theta)=\theta^T x(s,a)h(s,a,θ)=θTx(s,a)

这节中提出了一个“动作切换的小型走廊任务”,便于我们理解基本算法的效果,代码可见:https://nbviewer.jupyter.org/github/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/Short-Corridor.ipynb。要注意,这里的策略模型很简陋,依旧还是不管状态,只考虑全局下的“向左动作”概率多大、“向右动作”概率多大。

13.2 策略梯度定理

这节开始讨论策略梯度理论优势

“基于策略梯度的方法能够比基于动作价值函数的方法有更强的收敛保证。”

分幕式情况下,我们有性能指标:

J(θ)=vπθ(s0)\textbf{J}(\theta)=v_{\pi_\theta}(s_0)J(θ)=vπθ​​(s0​)

策略梯度定理表达式即,这个性能指标与前几章讨论的更新公式中的下降项的和是成正比的:

J(θ)∝∑sμ(s)∑aqπ(s,a)∇π(a∣s,θ)\textbf{J}(\theta) \propto \sum_s \mu(s) \sum_a q_\pi (s,a) \nabla \pi(a|s,\theta)J(θ)∝s∑​μ(s)a∑​qπ​(s,a)∇π(a∣s,θ)

书上有严格的数学证明。

13.3 REINFORCE:蒙特卡洛策略梯度

Willams 提出了经典的依靠迭代的每步更新一个动作的算法 REINFORCE 。

我们有了梯度下降的方向 $J(θ)\textbf{J}(\theta)J(θ) ,从数学意义上对其进行推导、简化,就可得到更新公式:

θt+1=θt+αGt∇π(At∣St,θt)π(At∣St,θt)\theta_{t+1} = \theta_t + \alpha G_t \frac{\nabla \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}θt+1​=θt​+αGt​π(At​∣St​,θt​)∇π(At​∣St​,θt​)​

其中,∇π(At∣St,θt)π(At∣St,θt)\frac{\nabla \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}π(At​∣St​,θt​)∇π(At​∣St​,θt​)​与∇ln⁡π(At∣St,θt)\nabla \ln\pi(A_t|S_t,\theta_t)∇lnπ(At​∣St​,θt​)等价,我们称后者为迹向量。

注意这里的算法还是蒙特卡洛的,即必须每幕结束后才能更新,是离线的

13.4 带有基线的REINFORCE

我们在多臂赌博机中就讨论过:增加基线(那时叫“基准项”),对最终收敛结果没有影响,因为同状态下的所有动作概率和为常数1,其导数为0。

但是,增加基线会让收敛速度加快(有益于收敛过程)。书上说,基线减小了方差。

这里的基线是多少都无所谓,但是,对于每个状态sss来讲,其应该是相同的。或者说,基线值应该随状态变化而变化

其意义是:“在一些状态下,所有的动作的价值可能都比较大,因此我们需要一个较大的基线用以区分拥有更大值的动作和相对值不那么高的动作;在其他状态下当所有动作的值都较低时,基线也应该较小。”

那么,以 v^(St,w)\hat{v}(S_t, w)v^(St​,w) 作为基线便十分合适。书上给出了算法伪代码,即更新 θ\thetaθ 同时更新 www 。

13.5 “行动器-评判器”方法

注意之前讨论的方法都是蒙特卡洛的,都是离线的。

现在我们开始讨论在线方法。

我们则需要引入“评判器”来求得可以代替REINFORCE的“整个回报”的变量。

即将 GtG_tGt​ 替换为:

Gt:t+1−v^(St,w)=Rt+1+γv^(St+1,w)−v^(St,w)G_{t:t+1} - \hat{v} (S_t,w)=R_{t+1} + \gamma\hat{v} (S_{t+1},w) - \hat{v} (S_t,w)Gt:t+1​−v^(St​,w)=Rt+1​+γv^(St+1​,w)−v^(St​,w)

此外,因为涉及到前向视图转后向视图,书上还给出了资格迹的伪代码。这里存在两个资格迹,分别对应 www 与 θ\thetaθ 。

13.6 持续性问题的策略梯度

策略梯度定理对于持续性问题同样适用。

只不过,我们评价性能的指标也需要相应地改变:

J(θ)=r(π)\textbf{J}(\theta) = r(\pi)J(θ)=r(π)

基于遍历性假设,我们依然可以给出数学上的严格证明。

这里,我总结了带资格迹的“行动器-评判器”方法分幕的持续的情况见区别,只有二:

  • 持续性下没有折扣;
  • 持续性下 δ\deltaδ 第一项使用平均收益 R−RˉR-\bar{R}R−Rˉ。

13.7 针对连续动作的策略参数化方法

本节中针对连续动作,给了一个范例:使用正态概率分布模型对策略参数化。不再复述。

练习题都很有意义。

2020-3-22 00:48:13
Piper Liu

《强化学习》中的第13章:策略梯度方法相关推荐

  1. 【深入浅出强化学习-编程实战】 7 基于策略梯度的强化学习-Cartpole(小车倒立摆系统)

    [深入浅出强化学习-编程实战] 7 基于策略梯度的强化学习-Cartpole 小车倒立摆MDP模型 代码 代码解析 小车倒立摆MDP模型 状态输入:s=[x,x˙,θ,θ˙]s = [x,\dot{x ...

  2. 【githubshare】深度学习蘑菇书,覆盖了强化学习、马尔可夫决策过程、策略梯度、模仿学习

    GitHub 上的深度学习技术书籍:<蘑菇书 EasyRL>,覆盖了强化学习.马尔可夫决策过程.策略梯度.模仿学习等多个知识点. GitHub:github.com/datawhalech ...

  3. 强化学习(Reinforcement Learning)之策略梯度(Policy Gradient)的一点点理解以及代码的对应解释

    一.策略梯度算法推导以及解释 1.1 背景 设πθ(s)\pi_{\theta }(s)πθ​(s)是一个有网络参数θ\thetaθ的actor,然后我们让这个actor和环境(environment ...

  4. 【强化学习】spinningup最简单的策略梯度(VPG)代码详细注释——基于pytorch实现

    参考链接:https://spinningup.qiwihui.com/zh_CN/latest/spinningup/rl_intro3.html 需要配合spinningup的公式推导 全部代码 ...

  5. 漫谈强化学习中的引导搜索策略

    ©PaperWeekly 原创 · 作者|李文浩 学校|华东师范大学博士生 研究方向|强化学习 本文将介绍 GPS 方法,GPS 方法是由强化学习大牛 Sergey Levine(在最近的 ICLR ...

  6. 《深度强化学习实战》 第9章 多智能体

    第 9 章 多智能体强化学习 为什么普通的Q-learning在多智能体设置中变得不行 如何在多智能体中处理"维度诅咒" 如何实现多智能体Q-learning模型来感知其他智能体 ...

  7. 强化学习(九)- 策略梯度方法 - 梯度上升,黑箱优化,REINFORCE算法及CartPole实例

    策略梯度方法 引言 9.1 策略近似和其优势 9.2 策略梯度定理 9.2.1 梯度上升和黑箱优化 9.2.2 策略梯度定理的证明 9.3 REINFORCE:蒙特卡洛策略梯度 9.3.1 轨迹上的R ...

  8. 《强化学习周刊》第13期:强化学习应用之金融

    No.13 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,它在金融领域中的应用研究进展与成果也引发了众多关注.为帮助研究与工程人员了解 ...

  9. 强化学习中的脉冲神经网络

    简 介: 脉冲强化学习是最近兴起的将脉冲神经网络应用到强化学习中的一个研究领域.固然脉冲神经网络的引入会给强化学习带来一些新的东西,但目前的研究仍然仅仅满足于如何让算法收敛,而没有发挥出脉冲神经网络独 ...

最新文章

  1. iphone 下拉刷新控件 EGORefreshTableHeaderView 手动显示更新
  2. shell脚本编程之函数
  3. R语言droplevels函数删除因子变量(factor)没有用到的级别(level)实战
  4. java kafka分布式_Kafka分布式消息系统
  5. Java语言与C++语言在作用域上的差异
  6. 基于pip的安装lxml库报错解决方案
  7. Zookeeper和分布式环境中的假死脑裂问题(转)
  8. 完美:C# Blazor中显示Markdown并添加代码高亮
  9. 【 CDN 最佳实践】CDN 命中率优化思路
  10. 基于XML和注解的Spring Bean管理
  11. fiddler chrome_fiddler抓包教程
  12. 多个Wyze 摄像头漏洞可导致攻击者接管设备并访问视频
  13. html dl dt dd 标签语法与使用
  14. MCSA / Windows Server 2016 系列笔记 -开篇
  15. 金蝶KIS旗舰版V5.0.0研究学习
  16. 【R语言爬虫】R语言提交post请求抓取盈盈理财数据
  17. (3)riak_core系统的工作方式
  18. Python中range函数的用法
  19. TNF抑制剂相关的肿瘤风险:阿达木单抗、依那西普和英夫利昔单抗随机对照试验的荟萃分析...
  20. 自己动手写个病毒专杀工具

热门文章

  1. 人工智能与python编程_人工智能用什么编程_python与人工智能编程
  2. C语言异常处理机制——为您的C程序添加异常处理
  3. 戴尔笔记本不能识别U盘和鼠标解决方法
  4. centos用ifconfig不显示ip地址的解决方法
  5. 解决sublime text 3使用Install Package时出现There are no packages available for installation问题
  6. 为什么Apple建议使用dispatch_once在ARC下实现单例模式?
  7. .war vs .ear文件
  8. Android网络库的比较:OkHTTP,Retrofit和Volley [关闭]
  9. 标签空间而不是多个不间断的空格(“nbsp”)?
  10. python网站设计中接口的作用_python接口自动化(三)--如何设计接口测试用例(详解)...