1 前言

在上一篇文章中,我们介绍了基于Bellman方程而得到的Policy Iteration和Value Iteration两种基本的算法,但是这两种算法实际上很难直接应用,原因在于依然是偏于理想化的两个算法,需要知道状态转移概率,也需要遍历所有的状态。对于遍历状态这个事,我们当然可以不用做到完全遍历,而只需要尽可能的通过探索来遍及各种状态即可。而对于状态转移概率,也就是依赖于模型Model,这是比较困难的事情。

什么是状态转移?就比如一颗子弹,如果我知道它的运动速度,运动的当前位置,空气阻力等等,我就可以用牛顿运动定律来描述它的运动,进而知道子弹下一个时刻会大概在哪个位置出现。那么这个基于牛顿运动定律来描述其运动就是一个模型Model,我们也就可以知道其状态(空间位置,速度)的变化概率。

那么基本上所以的增强学习问题都需要有一定的模型的先验知识,至少根据先验知识我们可以来确定需要多少输入可以导致多少输出。比如说玩Atari这个游戏,如果输入只有屏幕的一半,那么我们知道不管算法多么好,也无法训练出来。因为输入被限制了,而且即使是人类也是做不到的。但是以此同时,人类是无需精确的知道具体的模型应该是怎样的,人类可以完全根据观察来推算出相应的结果。

所以,对于增强学习的问题,或者说对于任意的决策与控制问题。输入输出是由基本的模型或者说先验知识决定的,而具体的模型则可以不用考虑。所以,为了更好的求解增强学习问题,我们更关注Model Free的做法。简单的讲就是如果完全不知道状态转移概率(就像人类一样),我们该如何求得最优的策略呢?

本文介绍蒙特卡洛方法。

2 蒙特卡洛方法

蒙特卡洛方法只面向具有阶段episode的问题。比如玩一局游戏,下一盘棋,是有步骤,会结束的。而有些问题则不一定有结束,比如开赛车,可以无限的开下去,或者说需要特别特别久才能结束。能不能结束是一个关键。因为只要能结束,那么每一步的reward都是可以确定的,也就是可以因此来计算value。比如说下棋,最后赢了就是赢了,输了就是输了。而对于结束不了的问题,我们只能对于value进行估计。

那么蒙特卡洛方法只关心这种能够较快结束的问题。蒙特卡洛的思想很简单,就是反复测试求平均。如果大家知道在地上投球计算圆周率的事情就比较好理解了。不清楚的童鞋可以网上找找看。那么如何用在增强学习上呢?

既然每一次的episode都可以到结束,那么意味着根据:

每一步的reward都知道,也就意味着每一步的return GtG_t 都可以计算出来。这就好了。我们反复做测试,这样很多状态会被遍历到,而且不止一次,那么每次就可以把在状态下的return求和取平均。
当episode无限大时,得到的数据也就接近于真实的数据。

蒙特卡洛方法就是使用统计学的方法来取代Bellman方法的计算方法。

上面的算法叫first-visit MC。也就是每一次的episode中state只使用第一次到达的t来计算return。
另一种方法就是every-visit,就是每一次的episode中state只要访问到就计算return求平均。

所以可以看到蒙特卡洛方法是极其简单的。但是缺点也是很明显的,需要尽可能多的反复测试,而且需要到每一次测试结束后才来计算,需要耗费大量时间。但是,大家知道吗?AlphaGo就是使用蒙特卡洛的思想。不是蒙特卡洛树搜索,而是说在增强学习中使用蒙特卡洛方法的思想。AlphaGo每次也是到下棋结束,而且只使用最后的输赢作为return。所以这也是非常神奇的事,只使用最后的输赢结果,竟然能够优化每一步的走法。

3 使用蒙特卡洛方法来控制

上面说的蒙特卡洛方法只是能够对当前的policy进行评估。那么大家记得上一个blog说的policy iteration方法吗?我们可以在policy iteration中使用蒙特卡洛方法进行评估,然后使用greedy policy更新。

那么依然是有两种做法。一种就是在一个policy下测试多次,评估完全,然后更新policy,然后再做很多测试。另一种就是不完全评估,每次测试一次完就评估,评估完就更新:
第一种做法:

第二种做法:

两种做法都能够收敛,那么显然第二种做法的速度更快。

那么再改进一点,就是改变greedy policy中ϵ\epsilon的值,使得不断变小趋于0,这个时候最后得到的policy就是完全的最优policy了。
这个算法就叫做GLIE Monte-Carlo Control:

其他变种:
Monte Carlo with Exploring Starts,使用Q(s,a)Q(s,a),然后使用上面说的第二种做法,一次episode就更新一次policy,而且policy直接使用Q值。

policy的更新使用了ϵ−greedy\epsilon-greedy,目的就是能够更好的探索整个状态空间。

4 Off Policy Learning

那么上面的方法一直是基于当前的policy,为了探索状态空间,采用一个次优的策略ϵ−greedy\epsilon-greedy policy来探索。那么是不是可以更直接的使用两个policy。一个policy用来探索空间,也就是behavior policy,另一个policy就是为了达到最优policy,叫做target policy。那么这种方法就叫做off policy learning。On-policy的方法比较简单,off-policy 方法需要更多的概念和标记,比较不好理解,而且,由于behaviour policy和target policy不相关,这种方法比较不容易收敛。但是off-policy更强大,更通用,实际上的on-policy方法就是off-policy方法的一个子集。比如,就可以使用off-policy从人类专家或者传统的控制算法来学习一个增强学习模型。

关键是要找到两个policy之间的权重关系,从而更新Q值。

关于off-policy learning的部分,之后结合TD方法再做分析。

小结

本次blog分析了一下蒙特卡洛方法。这种基于统计学的方法算法简单,但是更多的只能用于虚拟环境能进行无限测试的情况。并且state 状态比较有限,离散的最好。基于这个方法,比如简单的五子棋(棋盘最好小一点),就可以用这个方法来玩玩了。

接下来的blog讲分析TD方法。

声明:

本文的图片截取自:
1 Reinforcement Learning: An Introduction
2 Reinforcement Learning Course by David Silver

增强学习Reinforcement Learning经典算法梳理2:蒙特卡洛方法相关推荐

  1. 增强学习Reinforcement Learning经典算法梳理1:policy and value iteration

    前言 就目前来看,深度增强学习(Deep Reinforcement Learning)中的很多方法都是基于以前的增强学习算法,将其中的value function价值函数或者Policy funct ...

  2. [增强学习][Reinforcement Learning]学习笔记与回顾-1

    引言 增强学习这几篇博客在于学习增强学习中所获得知识的理解与回顾,如果想要深入学习增强学习,请参考后文所列出的资料和书籍.本文只用于复习与理解. Introduction to Reinforceme ...

  3. [增强学习][Reinforcement Learning]学习笔记与回顾-2-马尔可夫决策过程MDP

    Markov Decision Processes 前言 本文主要是视频学习的总结与回顾,想要了解更多内容请看视频或者学习专业课程.这一节主要是说马尔可夫决策过程-Markov Decision Pr ...

  4. 强化学习(Reinforcement Learning)入门学习--01

    强化学习(Reinforcement Learning)入门学习–01 定义 Reinforcement learning (RL) is an area of machine learning in ...

  5. 强化学习 (Reinforcement Learning)

    强化学习: 强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能 ...

  6. 强化学习 Reinforcement Learning(三)——是时候用 PARL 框架玩会儿 DOOM 了!!!(下)

    强化学习 Reinforcement Learning(三)-- 是时候用 PARL 框架玩会儿 DOOM 了!!!(下) 本文目录 强化学习 Reinforcement Learning(三)-- ...

  7. 强化学习(Reinforcement Learning)入门知识

    强化学习(Reinforcement Learning) 概率统计知识 1. 随机变量和观测值 抛硬币是一个随机事件,其结果为**随机变量 X ** 正面为1,反面为0,若第 i 次试验中为正面,则观 ...

  8. Deep QLearning算法详解(强化学习 Reinforcement Learning)

    一.算法详解 文章最后附有博主自己实现的深度qlearning玩space invader游戏 本文介绍的是基于神经网络的qlearning算法.我们知道传统的qlearning算法只能处理状态和动作 ...

  9. 深度增强学习(DRL)简单梳理

    作者:xg123321123 - 时光杂货店 出处:http://blog.csdn.net/xg123321123/article/details/77504032 声明:版权所有,转载请联系作者并 ...

最新文章

  1. “此环境变量太大, 此对话框允许将值设置为最长2047个字符”的解决办法
  2. 用纯C面向过程写icefox3的代码
  3. 论如何优雅的处理回文串 - 回文自动机详解
  4. Linux的Nginx七:对比|模块
  5. 工作总结9:vue处理token
  6. si4438 与 si4432通讯
  7. AGC 012 B - Splatter Painting
  8. 学习python: 2.x 和 3.x的区别
  9. FPGA——sdram控制器1
  10. Android能装到电脑上吗,怎么在电脑上装安卓系统
  11. 传奇地图文件MapInfo参数大全
  12. 【IoT】 产品设计:结构设计流程
  13. bootstrap按钮组btn-group
  14. HTML中来访时间,html记录用户的访问次数代码
  15. 【业务数据分析】——如何搭建数据指标体系
  16. mt4服务器修改,修改mt4服务器地址
  17. docker发布一个springboot项目真香
  18. NETCTOSS代码实现第八版
  19. 数据结构—冒泡排序 C语言代码实现(从前向后/从后向前两种)
  20. 整理有关示波器的一些使用注意事项

热门文章

  1. cellranger-atac 操作笔记-1:安装并构建绵羊单细胞ATAC参考基因组
  2. 网易蜂巢ubuntu16.04 安装Tomcat7
  3. 忘川风华录读取服务器配置文件失败,忘川风华录进不去怎么回事 3.19忘川风华录维护多久才能进[多图]...
  4. 常见的几种用户行为分析模型(一)
  5. 【故障分析】鼠笼式异步电机转子断条故障诊断含Matlab源码
  6. ST-GCN训练自己的数据集代码实践问题记录
  7. 图书馆借书还书(链表)
  8. HTTP之Body格式
  9. windows制作docker镜像_电脑技术之Windows系统篇-PE系统的制作及GHO镜像系统恢复
  10. 如何让scrollview 始终显示最后一行