只为记录学习心得
学习视频来源B站up主 西湖大学空中机器人:
链接:https://www.bilibili.com/video/BV1sd4y167NS/?spm_id_from=333.337.search-card.all.click&vd_source=ad94eb95d81e9e6b1a5d71459ef1a76d
目录
1.典例:Monte Carlo estimation
2.MC Basic
3.MC Exploring Starts
4.MC ε-Greedy
1.典例
值迭代和策略迭代统称为model-based reinforcement learning(MBRL,基于模型的强化学习),更准确的应该是会称为dynamic programming(动态规划方法),这个主要是研究如用数据估计出来一个模型,再基于这个模型进行强化学习
蒙特卡洛方法是model-free reinforcement learning(MFBL,无模型强化学习)
如何在没有模型的情况下去估计一些量,重要的思想就是Monte Carlo estimation
下面举例说明它的思想
第一种求解方法(基于模型):
这个存在的问题是如此精确的概率分布(概率模型)我们可能是无法知道的
第二种求解方法(无模型):
Question:用平均数来近似期望E(X)是否精确?看下图
- 当N比较小时,近似是不准确的
- 随着N的增加,近似值变得越来越精确
这种近似是有数学支撑的,那就是Law of Large Numbers(大数定律)
这个大数定律是说如果随机事件它是满足独立同分布的,那么当N越大,直到无穷时,平均值x就是E[X]的无偏估计,样本均值(平均值)趋于总体均值(期望)
因此蒙特卡洛适合需要大量的实验
回到目录
2.MC Basic
策略迭代是基于模型的,怎么将其转换成无模型的呢?
策略迭代的核心是计算qπk,qπk是包含模型的,它有两种计算方法
第一种是用模型来计算,第二种是原始定义,利用求期望进行计算
所以MC Basic的核心就是第二种解法,因为蒙特卡洛方法可以求解期望
最后一句的数据在统计学中叫做sample(样本),在强化学习中叫做experience(经验)
所以MC Basic的步骤
从一个策略出发,在每次迭代中,先求出该策略的所有(s,a)的q值,然后求平均得到最终q值【策略迭代算法在这步是先求出state value,再求出最终q值】,再通过最终q值来进行策略改进
伪代码如下:
算法优缺:
对于一个例子:
解法步骤:
第一步细分:
第二步:
接下去是对s3的步骤
效果和策略迭代一样,每次迭代距离目标区近的先得到最优策略,迭代的次数不一定需要无限长
3.MC Exploring Starts
MC Basic因为太简单,所以它的效率很低,在实际当中是不会用到的,怎么将其推广变得实用呢?
对于何时更新策略,MC Basic中是在等所有episode得到后计算return算出q值,才进行更新的,这样有个缺点,就是需要等所有的episode都得到才能更新,有一个等待的过程
MC Exploring Starts就不需要等待,当一个episode得到后就计算q值,开始更新
有人可能会说,一个episode的返回不能准确地接近相应的动作值q
事实上,我们已经在截断策略迭代算法中这样做了
MC Exploring Starts的算法步骤:
soft policy
为什么要引入soft policy,因为当从某个(s,a)出发时,它的episode是非常长的,能够覆盖所有的(s,a),这个我就能只需要计算一个或几个episode就可以了,不用计算全部
这里的soft policy要用什么呢? --> ε-greedy policy
什么是ε-greedy policy?
就是策略会以一个包含ε的概率选择一个greedy action ,|A(s)|表示s的所有动作的个数,这个选择greedy policy的概率是最大的
为什么要用ε-greedy?
平衡exploitation(充分利用)和exploration(探索)
- exploitation是指从当前s出发,以较大的概率选择action中action value最大的
- exploration是指从当前s出发,虽然能以较大的概率选择得到最大的action value的action,但是有可能目前信息是不完全的,有可能其他aciton的action value要更好,应该要有概率去探索一下其他的action
- 当ε=0时,探索更弱,充分利用更强
- 当ε=1时,探索更强,充分利用更弱
如何将ε-greedy和蒙特卡洛结合?
先看一下之前MC Basic 和MC Exploring Stars在策略改进的步骤是什么
然后求解出最优策略
嵌入ε-greedy是在哪里嵌入呢?
这时候得到的最优策略是
伪代码和MC Exploring Stars相似
这里用的是every-visit,而不是first-visit
接下来举例探讨ε-greedy的探索性,当ε=1时就是均匀分布,每个动作的概率是相同的
绿色是探索的情况,对于单个episode,100步时只探索了部分,100步时基本探索了所有state和其对应的action,(d)是表示探索了一百万步时(s,a)被索引的次数
如果ε=0时,可以看到10000步时仍有一些action没有被访问到,且一百万步时访问的分布是很不均匀的,有的多有的少
下面是ε-greedy和蒙特卡洛的结合,虽然得到了探索性,但是牺牲了最优性
所以应该设置比较小的ε,让ε-greedy趋于greedy
也可以让ε初始大一些,让后逐渐减弱,直到趋向于0(比如使用退火机制)
看下例子
这时候ε=0.1时的state value是比较小的,这是因为有0.1的概率选择了其他的action
ε越大state value越小,为什么0.5的目标区最小,是因为它向周围选择坏的action概率更大
上上图有个consistent(一致的),这是很重要的,因为使用 MC ε-greedy所得到的最优ε-greedy的策略,在实际应用中,就会把ε取消掉,将ε-greedy转成greedy来应用,所以ε要设置得很小
欢迎指正!