强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)
强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)
学习笔记:
Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016
数学符号看不懂的,先看看这里:
蒙特卡洛方法简话
蒙特卡洛是一个赌城的名字。冯·诺依曼给这方法起了这个名字,增加其神秘性。
蒙特卡洛方法是一个计算方法,被广泛的用于许多领域,用于求值。
相对于确定性的算法,蒙特卡洛方法是基于抽样数据来计算结果。
蒙特卡洛方法的基本思路
蒙特卡洛方法的整体思路是:模拟 -> 抽样 -> 估值。
示例:
比如:如何求\(\pi\)的值。一个使用蒙特卡洛方法的经典例子如下:
我们知道一个直径为1的圆的面积为\(\pi\)。
把这个圆放到一个边长为2的正方形(面积为4)中,圆的面积和正方形的面积比是:\(\frac{\pi}{4}\)。
如果可以测量出这个比值\(c\),那么\(\pi=c \times 4\)。
如何测量比值\(c\)呢?用飞镖去扎这个正方形。扎了许多次后,用圆内含的小孔数除以正方形含的小孔数可以近似的计算比值\(c\)。
说明:
模拟 - 用飞镖去扎这个正方形为一次模拟。
抽样 - 数圆内含的小孔数和正方形含的小孔数。
估值 - 比值\(c\) = 圆内含的小孔数 / 正方形含的小孔数
蒙特卡洛方法的使用条件
环境是可模拟的
在实际的应用中,模拟容易实现。相对的,了解环境的完整知识反而比较困难。
由于环境可模拟,我们就可以抽样。只适合情节性任务(episodic tasks)
因为,需要抽样完成的结果,只适合有限步骤的情节性任务。
蒙特卡洛方法在强化学习中的用例
只要满足蒙特卡洛方法的使用条件,就可以使用蒙特卡洛方法。
比如:游戏类都适合:完全信息博弈游戏,像围棋、国际象棋。非完全信息博弈游戏:21点、麻将等等。
蒙特卡洛方法在强化学习中的基本思路
蒙特卡洛方法的整体思路是:模拟 -> 抽样 -> 估值。
如何应用到强化学习中呢?
强化学习的目的是得到最优策略。
得到最优策略的一个方法是求\(v_{pi}(s), \ q_{pi}{s, a}\)。 - 这就是一个求值问题。
结合通用策略迭代(GPI)的思想。
下面是蒙特卡洛方法的一个迭代过程:
- 策略评估迭代
1. 探索 - 选择一个状态(s, a)。
1. 模拟 - 使用当前策略\(\pi\),进行一次模拟,从当前状态(s, a)到结束,随机产生一段情节(episode)。
1. 抽样 - 获得这段情节上的每个状态(s, a)的回报\(G(s, a)\),记录\(G(s, a)\)到集合\(Returns(s, a)\)。
1. 估值 - q(s, a) = Returns(s, a)的平均值。
(因为状态(s, a)可能会被多次选择,所以状态(s, a)有一组回报值。) - 策略优化 - 使用新的行动价值\(q(s, a)\)优化策略\(\pi(s)\)。
解释
- 上述的策略评估迭代步骤,一般会针对所有的状态-行动,或者一个起始(\(s_0, a_0\))下的所有状态-行动。
这也说明持续探索(continual exploration)是蒙特卡洛方法的主题。 - 模拟过程 - 会模拟到结束。是前进式的,随机选择下一个行动,一直前进到结束为止。
因此可以看出蒙特卡洛方法需要大量的迭代,才能正确的找到最优策略。 - 策略评估是计算行动价值(\(q(s, a)\))。
(也可以是状态价值,则\(\pi(s)\)为状态\(s\)到其下一个最大价值状态\(s‘\)的任意行动。)
计算方法:
\[
q(s, a) = average(Returns(s, a))
\]
一些概念
Exploring Starts 假设 - 指有一个探索起点的环境。
比如:围棋的当前状态就是一个探索起点。自动驾驶的汽车也许是一个没有起点的例子。- first-visit - 在一段情节中,一个状态只会出现一次,或者只需计算第一次的价值。
- every-visit - 在一段情节中,一个状态可能会被访问多次,需要计算每一次的价值。
on-policy method - 评估和优化的策略和模拟的策略是同一个。
off-policy method - 评估和优化的策略和模拟的策略是不同的两个。
有时候,模拟数据来源于其它处,比如:已有的数据,或者人工模拟等等。- target policy - 目标策略。off policy method中,需要优化的策略。
behavior policy - 行为策略。off policy method中,模拟数据来源的策略。
根据上面的不同情境,在强化学习中,提供了不同的蒙特卡洛方法。
- 蒙特卡洛(起始点(Exploring Starts))方法
- On-policy first visit 蒙特卡洛方法(for \(\epsilon\)-soft policies)
- Off-policy every-visit 蒙特卡洛方法
蒙特卡洛(起始点(Exploring Starts))方法
Initialize, for all \(s \in \mathcal{S}, \ a \in \mathcal{A}(s)\):
\(Q(s,a) :=\) arbitrary
\(\pi(s) :=\) arbitrary
\(Returns(s, a) :=\) empty listRepeat forever:
Choose \(S_0 \in \mathcal{S}\) and \(A_0 \in \mathcal{A}(S_0)\) s.t. all pairs have probability > 0
Generate an episode starting from \(S_0, A_0\), following \(\pi\)
For each pair \(s,a\) appearing in the episode:
$G := $ return following the first occurrence of s,a
Append \(G\) to \(Returns(s, a)\)
\(Q(s, a) := average(Returns(s, a))\)
For each s in the episode:
\(\pi(s) := \underset{a}{argmax} Q(s,a)\)
On-policy first visit 蒙特卡洛方法(for \(\epsilon\)-soft policies)
Initialize, for all \(s \in \mathcal{S}, \ a \in \mathcal{A}(s)\):
\(Q(s,a) :=\) arbitrary
\(\pi(a|s) :=\) an arbitrary \(\epsilon\)-soft policy
\(Returns(s, a) :=\) empty listRepeat forever:
(a) Generate an episode using \(\pi\)
(b) For each pair \(s,a\) appearing in the episode:
$G := $ return following the first occurrence of s,a
Append \(G\) to \(Returns(s, a)\)
\(Q(s, a) := average(Returns(s, a))\)
(c) For each s in the episode:
\(A^* := \underset{a}{argmax} \ Q(s,a)\)
For all \(a \in \mathcal{A}(s)\):
if \(a = A^*\)
\(\pi(a|s) := 1 - \epsilon + \frac{\epsilon}{|\mathcal{A}(s)|} Q(s,a)\)
if \(a \ne A^*\)
\(\pi(a|s) := \frac{\epsilon}{|\mathcal{A}(s)|} Q(s,a)\)
Off-policy every-visit 蒙特卡洛方法
Initialize, for all \(s \in \mathcal{S}, \ a \in \mathcal{A}(s)\):
\(Q(s,a) :=\) arbitrary
\(C(s,a) :=\) 0
\(\mu(a|s) :=\) an arbitrary soft behavior policy
\(\pi(a|s) :=\) a deterministic policy that is greedy with respect to QRepeat forever:
Generate an episode using \(\mu\):
\(S_0,A_0,R_1,\cdots,S_{T-1},A_{T-1},R_T,S_T\)
\(G := 0\)
\(W := 1\)
For t = T - 1 downto 0:
\(G := \gamma G + R_{t+1}\)
\(C(S_t, A_t) := C(S_t, A_t) + W\)
\(Q(S_t, A_t) := Q(S_t, A_t) + \frac{W}{C(S_t, A_t)} |G - Q(S_t, A_t)|\)
\(\pi(S_t) := \underset{a}{argmax} \ Q(S_t, a)\) (with ties broken consistently)
If \(A_t \ne \pi(S_t)\) then ExitForLoop
\(W := W \frac{1}{\mu(A_t|S_t)}\)
参照
- Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016
- 强化学习读书笔记 - 00 - 数学符号说明
- 强化学习读书笔记 - 01 - 强化学习的问题
- 强化学习读书笔记 - 02 - 多臂老O虎O机问题
- 强化学习读书笔记 - 03 - 有限马尔科夫决策过程
- 强化学习读书笔记 - 04 - 动态编程
强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)的更多相关文章
- 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)
1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...
- 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)
强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...
- 强化学习读书笔记 - 11 - off-policy的近似方法
强化学习读书笔记 - 11 - off-policy的近似方法 学习笔记: Reinforcement Learning: An Introduction, Richard S. Sutton and ...
- 强化学习读书笔记 - 10 - on-policy控制的近似方法
强化学习读书笔记 - 10 - on-policy控制的近似方法 学习笔记: Reinforcement Learning: An Introduction, Richard S. Sutton an ...
- 强化学习读书笔记 - 09 - on-policy预测的近似方法
强化学习读书笔记 - 09 - on-policy预测的近似方法 参照 Reinforcement Learning: An Introduction, Richard S. Sutton and A ...
- 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)
强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...
- 强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces)
强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces) 学习笔记: Reinforcement Learning: An Introduction, Richard S. S ...
- 强化学习读书笔记 - 02 - 多臂老O虎O机问题
# 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...
- 深度学习读书笔记之RBM(限制波尔兹曼机)
深度学习读书笔记之RBM 声明: 1)看到其他博客如@zouxy09都有个声明,老衲也抄袭一下这个东西 2)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的 ...
随机推荐
- YII 1.0 分页类
在控制器中 方法1 $criteria = new CDbCriteria();//AR的另一种写法 $model = Article::model(); $total = $model->co ...
- Antx简介(ali_PPT)
Antx的由来: §最早,我们用Makefile来build系统 •Makefile不适合Java的编译 §后来,我们用Ant来build系统 •开始时很不错 •随着项目增多,出现困难 §利用bean ...
- js模块化开发——前端模块化
在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可:如今CPU.浏览器性能得到了极大的提升,很多页面逻辑迁移到了客 户端(表单验证等),随着web2.0时代的到来,Ajax技术 ...
- 阿里云服务器windows系统C盘一键清理脚本
@ECHO OFF @echo @echo @echo 清理几个比较多垃圾文件的地方 DEL /F /S /Q "C:\WINDOWS\PCHealth\ERRORREP\QSIGNOFF\ ...
- jQuery的$(window).load与、(document).ready和window.onload的关系
jQuery的$(window).load与.(document).ready和window.onload的关系 $(function() { console.log('document.ready ...
- Mangos笔记
$lt.$lte.$gt.$gte和$ne $in.$nin.$or $mod.$not $exists 条件句式内层文档的键,修改器是外层文档的键,一个键可以有多个 条件,但是一个键不能对应多个更新 ...
- 一个web应用的诞生--美化一下
经过上一章的内容,其实就页面层来说已结可以很轻松的实现功能了,但是很明显美观上还有很大的欠缺,现在有一些很好的前端css框架,如AmazeUI,腾讯的WeUI等等,这里推荐一个和flask集成很好的b ...
- 蓝牙连接音响问题(android电视)
最近老大让我开发电视的蓝牙,由于android电视的蓝牙不稳定和设计上的各种各样的要求,需要在原有的基础上做一些更改,中间遇到了各种问题,在此总结一下. 我们首先要获取blueToothAdapter ...
- 微信小程序 JS动态修改样式
微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...
- hadoop系列一:hadoop集群安装
转载请在页首明显处注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6384393.html 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据 ...