编程语言
首页 > 编程语言> > RL(五)蒙特卡罗算法求解强化学习

RL(五)蒙特卡罗算法求解强化学习

作者:互联网

目录


前面一章用动态规划解决了强化学习问题,但是这个方法只是用基于模型的方法来求解的,即我们事先是知道状态转移方程P的,但是在很多的问题中,我们是不知道这个状态转移方程的,所以我们就必须用其他方程来解决强化学习问题。这篇文章就是用不基于模型的蒙特卡罗算法来求解强化学习问题。

1、蒙特卡罗算法

在用蒙特卡罗算法解决问题之前,我们首先要知道蒙特卡罗算法的大概内容是什么。其基本思想是:
当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。它是一种通过采样近似求解问题的方法

2、为什么要使用蒙特卡罗算法

前面讲的主要内容是整个问题可以转换成一个马尔科夫决策过程(MDP),MDP是通过5元组:<S,P,A,R,γ><S,P,A,R,γ>来做决策的。对于这种已知模型的情况,也就是知道了这个5元组,我们可以容易获得奖赏最大化。但是,在现实世界中,我们无法同时知道这个5元组。比如P,状态转移概率就很难知道,P不知道,我们就无法使用bellman方程来求解V和Q值。但是我们依然要去解决这个问题,所以怎么办呢?怎样转化为一个MDP的形式呢?
一个想法是,虽然我不知道状态转移概率P,但是这个概率是真实存在的。我们可以直接去尝试,不断采样,然后会得到奖赏,通过奖赏来评估值函数。这个想法与蒙特卡罗方法的思想是一致的。我们可以尝试很多次,最后估计的V值就会很接近真实的V值了。

蒙特卡罗法通过采样若干经历完整的状态序列(episode)来估计状态的真实价值。所谓的经历完整,就是这个序列必须是达到终点的。比如是否成功种出西瓜,驾车问题成功到达终点或者失败。有了很多组这样经历完整的状态序列,我们就可以来近似的估计状态价值,从而求出预测问题和控制问题。可以用如下的图来理解状态序列(episode):
在这里插入图片描述
episode就是经历,每条episode就是一条从起始状态到结束状态的经历。例如在走迷宫,一条episode就是从你开始进入迷宫,到最后走出迷宫的路径。

从特卡罗法法的特点来说,一是和动态规划比,它不需要依赖于模型状态转化概率。二是它从经历过的完整序列学习,完整的经历越多,学习效果越好。

3、蒙特卡罗法求解强化学习预测问题

首先假定有一个定策略π的完整有T个状态的状态序列如下:
在这里插入图片描述
回顾之前的价值函数vπsv_π(s)vπ​(s):
在这里插入图片描述
可以看出每个状态的价值函数等于所有该状态收获的期望,同时这个收获是通过后续的奖励与对应的衰减乘积求和得到。那么对于蒙特卡罗法来说,如果要求某一个状态的状态价值,只需要求出所有的完整序列中该状态出现时候的收获再取平均值即可近似求解,也就是:
在这里插入图片描述
其实通俗理解就是求平均值。

但是这样算也会出现一些问题,比如,如果一个完整的序列中某个状态出现多次,我们怎么去算它的平均值呢?这里有两种解决办法:
(1):首次访问(first visit)。即我们只把一个完整状态中第一次出现的状态值对应的收获值纳入到平均值的计算中。如下图所示:
在这里插入图片描述
(2):每次访问(every visit)。另一种是针对一个状态序列中每次出现的该状态,都计算对应的收获值并纳入到收获平均值的计算中。如下图所示:
在这里插入图片描述

两种方法相比较可以发现:二种方法比第一种的计算量要大一些,但是在完整的经历样本序列少的场景下会比第一种方法适用。

还有一个问题就是计算平均值的时候,我们是否必须保存所有该状态的收获值之和最后取平均。这样算原理上是可以的,但是就是比较占空间。一个较好的方法是在迭代计算收获均值,即每次保存上一轮迭代得到的收获均值与次数,当计算得到当前轮的收获时,即可计算当前轮收获均值和次数。通过下面的公式就很容易理解这个过程:
在这里插入图片描述
这样上面的状态价值公式就可以改写成:
在这里插入图片描述
这样我们无论数据量是多还是少,算法需要的内存基本是固定的 。

4、蒙特卡罗法求解强化学习控制问题

在控制问题中,最重要的就是去改进当前策略,即该怎样去选择哪些动作。在蒙特卡罗求解控制问题中需要解决的也是找到一个方法来选择不同的策略去改进当前策略。目前主要有两种不同的动作选择方式,即固定策略(On-policy)和离线策略(Off-policy)方法。

(1)固定策略法:固定策略的 思想是个体已经有一个策略,并且基于该策略进行采样,以得到的状态序列(episode)来更新函数。之后采用策略评估和策略改进对给定策略进行迭代,以获得最优策略。因为需要优化的策略基于当前给定的策略,因此也叫做固定性策略。固定算法又可以分为起点探索算法和非起点探索算法。

(2)非固定性策略:非固定性有两个策略,一个策略负责向另一个策略学习,从它那里进行采样。这里所说的另一个策略可以使实现学习到的策略,或者人为提前制定的一些较为成熟的策略方法。理解就是,在自身策略形成的价值函数基础上观察别的策略所产生的行为,以此达到学习的目的。因为优化的策略不完全基于当前的策略,所以也叫非固定策略。

4.1、固定策略法

在讲解算法之前,我们首先要明白蒙特卡罗算法在策略迭代过程中设置里两个前置条件:
(1)个体获得的episode基于起始点探索方式
(2)策略评估过程可以利用无限的episode数据。

针对第一个条件:
起始点探索只有一个探索起点的环境。对蒙特卡罗算法来说,episode的完整性很重要,完备的训练样本才可以估计出准确的价值函数。但是在很多情况下,无法保证多次采样之后,还可以获得较完备的分布,导致一部分状态没有被访问到。所以可以设置一个随机概率分布,使得所有可能的状态都有一定不为0的概率作为起始状态,这样能保证遍历尽可能多的状态。

起始点会对所有的<状态-动作>对的奖励进行加权平均,而不管所观察到的策略是否最优。但是这个方法也很容易收敛不到全局最优或局部最优。甚至在最坏的情况下,动作价值函数只能代表该策略的值函数,等同于只进行了策略评估过程,而没有对策略进行改进。

起始点探索给状态空间中的每个装填都赋予了一定的概率值,尽可能保证每一种状态都有可能被访问到,进而保证了训练样本的完备性。

针对上面的第二个条件表明唯有采样的数据足够做才能保证每一状态都被访问到,但是在实际任务中这是很难实现的,所以在非起始点探索中,我们使用ϵ− 贪婪法:
在这里插入图片描述
设置一个较小的ϵ值,使用1−ϵ的概率贪婪地选择目前认为是最大行为价值的行为,而用ϵ 的概率随机的从所有m 个可选行为中选择行为。

其实两种算法都是为了增加episode空间的完备性。

4.2、非固定策略法

根据是否经历完整的episode,可以将非固定策略学习分为蒙特卡罗法和时序差分法,基于蒙特卡罗法的非固定策略学习仅有在理论上研究的价值,在实际任务中的效果并不明显,很难获得优化策略和最有价值函数。这里只是简单介绍一下,不做详细说明。
我们将在下一章详细讲解时序差分法。

5、总结

和动态规划比,蒙特卡罗法不同之处体现在三点:
(1)是预测问题策略评估的方法不同。
(2)是蒙特卡罗法一般是优化最优动作价值函数q∗,而不是状态价值函数v∗。因为我们的episode都是确定的动作,所哟这里使用的是动作价值函数。
(3)是动态规划一般基于贪婪法更新策略。而蒙特卡罗法一般采用ϵ−贪婪法更新

下一章:时序差分法

参考文章:https://blog.csdn.net/liweibin1994/article/details/79111536
https://www.cnblogs.com/pinard/p/9492980.html

标签:状态,episode,策略,求解,算法,蒙特卡罗,RL
来源: https://blog.csdn.net/weixin_42022175/article/details/99714051