心得复述知识体系:《强化学习》中的蒙特卡洛方法 Monte Carlo Methods in Reinforcement Learning
前言: 刚刚读完 Sutton 的《强化学习(第二版)》第5章:蒙特卡洛方法。为了巩固本章收获,笔者将在本文中用尽量简单直白的语言复述本章的思想,各个知识点之间的关系。同时,这方便笔者日后进行复习,也与他人分享了心得。
文章目录
- 各小节间结构关系
- 补充知识点与心得
- [1] 重要度采样比心得
- [2] 增量式实现更新公式简单推导
- [3] 单状态MDP中,$\pi (\text{left} | s) = 1$策略下的期望
- 实例代码
笔者阅读的是中文书籍,提到的具体公式笔者将给出其所在的英文版本的页码,英文书籍原文见 Sutton 本人官网:
http://incompleteideas.net/book/the-book.html。
本章目录:
5.1 蒙特卡洛预测
5.2 动作价值的蒙特卡洛估计
5.3 蒙特卡洛控制
5.4 没有试探性出发假设的蒙特卡洛控制
5.5 基于重要度采样的离轨策略
5.6 增量式实现
5.7 离轨策略蒙特卡洛控制
5.8 折扣敏感的重要度采样
5.9 每次决策型重要度采样
5.10 本章小结
各小节间结构关系
首先,本章介绍中指出蒙特卡洛的优点与特殊性,即:
- 无需拥有完备的关于环境的信息,蒙特卡洛方法从真实或模拟的环境中交互采样即可;
- 蒙特卡洛是基于每一幕进行改进的,而非每一步(而非每一次动作)进行改进(be incremental in an episode-by-episode sense, but not in a step-by-step (online) sense);
- 蒙特卡洛方法在马尔科夫性不成立时性能损失较小,因为不需要用后继状态的估计值来更新当前的估值。
基于上述特点,在已知环境中的很多幕的序列的情况下,“5.1 蒙特卡洛预测”提出了两种蒙特卡洛预测方法:
- 首次访问型MC预测算法(first-visit MC method);
- 每次访问型MC预测算法(every-visit MC method)。
“5.2 动作价值的蒙特卡洛估计”则告诉读者:在实际环境中,很难保证所有“状态-动作”都出现过一遍,因此可能有采样不足的问题。因此,我们可以通过设置每个“状态-动作”的第一次采样的概率都不为0,来进行 试探性出发 。或者使用别的思想。接下来的讨论中, 我们先保留试探性出发的假设 。
基于广义策略迭代(GPI)的思想,“5.3 蒙特卡洛控制”讨论了使用贪心更新策略下,蒙特卡洛算法的向最优策略的收敛性(数学上可以证明,见P97-98),并且,给出了 基于试探性出发的蒙特卡洛(蒙特卡洛 ES) 算法框架。
值得注意的是,为了保证蒙特卡洛算法收敛,我们做了两个假设:
- 试探性出发;
- 在进行策略评估时有无限多幕的样本序列进行试探。
为了在应用中消除两个假设的影响,我们需要设计算法。 基于试探性出发的蒙特卡洛(蒙特卡洛 ES)采用了GPI的思想,即不再要求在策略改进前就完成策略评估,这可以有效消除假设2的影响。
“5.4 没有试探性出发假设的蒙特卡洛控制”以后的内容则是讨论如何消除假设1的影响。
为了消除假设1(“试探性出发”)的影响,我们采用:
- 同轨策略(on-policy);
- 离轨策略(off-policy)。
在通过策略中,我们观测到的“状态、动作、回报”序列是遵从我们的策略的,在我看来,可以理解为: 我们一边观测我们的系统,一边改进它;但是并非在线改进,而是以幕为单位进行改进,即遵循:“由策略生成序列-由序列更新动作期望-由期望更新最优动作-进而更新策略” 。其算法框图见书P101:
但是,注意到“由策略生成序列”这个步骤。在很多情况下,我们得到的序列并非是我们完全可控的,即 我们无法由我们自己的策略生产序列 。这就需要一种 能够使用与自己策略无关的序列,来更新自己策略的方法了,即离轨策略。
离轨策略相对复杂,书上分为几个小节对其进行分步讲解:
- “5.5 基于重要度采样的离轨策略”本节中主要讨论了评估离轨序列价值所要用到的概念:重要度采样比,并且提出了“普通重要度采样”与“加权重要度采样”,告诉读者“加权重要度采样”的估计方差为1,而非“普通重要度采样”的无穷,但是“加权重要度采样”是有偏的,偏差会收敛到0。 其中,我还对重要度采样比有一点心得,见[1] ;
- “5.6 增量式实现”则对价值更新公式做了一个很简单的推导[2];
- 现在有了 能够估计离轨策略价值 的前提,可以开始讨论如何对策略进行更新了,“5.7 离轨策略蒙特卡洛控制”给出了 离轨策略MC控制算法 ,并附有算法框图。
- “5.8 折扣敏感的重要度采样”讨论了:如果考虑(回报中的)折扣,那么在离轨策略中,如何考虑回报、更新价值。这减小了方差,更利于收敛,即 折扣敏感的重要度采样 ;
- “5.9 每次决策型重要度采样”讨论了:不考虑折扣,也可减小方差。使用 每次决策型重要度采样 来进行无偏估计即可。
书上给出了2个例子(有代码进行实现):
- 二十一点游戏,用于说明蒙特卡洛的基本思想;
- 单状态MDP,用于说明普通重要度采样的方差不收敛性。我对于证明π(left∣s)=1\pi (\text{left} | s) = 1π(left∣s)=1策略下的期望有一点心得,见[3]。
补充知识点与心得
[1] 重要度采样比心得
重要度采样比定义为:在目标策略和行动策略轨迹下的相对概率。经过推导,即
ρt:T−1=∏k=tT−1π(Ak∣Sk)b(Ak∣Sk)\rho_{t:T-1} = \prod_{k=t}^{T-1} \frac{\pi (A_k | S_k)}{b(A_k | S_k)}ρt:T−1=k=t∏T−1b(Ak∣Sk)π(Ak∣Sk)
为什么这么定义这个参数,或者说,长成这样的公式有什么用?
我们来看其使用场景,普通重要度采样:
V(s)=∑t∈τ(s)ρt:T(t)−1Gt∣τ(s)∣V(s) = \frac{\sum_{t \in \tau(s)} \rho_{t:T(t)-1} G_t}{|\tau(s)|}V(s)=∣τ(s)∣∑t∈τ(s)ρt:T(t)−1Gt
加权重要度采样:
V(s)=∑t∈τ(s)ρt:T(t)−1Gt∑t∈τ(s)ρt:T(t)−1V(s) = \frac{\sum_{t \in \tau(s)} \rho_{t:T(t)-1} G_t}{\sum_{t \in \tau(s)} \rho_{t:T(t)-1}}V(s)=∑t∈τ(s)ρt:T(t)−1∑t∈τ(s)ρt:T(t)−1Gt
其中,二者的期望分别接近vπ(s)v_{\pi}(s)vπ(s)与vb(s)v_{b}(s)vb(s),而这个 重要度采样比 在其中的作用为:当观测值贴近策略π\piπ时,此时取得的G更加重要,影响更大,因此其系数 重要度采样比 增大。
[2] 增量式实现更新公式简单推导
把下式转换为增量式:
Vn=∑k=1n−1WkGk∑k=1n−1Wk,n≥2V_n = \frac{\sum^{n-1}_{k=1}W_k G_k}{\sum^{n-1}_{k=1}W_k}, \quad n \ge 2Vn=∑k=1n−1Wk∑k=1n−1WkGk,n≥2
书上没有给出,因为太简单了,我在这里证明一下。
Vn+1=∑k=1nWkGk∑k=1nWk,n≥2=1∑k=1nWk(WnGn+Vn∑k=1n−1Wk)=1∑k=1nWk(WnGn+Vn(∑k=1nWk−Wn))=Vn+1∑k=1nWk(WnGn−WnVn)\begin{aligned} V_{n+1} & = \frac{\sum^{n}_{k=1}W_k G_k}{\sum^{n}_{k=1}W_k}, \quad n \ge 2 \\ & = \frac{1}{\sum^{n}_{k=1}W_k} (W_n G_n + V_n \sum^{n-1}_{k=1} W_k) \\ & = \frac{1}{\sum^{n}_{k=1}W_k} (W_n G_n + V_n (\sum^{n}_{k=1}W_k - W_n)) \\ & = V_n + \frac{1}{\sum^{n}_{k=1}W_k} (W_n G_n - W_n V_n) \end{aligned}Vn+1=∑k=1nWk∑k=1nWkGk,n≥2=∑k=1nWk1(WnGn+Vnk=1∑n−1Wk)=∑k=1nWk1(WnGn+Vn(k=1∑nWk−Wn))=Vn+∑k=1nWk1(WnGn−WnVn)
即答案:
Vn+1=Vn+WnCn[Gn−Vn]V_{n+1} = V_n + \frac{W_n}{C_n}[G_n - V_n]Vn+1=Vn+CnWn[Gn−Vn]
其中,Cn+1=Cn+Wn+1其中,C_{n+1} = C_n + W_{n+1}其中,Cn+1=Cn+Wn+1
[3] 单状态MDP中,π(left∣s)=1\pi (\text{left} | s) = 1π(left∣s)=1策略下的期望
期望 E 为:
E=1×E(left)+0×E(right)=1×E(left)=0.1×1+0.9×E\begin{aligned} E & = 1 \times E(left) + 0 \times E(right) \\ & = 1 \times E(left) \\ & = 0.1 \times 1 + 0.9 \times E \end{aligned}E=1×E(left)+0×E(right)=1×E(left)=0.1×1+0.9×E
解得 E = 1 。
实例代码
源代码来自:
github.com/ShangtongZhang/reinforcement-learning-an-introduction/chapter05
实例代码与解析见:
https://github.com/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/04-Monte-Carlo-Methods.ipynb
心得复述知识体系:《强化学习》中的蒙特卡洛方法 Monte Carlo Methods in Reinforcement Learning相关推荐
- 强化学习之Grid World的Monte Carlo算法解析【MiniWorld】SYSU_2023SpringRL
强化学习之Grid World的Monte Carlo算法解析[MiniWorld]SYSU_2023SpringRL 题目以及思路 代码 结果 算法解析 代码算法流程 题目以及思路 环境在这篇博客强 ...
- 强化学习的三种范例(Three Paradigms of Reinforcement Learning)
作者:Carles Gelada and Jacob Buckman 编辑:DeepRL 许多研究人员认为,基于模型的强化学习(MBRL)比无模型的强化学习(MFRL)具有更高的样本效率.但是,从根本 ...
- 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)
1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...
- 基于深度强化学习的车道线检测和定位(Deep reinforcement learning based lane detection and localization) 论文解读+代码复现
之前读过这篇论文,导师说要复现,这里记录一下.废话不多说,再重读一下论文. 注:非一字一句翻译.个人理解,一定偏颇. 基于深度强化学习的车道检测和定位 官方源码下载:https://github.co ...
- 深度强化学习篇2:从Playing Atari with Deep Reinforcement Learning 看神经网络的输入,学习的状态空间
Introduction:学习直接从高维的感观输入(视觉,语音)去直接控制智能体是强化学习一个长期的挑战.一些成功的RL应用都是依赖于hand-crafted的特征.最近深度学习的进步使提取高水平的特 ...
- 《强化学习与最优控制》学习笔记(三):强化学习中值空间近似和策略空间近似概述
写在前面的 前一章链接: <强化学习与最优控制>学习笔记(二):强化学习与最优控制的一些术语对比 这章主要是对应书中第二章前面的值空间近似和策略空间近似的简要介绍部分. 在本书的第一章就指 ...
- 强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例
强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例 4. 蒙特卡洛方法 4.1 蒙特卡洛预测 例4.1:Blackjack(21点) 4.2 动作价值的蒙特卡洛估计 4. ...
- 强化学习中的调参经验与编程技巧(on policy篇)
©PaperWeekly 原创 · 作者|张恒瑞 单位|北京交通大学 研究方向|强化学习 在强化学习的训练过程中,常常会遇见以下问题: 在某一环境中可以 work 的超参数拿去训练别的环境却训练不出来 ...
- 最新综述 | 强化学习中从仿真器到现实环境的迁移
©PaperWeekly 原创 · 作者|李文浩 学校|华东师范大学博士生 研究方向|强化学习 最近 survey 了一下 sim2real 领域最近的相关工作,先整理个第一版(共有七篇论文)的总结. ...
最新文章
- 四面阿里看看你都会吗
- 作为候选人,你需要问些什么?你需要查些什么?这些关乎你的利益和未来!
- S3C2440 SDRAM内存驱动 .
- Calc3: Multiple Integrals
- 5分钟学会Java9-Java11的七大新特性
- boost::basic_string_view相关的测试程序
- 如何创建Oracle DBLink
- jquery对radio的操作汇总
- Kubernetes1.6安装指南 (二进制文件方式)
- kafka 创建topic_Kafka试题
- java判断最高分最低分_java排序练习:输入三个学生的姓名和他们的三个评分,去掉最高分和最低分...
- 别再一知半解啦,索引其实就这么回事!
- 用C#设计一个四则运算器
- java idle 机制_深入springboot原理——一步步分析springboot启动机制(starter机制)...
- 微信公众号--根据用户的opneId发送模版消息
- Pytorch深度学习实战教程(四):必知必会的炼丹法宝
- vue前端导出(XLSX)
- 方差、标准差、协方差概念与意义梳理
- android 来电默认铃声,android – 来电动态覆盖默认铃声
- [VS2010]读秀资源咨询法下载器:逸雨清风读秀批量下载 V5.20 2015-5-20
热门文章
- VS2015 无法启动 IIS Express Web 服务器 解决方案
- ORACLE数据库占用大量硬盘空间常规解决方法
- 异常概念和处理机制,try-catch-finally,throw和throws,自定义异常
- ReferenceError: regeneratorRuntime is not defined解决方法
- 解决ssh登录过慢问题
- 电脑打开任务管理器的方法有哪几种
- SLAM无人车通过上摄像头扫描二维码重定位
- SpringBoot配置Druid数据源,持久层分别 mybatis,jdbc
- linux如何查icsci进程,linux13问
- Git:clean用法