蒙特卡洛估计
以抛硬币为例,正面记为1,反面记为0
1、有模型的情况下,那么我们知道1和0的概率分别为0.5,可以得到期望为
2、无模型的情况下,我们只能通过黑盒的方式不停的抛硬币得到一组样本序列,比如是{1,1,1,0,1,0,......}记为{},则有期望
,这就是蒙特卡洛估计的思想
最简单的基于蒙特卡洛的强化学习算法
策略迭代算法有以下两个步骤:
展开Policy improvement步骤的公式:
当我们得到最大的q(s,a)其对应的概率则为1,关键就是计算
方式一:model-based
上式中,我们需要每个action获得的reward、这个reward的概率、action到达的下一状态s‘,这就要求我们提前设计好模型
方式二:model-free
根据蒙特卡洛估计的思想,在状态s、动作a、策略下,对回报
进行采样得到g(s,a),多次采用后得到一个序列
,那么
由此可以计算得到
关于model-base和model-free:(深入理解)强化学习中Model-based和Model-free的区别是什么_modelbase和modelfree有什么区别-优快云博客
蒙特卡洛基础算法(The MC Basic algorithm):
给定一个初始策略,在第k次3迭代有两个步骤:
步骤一:策略估算
这一步是为了获得。对于每一对(s,a),执行数次episode,得到的return的均值即
的近似值。
步骤二:策略优化
这一步是解决。采用贪心算法,那么我们可以选择
时的action的概率为1,即
MC Exploring Starts
更高效的使用数据
The MC Basic algorithm有什么问题呢?效率低下。
考虑一个网格世界的例子,根据策略,我们可以得到一个episode的数据如下:
我们仅仅计算了,并没有完整利用数据。上面的episode可以进行如下的拆解:
则,可以估计
更高效的策略估计
在更新策略时,有下面两种方法:
方法一:first-visit method:采集从这个状态-动作对开始的所有episode的return,并求期望作为action value的近似值
方法二:every-visit method:一个episode的return直接作为action value的近似值。
采用方法二并不会因为值不够近似导致问题,方法二的思想类似于截断策略迭代算法。
MC Exploring Starts
如果采用了上面提到的高效的数据使用和策略估计的方式,我们得到一个新的算法,名为:MC Exploring Starts。算法描述如下:
初始化猜测一个策略,对于每一个episode:
步骤一:episode generation。随机选择一个状态-动作对,并确保每一个动作-状态对都有可能被选到,根据当前的策略,产生一个长为T的episode的数据:
步骤二:策略估算和策略更新:
初始化累计奖励为0即,对于这个episode中的每一步,
计算每一步的回报:
使用first-visit method:
如果这是第一次遇到状态-动作对,那么1️⃣将累积奖励g加到它的返回值上,2️⃣再计算状态-动作对
的平均返回值,得到其动作价值函数
,3️⃣更新策略,使得在状态
下,选择动作a的概率为1,如果a是使
最大的动作。公式如下:
MC without exploring starts
ε-greedy policies
ε-greedy policy是一种平衡探索(exploration)和利用(exploitation)的策略。它通过一个参数ε来控制选择动作的概率。公式如下:
其中,表示探索的概率;
表示在状态s下可选的动作数量。
1️⃣对于“贪婪”动作(即当前估计价值最高的动作),选择它的概率为。
2️⃣对于其他所有动作,每个动作被选择的概率为。
ε-greedy policy的主要目的是在探索和利用之间找到一个平衡点。
探索(Exploration): 尝试不同的动作以发现可能更好的策略。
利用(Exploitation): 使用当前已知的最佳策略来获得最大奖励。
不同ε值的影响:
1️⃣当 时,策略完全变成贪婪策略(Greedy Policy),总是选择当前估计价值最高的动作。这会导致更多的利用但较少的探索。
2️⃣当时,策略变成均匀分布,每个动作被选择的概率相同。这会导致更多的探索但较少的利用
MC ε-Greedy algorithm
算法的目标是找到一个最优策略,即在所有可能的策略中,能够最大化长期奖励的策略。
从一个初始猜测的策略开始,并设定一个介于0和1之间的ε值。对于每一个episode(一次完整的尝试或游戏),执行以下步骤:
- 随机选择一个起始的状态-动作对
,根据当前的策略,生成一个长度为T的episode。这包括一系列的状态、动作和奖励,
- 策略评估与改进:这部分涉及计算每个状态-动作对的价值,并根据这些价值来更新策略
- 初始化累计奖励为0即
- 对于这个episode中的每一步,
- 计算每一步的回报:
- 使用every-visit method:
,将累积奖励g加到状态-动作对
的返回值上
, 计算状态-动作对
的平均返回值,得到其动作价值函数
- 找到使
最大的动作
:
:更新策略,使得再状态
下,选择动作
的概率为
,选择其他动作的概率为
- 计算每一步的回报:
- 初始化累计奖励为0即
- 通过不断重复上述过程,算法逐渐优化策略,最终逼近最优策略