【RL系列】从蒙特卡罗方法步入真正的强化学习
蒙特卡罗方法给我的感觉是和Reinforcement Learning: An Introduction的第二章中Bandit问题的解法比较相似,两者皆是通过大量的实验然后估计每个状态动作的平均收益。不过两者的区别也是显而易见,Bandit问题比较简单,状态1->动作1->状态1,这个状态转移过程始终是自我更新的过程,而且是一一对应的关系。蒙特卡罗方法所解决的问题就要复杂一些,通常来说,其状态转移过程可能为,状态1->动作1->状态2->动作1->状态3。Sutten书中是这样描述两者的区别:
The main difference is that now there are multiple states, each acting like a different bandit problem (like an associative-search or contextual bandit) and that the different bandit problems are interrelated.
这里说的很好,应用蒙特卡罗方法的问题中的每一个状态下的其中一个动作之后的状态转移过程都像是许多个不同的Bandit问题。还有一个很明显的区别是,蒙特卡罗问题大都有一个或几个明确的目标状态,达到目标状态后,才能计算当前收益,中间过程通常来说并没有自己的状态或动作收益,但对于Bandit问题来说是没有这个中间过程的。
什么是中间过程?简单来说就是从起始状态到达目标状态中间所经历的状态动作集合。在蒙特卡罗方法中,中间过程不获得任何奖励,但是中间过程的状态动作价值可以由目标状态奖励进行估计。这个估计的原则也很简单,可以描述为:某状态动作价值可以估计为经过该状态到达目标所获得的奖励之和除以经过该状态的次数。对于某个中间过程的状态动作价值估计实际上就是许多个不同的Bandit问题中的一个。在上一篇文章中提到了在解决Soap Bubble问题中,蒙特卡罗方法的优势,即可以快速收敛某一个状态或某几个状态的价值估计。上一篇文章中的算法只关注起始状态的价值收敛而完全忽略中间过程,但当使用蒙特卡罗方法估计所有状态价值时,对中间过程不进行任何处理的方法就太低效了。所以下面我们尝试将中间状态价值估计应用到之前的算法中,看一看完整的蒙特卡罗方法进行价值估计的算法流程,还是以Soap Bubble为例(什么是Soap Bubble问题,可以参考上一篇博文【RL系列】蒙特卡罗方法——Soap Bubble):
- 投影闭合曲线到x-y平面
- 开始迭代,随机选择起始点(x, y)
- 随机选择动作开始游走
- 判断是否碰到边界,如碰到边界,记录边界高度值$ H_b $,并记录中间经过的每一个状态,写成状态集合$S$。未碰到则继续游走。
- 设状态state属于状态集合$ S $,用公式更新状态state的价值总和$ V(\mathrm{state}) $与经过状态state的次数$ C(\mathrm{state}) $:$$ V(\mathrm{state}) = V(\mathrm{state}) + H_b \\ C(\mathrm{state}) = C(\mathrm{state}) + 1$$
- 回到第三步重新开始迭代。经过大量次数的实验后,停止循环过程。
- 任何一点(任何一个状态)的高度值的估计可以计算估计为((x, y) = state):$$ H(state) = \frac{V(state)}{C(state)} $$
这个加入中间过程估计的逻辑还是很简单的,因为蒙特卡罗方法有一条非常重要的性质,“每一个状态的估计都是独立的,不依赖于其它状态的! ”,所以你可以把中间过程某个状态的估计看成是该状态作为起始状态的估计。迭代开始之初对起始状态的随机选择也十分重要,随机选择是为了保证每个装填都有作为起始状态的机会,也是为了增加每一个状态被访问的机会,这种策略叫做Exploring Starts,当其同时运用到动作选择时,才是完整的Monte Carlo ES算法(这个算法也是Monte Carlo经典问题BlackJack的求解基础!)。
直接给出该算法的计算结果:
经过10000次迭代,效果还是不错的,但相比于大约250次迭代就可以计算出更加精确值的Iteration Method来说还是效率较低的。Iteration Method的本质就是Dynamic Programming,在强化学习中相对应就是马尔可夫决策——一种建立在模型,状态与状态之间关系的算法。Monte Carlo最大的优势在于,不需要模型,只靠探索+总结就可以寻找到最优策略,这比马尔可夫决策更加的趋近于人类的决策行为,真正的人工智能之强化学习是从这里开始的。
【RL系列】从蒙特卡罗方法步入真正的强化学习的更多相关文章
- 【RL系列】蒙特卡罗方法——Soap Bubble
“肥皂泡”问题来源于Reinforcement Learning: An Introduction(2017). Exercise 5.2,大致的描述如下: 用一个铁丝首尾相连组成闭合曲线,浸入肥皂泡 ...
- 强化学习系列之:Deep Q Network (DQN)
文章目录 [隐藏] 1. 强化学习和深度学习结合 2. Deep Q Network (DQN) 算法 3. 后续发展 3.1 Double DQN 3.2 Prioritized Replay 3. ...
- 强化学习读书笔记 - 09 - on-policy预测的近似方法
强化学习读书笔记 - 09 - on-policy预测的近似方法 参照 Reinforcement Learning: An Introduction, Richard S. Sutton and A ...
- 强化学习读书笔记 - 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 ...
- 【RL系列】马尔可夫决策过程——状态价值评价与动作价值评价
请先阅读上两篇文章: [RL系列]马尔可夫决策过程中状态价值函数的一般形式 [RL系列]马尔可夫决策过程与动态编程 状态价值函数,顾名思义,就是用于状态价值评价(SVE)的.典型的问题有“格子世界(G ...
- 【RL系列】马尔可夫决策过程中状态价值函数的一般形式
请先阅读上一篇文章:[RL系列]马尔可夫决策过程与动态编程 在上一篇文章里,主要讨论了马尔可夫决策过程模型的来源和基本思想,并以MAB问题为例简单的介绍了动态编程的基本方法.虽然上一篇文章中的马尔可夫 ...
- 【RL系列】Multi-Armed Bandit笔记——UCB策略与Gradient策略
本篇主要是为了记录UCB策略与Gradient策略在解决Multi-Armed Bandit问题时的实现方法,涉及理论部分较少,所以请先阅读Reinforcement Learning: An Int ...
随机推荐
- duplicate symbol _OBJC_IVAR
duplicate symbol _OBJC_IVAR - Kingdev - 博客园 代码合并问题 git合并提示冲突文件为project.pbxproj,先去掉所有冲突提示<<< ...
- java核心技术-多线程之引导概念
前两篇文章分别讲了,Java线程相关基础概念以及线程的内存模型,本节作为后续章节的引导,个人认为对于学习后面的只是还是比较重要.好了,既然说了多线程,那么首先要弄清以下几个问题: 1. 什么是多线程? ...
- 20181101noip模拟赛T1
思路: 我们看到这道题,可以一眼想到一维差分 但这样的复杂度是O(nq)的,显然会T 那么怎么优化呢? 我们会发现,差分的时候,在r~r+l-1的范围内 差分增加的值横坐标相同,纵坐标递增 减小的值横 ...
- Python 用hashlib。md5加密算法
廖雪峰的官方网站学习MD5加密,网址:“http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a0 ...
- Bootstrap04
Bootstrap04概述 一.输入框组 1.左侧添加文字 <div class="input-group"> <span class="input-g ...
- PHP几种常见魔术方法与魔术变量解析
原文地址:http://small.aiweimeng.top/index.php/archives/49.html 先不多说,直接上代码,如下: class Demo { private $str ...
- 详解Linux运维工程师高级篇(大数据安全方向).
hadoop安全目录: kerberos(已发布) elasticsearch(已发布)http://blog.51cto.com/chenhao6/2113873 knox oozie ranger ...
- python教程(七)·字典
本文介绍本系列教程最后一个数据结构--字典 在现实生活中,查英语字典的时候,我们通常根据单词来查找意思.而python中的字典也是类似的,根据特定的 "键"(单词)来查找 &quo ...
- LFS搭建第一天
1. 前期准备 vmware 软件安装 LFS iso 下载:http://ftp.osuosl.org/pub/lfs-livecd/lfslivecd-x86-6.3-r2145.iso 2.新建 ...
- ubuntu配置机器学习环境(二) cuda 和cudnn 安装
Nvidia CUDA Toolkit的安装(cuda) PS:特别推荐*.deb的方法,目前已提供离线版的deb文件,该方法比较简单,不需要切换到tty模式,因此不再提供原来的*.run安装方法,这 ...