学习目标

  1. 理解Prediction和Control的差别;
  2. 理解什么是first-visit和every-visit;
  3. 理解什么是on-policy和off-policy;
  4. 理解蒙特卡洛方法的Prediction和Control问题;

Prediction和Control

其实这两个名词在总结动态规划方法的文章中也提到过了,但是没有细说,这里再简单的说明一下。预测(Prediction)和控制(Control)是MDP中的两类问题:

预测问题

  • 输入:MDP ⟨ S , A , P , R , γ ⟩ \langle\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma\rangle ⟨S,A,P,R,γ⟩ 和策略 π \pi π
  • 输出:状态值函数 v π v_{\pi} vπ​ 或者状态动作值函数 q π q_{\pi} qπ​

控制问题

输入:MDP ⟨ S , A , P , R , γ ⟩ \langle\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma\rangle ⟨S,A,P,R,γ⟩
输出:最优状态值函数 v ∗ v_{*} v∗​ 或者最优状态动作值函数 q ∗ q_{*} q∗​,和最优策略 π ∗ \pi_{*} π∗​

比如上一节的动态规划方法,两者的对应关系如下图:

蒙特卡洛方法简述

动态规划方法是建立在模型已知的情况下,但是往往大多数情况下模型是未知的,实际应用中我们不可能完全了解一个环境的所有知识,比如说得出它的状态转移矩阵。这个时候蒙特卡洛算法就派上用场了,它只需要从经验(experience)中去学习,这个经验包括样本序列的状态(state)、动作(action)和奖励(reward)。得到若干样本的经验后,通过**平均所有样本的回报(return)**来解决强化学习的任务。

类似于DP方法,MC求解也可以看作是一种广义的策略迭代过程,即先计算当前策略所对应的值函数,再利用值函数来改进当前策略,不断循环这两个步骤,从而得到最优值函数和最优策略。两个步骤细节上与DP不同,下面就慢慢道来。

蒙特卡洛方法的预测问题——策略评估

回想一下值函数的求解公式,即回报的期望:

v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=\mathbb{E}_{\pi}\left[G_{t} | S_{t}=s\right] vπ​(s)=Eπ​[Gt​∣St​=s]

但是蒙特卡洛方法在策略评估时不是求的回报的期望,而是使用经验平均回报(empirical mean return)。随着我们的样本越来越多,这个平均值是会收敛于期望的。

一个episode就可以看作是一个样本,假设对于状态 s s s ,给定策略 π \pi π ,要计算其值函数 v π ( s ) v_{\pi}(s) vπ​(s) 。在一个episode中,每次状态 出现都称为一次visit,当然在一个episode中, s s s 可能出现多次。我们称第一次出现该状态为first-visit,因此first-visit蒙特卡洛方法(first-visit MC method)就是将所有第一次访问到 s s s 得到的回报求均值。根据大数定理,当样本足够大的时候,该均值就趋近于 v π ( s ) v_{\pi}(s) vπ​(s)。顾名思义,every-visit蒙特卡洛方法(first-visit MC method)就是将所有访问到 s s s 得到的回报求均值。下面的算法就是估计 v π v_{\pi} vπ​的first-visit MC方法:

说了这么多,估计状态值函数对于我们有用吗?回想一下DP方法中我们是怎么计算 v π ( s ) v_{\pi}(s) vπ​(s) 的:

v k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a v k ( s ′ ) ) v_{k+1}(s)=\sum_{a \in \mathcal{A}} \pi(a | s)\left(\mathcal{R}_{s}^{a}+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^{a} v_{k}\left(s^{\prime}\right)\right) vk+1​(s)=a∈A∑​π(a∣s)(Rsa​+γs′∈S∑​Pss′a​vk​(s′))

我们是通过one step look ahead的方法来迭代求解的。但是此时我们并不知道模型的具体情况,状态转移矩阵也不知道,所以这种求法就行不通了!还记得当时我在强化学习——马尔科夫决策过程和贝尔曼方程这篇文章中提的一个问题吗?为什么要有状态值函数(state value
function)和状态动作值函数(state-action
function)这两个概念,明明一个状态值函数就可以表征我们强化学习的目标——最大化回报,学到这里就可以给一个说法了,因为在模型已知的时候,只用状态值函数就可以完全决定策略,而模型未知的时候就必须估计每个动作的值,即状态动作值函数。所以,蒙特卡洛了方法就是去得到 q ∗ q_{*} q∗​ ,则对应的策略估计问题就是估计 q π ( s , a ) q_{\pi}(s, a) qπ​(s,a) ,即从状态 s s s开始,并采取动作 a a a ,然后遵循策略 π \pi π 得到的回报的期望。根据上面的讨论,first-visit MC方法去估计 q π ( s , a ) q_{\pi}(s, a) qπ​(s,a) 就是求所有episode第一次访问 ( s , a ) (s, a) (s,a) 这个state-action pair所得到回报的均值。

蒙特卡洛方法的控制问题——策略提升

根据广义的策略迭代算法,得到值函数以后,下一步就是进行提升,进而得到最优值函数和最优策略。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBRdY4fw-1592832193939)(http://img.wildwind0.com/202020302052-1.png)]

π ( s ) = arg ⁡ max ⁡ a q ( s , a ) \pi(s)=\arg \max _{a} q(s, a) π(s)=argamax​q(s,a)
为了使这个过程收敛,我们是建立在两个假设上面的:
1. 策略估计过程需要无限个episode才会收敛到回报的期望;
2. Exploring starts,即能够保证状态集合 [公式] 中的所有状态都是有可能被选中为每个episode的初始状态。

显然,在实际的算法中这是不可能实现的,我们必须想法去掉这两个假设!先看第一个假设,其实这个假设我们在DP方法中也是遇到的,有两种方法可以去掉这个假设。

方法一:坚持在每次策略评估的过程中接近 q π k q_{\pi k} qπk​ 。有点懵是不是?这是sutton书中的一句话,原话是“One is to hold firm to the idea of approximating q π k q_{\pi k} qπk​ in each policy evaluation.”其实很简单,就是说虽然理论上必须有无限个episode来作为样本去评估 q π k q_{\pi k} qπk​,实际上是做不到的,我只能尽力多产生点episode,尽可能的去接近这个收敛值。我们可以设定一个误差,两次估计的值小于这个误差,差不多就行了。


方法二:既然要很多episode才能收敛,那么索性我就不管它收不收敛了,还记得DP方法中,在策略提升过程中我还用到的一个方法吗?就是值迭代(value iteration),这是一个极端的例子,就是在策略估计的时候只进行了一次迭代就转向策略提升了。速度是快了,但最后精度就降低了。


再看第二个假设,怎么解决exploring starts这个假设呢?我们一方面希望能找到最好的策略,另一方面又不知道当前策略是不是最好的,这就得去尝试不同的state action pair。一旦找到了一个更好的,如果一直沿着这个策略进行下去,那就有可能陷入局部最优解,进而找不到最优解了。

为了解决这个矛盾,书中提出了两种方法,就是我们说的on-policy和off-policy。所谓的on-policy就是生成episode的策略和迭代优化的策略是同一个,并且这个策略是一种软(soft)策略,即
π ( a , s ) > 0 for all  s ∈ S , a ∈ A \pi(a, s)>0 \text { for all } s \in \mathcal{S}, a \in \mathcal{A} π(a,s)>0 for all s∈S,a∈A

具体地,我们使用 ε − \varepsilon- ε−greedy 策略,以下算法就是使用该策略的On-policy first-visit MC control
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7YlFezDl-1592832193943)(http://img.wildwind0.com/202020302056-g.png)]
On-policy方法在一定程度上解决了exploring starts这个假设,让策略既greedy又exploratory,最后得到的策略也一定程度上达到最优。Off-policy方法就更加直接了,分别在策略估计和策略提升的时候使用两种策略,一个具有探索性的策略专门用于产生episode积累经验,称为behavior policy μ \mu μ ,另一个则是更为贪婪,用来学习成为最优策略的target policy π \pi π 。为了利用从规则 μ \mu μ 产生的 episodes 来评估 π \pi π 的value,则我们需要规则 π \pi π 下的所有行为在规则 μ \mu μ下被执行过,也就是要求对所有满足 π ( s , a ) > 0 \pi(s, a)>0 π(s,a)>0的 ( s , a ) (s, a) (s,a) 均有 π ( s , a ) > 0 \pi(s, a)>0 π(s,a)>0 ,这个假设可以称为是“覆盖”(coverage)。

Off-policy预测问题中的重要性采样(Importance Sampling)

几乎所有off-policy方法使用的都是重要性采样,就是给定服从一种分布的样本情况下,估计另外一种分布下期望值的一般方法。我们根据轨迹在target policy和behavior policies 下发生的相关概率来对 returns 赋予权重,给定初始状态 S t S_{t} St​ ,state-action轨迹为 A t , S t + 1 , A t + 1 , … , S T A_{t}, S_{t+1}, A_{t+1}, \dots, S_{T} At​,St+1​,At+1​,…,ST​ 在规则 π \pi π 下发生的概率为

∏ k = t T − 1 π ( A k ∣ S k ) p ( S k + 1 ∣ S k , A k ) \prod_{k=t}^{T-1} \pi\left(A_{k} | S_{k}\right) p\left(S_{k+1} | S_{k}, A_{k}\right) k=t∏T−1​π(Ak​∣Sk​)p(Sk+1​∣Sk​,Ak​)

其中,p 代表的是 state-transition 概率函数,因此,轨迹在 target policiy 和 behavior policy 下发生的相关概率(即 importance-sampling ratio)为

ρ t : T − 1 = ∏ k = t T − 1 π ( A k ∣ S k ) p ( S k + 1 ∣ S k , A k ) ∏ k = t T − 1 μ ( A k ∣ S k ) p ( S k + 1 ∣ S k , A k ) = ∏ k = t T − 1 π ( A k ∣ S k ) μ ( A k ∣ S k ) \rho_{t: T-1}=\frac{\prod_{k=t}^{T-1} \pi\left(A_{k} | S_{k}\right) p\left(S_{k+1} | S_{k}, A_{k}\right)}{\prod_{k=t}^{T-1} \mu\left(A_{k} | S_{k}\right) p\left(S_{k+1} | S_{k}, A_{k}\right)}=\prod_{k=t}^{T-1} \frac{\pi\left(A_{k} | S_{k}\right)}{\mu\left(A_{k} | S_{k}\right)} ρt:T−1​=∏k=tT−1​μ(Ak​∣Sk​)p(Sk+1​∣Sk​,Ak​)∏k=tT−1​π(Ak​∣Sk​)p(Sk+1​∣Sk​,Ak​)​=k=t∏T−1​μ(Ak​∣Sk​)π(Ak​∣Sk​)​

可以看出, ρ t : T − 1 \rho_{t: T-1} ρt:T−1​ 与MDP没有关系,仅仅与两个规则相关。好了,为什么我们要求这个 ρ t : T − 1 \rho_{t: T-1} ρt:T−1​?我们的目的是要估计一个规则,即求target policy下回报的期望,但现在我们是根据behavior policy生成的episode,得到的自然是一个错误的期望值 E [ G t ∣ S t ] = v μ ( S t ) \mathbb{E}\left[G_{t} | S_{t}\right]=v_{\mu}\left(S_{t}\right) E[Gt​∣St​]=vμ​(St​),但我们要的是 v π ( S t ) v_{\pi}\left(S_{t}\right) vπ​(St​) ,所以这个时候就该 ρ t : T − 1 \rho_{t: T-1} ρt:T−1​ 发挥作用了!

E [ ρ t , T − 1 G t ∣ S t ] = v π ( S t ) \mathbb{E}\left[\rho_{t, T-1} G_{t} | S_{t}\right]=v_{\pi}\left(S_{t}\right) E[ρt,T−1​Gt​∣St​]=vπ​(St​)

好,接下来就要给出off-policy方法是如何评估策略的公式。现在假设我们有了一系列服从规则 μ \mu μ的episodes,首先我们对这些 episodes 进行连接和标号,假设第一个 episode 在时刻 100 结束,则第二个 episode 就以时间 101 开始,以此类推。下面规定一些符号表示:

  • T ( s ) \mathcal{T}(s) T(s):对 every-visit 方法,它代表所有状态 s 被 visit 的时刻的集合,对 first-visit 方法,它仅代表所有状态 s 在某个 episode 中第一次被 visit 的时刻的集合;
  • T ( s ) T(s) T(s) :从时刻t到 T ( s ) T(s) T(s)的回报(return);
  • { G t } t ∈ T ( s ) \left\{G_{t}\right\}_{t \in \mathcal{T}(s)} {Gt​}t∈T(s)​ :属于状态s的回报;
  • { ρ t : T − 1 } t ∈ T ( s ) \left\{\rho_{t: T-1}\right\}_{t \in \mathcal{T}(s)} {ρt:T−1​}t∈T(s)​:代表相应的importance-sampling ratio;

根据求平均的方法不同,有两种估计 v π ( s ) v_{\pi}(s) vπ​(s),一种是ordinary importance sampling:
V ( s ) = ∑ t ∈ T ( s ) ρ t : T ( t ) − 1 G t ∣ T ( s ) ∣ V(s)=\frac{\sum_{t \in \mathcal{T}(s)} \rho_{t: T(t)-1} G_{t}}{|\mathcal{T}(s)|} V(s)=∣T(s)∣∑t∈T(s)​ρt:T(t)−1​Gt​​
另一种是weighted importance sampling,

V ( s ) = ∑ t ∈ T ( s ) ρ t : T ( t ) − 1 G t ∑ t ∈ T ( s ) ρ t : T ( t ) − 1 V(s)=\frac{\sum_{t \in \mathcal{T}(s)} \rho_{t: T(t)-1} G_{t}}{\sum_{t \in \mathcal{T}(s)} \rho_{t: T(t)-1}} V(s)=∑t∈T(s)​ρt:T(t)−1​∑t∈T(s)​ρt:T(t)−1​Gt​​

增量式求均值

在策略估计的时候,MC所采用的方法是将所有样本episodes所得到的回报求均值,怎么求这个均值呢?当然可以简单的求和再除以episode的数量。这里要介绍的是另一种方法——增量式求均值。

假设我们得到了一系列回报 G 1 , G 2 , … , G t − 1 G_{1}, G_{2}, \ldots, G_{t-1} G1​,G2​,…,Gt−1​,对于off-policy来说,因为我们利用了重要性采样,所以多了一个权重的因素,设每个回报的权重为 W k W_{k} Wk​

V n = ∑ k = 1 n − 1 W k G k ∑ k = 1 n − 1 W k V_{n}=\frac{\sum_{k=1}^{n-1} W_{k} G_{k}}{\sum_{k=1}^{n-1} W_{k}} Vn​=∑k=1n−1​Wk​∑k=1n−1​Wk​Gk​​

于是有

V n + 1 = V n + W n C n ( G n − V n ) V_{n+1}=V_{n}+\frac{W_{n}}{C_{n}}\left(G_{n}-V_{n}\right) Vn+1​=Vn​+Cn​Wn​​(Gn​−Vn​)

C n + 1 = C n + W n + 1 C_{n+1}=C_{n}+W_{n+1} Cn+1​=Cn​+Wn+1​

Off-policy的控制问题

前面两个小节就是在为这个小节做铺垫,所以直接给出算法啦。

学习资料

[1] Reinforcement Learning: An Introduction- Chapter 5: Monte Carlo Method
[2] David Silver’s RL Course Lecture 4&5
[3] 强化学习入门 第三讲 蒙特卡罗方法
[4] 采样方法(一)


《Reinforcement Learning: An Introduction 第二版》PDF书籍与David Silver课程,欢迎关注我的公众号“野风同学”,回复“RL”即可获取。
一个程序员的自我成长之路,持续分享机器学习基础与应用、LeetCode面试算法和Python基础与应用等技术干货文章,同时也经常推荐高质量软件工具、网站和书籍。

强化学习——蒙特卡洛方法相关推荐

  1. DeepMind提出强化学习新方法,可实现人机合作

    来源:AI前线 作者:Ben Dickson 译者:盖 策划:凌敏 本文来自 BDTechTalks 网站的"AI 研究论文评论"专栏.该专栏提供人工智能最新发现的系列解读文章. ...

  2. 强化学习—— 蒙特卡洛树(Monte Carlo Tree Search, MCTS)

    强化学习-- 蒙特卡洛树(Monte Carlo Tree Search, MCTS) 1. 单一状态蒙特卡洛规划 1.1 特点 1.2 数学模型 2. 上限置信区间策略 3. 蒙特卡洛树搜索 3.1 ...

  3. 综述向:强化学习经典方法梳理

    最近组内需要做强化学习相关研究,因为面对的是新项目,同事们对强化学习的原理都不太了解,我们就计划轮流在组内做一些不定期分享,补充相关的基础知识.于是我对强化学习的一些经典算法进行了梳理,并在此进行记录 ...

  4. 干货|浅谈强化学习的方法及学习路线

    作者:Angel_Kitty 来源:http://www.cnblogs.com/ECJTUACM-873284962/ 一.介绍 目前,对于全球科学家而言,"如何去学习一种新技能" ...

  5. 浅谈强化学习的方法及学习路线

    介绍 目前,对于全球科学家而言,"如何去学习一种新技能"成为了一个最基本的研究问题.为什么要解决这个问题的初衷是显而易见的,如果我们理解了这个问题,那么我们可以使人类做一些我们以前 ...

  6. 强化学习新方法,让后空翻回旋踢再也难不倒机器人 | 伯克利论文

    夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI 波士顿动力人形机器人的后空翻技能亮相时,惊艳了全球群众. 这么复杂的动作,不用说现实世界中的机器人,就算是在模拟器里,学起来也非常的难. 现 ...

  7. 论文阅读-基于深度强化学习的方法解决多智能体防御和攻击问题

    论文原题目:A deep reinforcement learning-based method applied for solving multi-agent defense and attack ...

  8. 面向星际争霸:DeepMind 提出多智能体强化学习新方法

    不久前 DeepMind 强化学习团队负责人.AlphaGo 项目负责人现身 Reddit 问答,其中一个问题是「围棋和星际争霸 2 哪个更难?潜在技术障碍是什么?」近日,DeepMind 发表论文, ...

  9. 7. 基于策略的强化学习——蒙特卡洛策略梯度REINFORCE算法

    前6篇我们都是估计动作值函数Q,从而可以根据估计的Q值选择相应的动作.但是这样的值函数(Value Based)估计方法有着一定的限制.第一,值函数估计方法最后得到的策略是固定策略,不能应对最优策略是 ...

最新文章

  1. 【CVPR2020】30篇最新论文抢先看!!!
  2. 【数据挖掘知识点四】参数估计
  3. Web前端开发笔记——第四章 JavaScript程序设计 第三节 数据类型
  4. 区块链开发公司谈区块链与大数据的关系
  5. android 动态申请权限_你真的了解Android权限机制吗?
  6. Python图像处理丨OpenCV+Numpy库读取与修改像素
  7. 设计模式 C++简单工厂模式
  8. 解决 sublime text 3 there are no packages available for installation 错误
  9. 35.伪造请求超时的ICMP数据包
  10. 1.直流无刷电机BLDC转速计算推论
  11. 华为路由器交换机配置命令集合
  12. tumblr_如何在您的Tumblr博客中添加论坛
  13. PreparedStatement操作Blob类型的变量报错
  14. DMSP/OLS夜间灯光遥感影像数据概述
  15. 计算机c语言好学吗?要是想自学应该怎么办?
  16. pinyin4j 中文转成拼音(支持多音字输出)
  17. nvidia所有版本显卡驱动下载地址
  18. bboss quartz定时任务使用案例介绍
  19. html代码制作的个人简历
  20. python表格中插入图片_运维(1)python操作excel插入图片

热门文章

  1. COLLADAMaxNew插件,opencollada导出DAE文件格式 for 3dmax2019
  2. 银行客户违约信息分析(数据挖掘)
  3. springboot+高校自习室座位管理小程序 毕业设计-附源码191028
  4. 容斥原理 A-1e9个兵临城下
  5. Kafka学习笔记1
  6. 基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料)
  7. Android项目的targetSDK=23,在低于Android6.0的部分测试机(类似华为)上运行时出现的系统权限问题...
  8. python画爱心 好看漂亮的表白代码
  9. webpy使用说明(二)
  10. 鸿蒙 OS 2 升级用户破千万!(1000+企业共建鸿蒙生态)