强化学习的数学原理-05蒙特卡洛方法

MC Basic

modelbaseReinforcementlearning过渡到modelfreeReinforcementlearning最难以理解的是怎么在没有模型的情况下去估计一些量。

这里面就有一个重要的ideaMonteCarloestimation

下面有一个抛硬币的例子:

用一个随机变量(randomvariable)X来表示硬币的结果

如果正面朝上,X=+1

如果反面朝上,X=1

我们的目标是计算E[X]

这里有两种方法去计算E[X]

一种方法是:Modelbases

假设随机变量模型已知:

p(X=1)=0.5,p(X=1)=0.5

根据数学期望的定义,就可以计算出随机变量X的期望E[X]=xxp(x)=1×0.5+(1)×0.5=0

这样期望计算起来就很简单了,但是问题是我们无法做到精确地知道这样的模型

另一种方法Modelfree

idea:投掷硬币多次,然后计算结果的平均值

我们多次投掷硬币得到一系列结果{x1,x2,...,xN}

然后期望可以用上面的采样去估计

E[X]x¯=1Nj=1Nxj

第二种方法就是MonteCarloestimation的基本思想

这里是近似就会存在一个问题,这样去近似得到的结果是否是精确的?

答案是:当N比较小的时候是不精确的,但当N足够大得到的结果就比较精确

1730105374392.png

1730105708932.png

经过上面的前置知识,接下来就是蒙特卡洛算法了。

Policyiteration有两步在每个iteration

{policyevaluationvπk=rπk+γPπkvπkpolicyimprovementπk+1=argmax(rπ+γPπkvπk)

1730106297912.png

所以关键是计算qπk(s,a)

要计算qπk(s,a)实际上由两种方法;

第一种就是valueiteration所用的requiremodel

qπk(s,a)=rp(r|s,a)r+γsp(s|s,a)vπk(s)

第二种是从qπk(s,a)的定义出发:

qπk(s,a)=E[Gt|St=s,At=a]

然后这就是一个meanestimation的问题,我们可以用montecarloestimation的方法依赖于数据data(samplesexperiences)

下面详细看一下是如何做到的

  • 首先从任意一个(s,a)出发,然后根据当前的策略πk生成一个episode
  • 然后计算出这个episodereturng(s,a)表示
  • g(s,a)Gt的一个采样Sample qπk(s,a)=E[GtSt=s,At=a]
  • 假设我们有一个episodes的集合g(j)(s,a),那么我们就可以用这个集合去求一个平均值去估计这个Gt的期望qπk(s,a)=E[GtSt=s,At=a]1Ni=1Ng(i)(s,a)

总结:当模型未知的时候,我们就需要知道数据.没有数据的时候,需要有模型,反正两者需要其中的一个

数据在统计或者概率里面叫sample,在强化学习中叫experience

然后这个算法就比较清楚了

MCBasicalgorithm

首先给定一个初始的策略policyπ0,这里有两步在第k次迭代中

第一步是:Policyevaluation

这一步就是对所有的(s,a)求得qπk(s,a),更具体来讲就是对于每一个(s,a)pair去采样尽可能多(infinite)episodes,平均的return就用来估计qπk(s,a)

第二步是:Policyimprovement

这一步就是去解决πk+1(s)=argmaxπaπ(a|s)qπk(s,a),forallsS贪心的最优策略就是πk+1(aks)=1,whereargmaxaqπk(s,a)

实际上MCbasic算法和Policyiteration是一样的,唯一的区别就是在第一步Policyevaluation(PE)的时候,Policyiteration第一步先求解statevalue然后再根据statevalue去求解actionvalue,而MCBasic算法是直接根据数据(data)得到qπk

bd29cb7c47594b787544cc4e1bf8c65.png

总结:

  1. MCBasicpolicyiteration的一个变型,把PE部分基于model计算的部分去掉,换成不需要model
  2. 所以要学习基于蒙特卡洛的强化学习算法首先要学习基于policyiteration的强化学习算法
  3. MCBasic这个算法是很重要的,他清楚地揭示了怎么把modelbase的算法变为modelfree但是MCBasic这种算法并不适用,因为MCBasic的效率(efficiency)

例子:

1730116761958.png

第一步:PE计算qπk(s,a),对于上面的例子一共有9个状态(state),5个action,所以一共有9×5stateactionpairs,对于每个stateactionpairs都需要进行N次采样

第二步:PL:贪心地选择actiona(s)=argmaxaiqπk(s,a)

MC Exploring Starts

MCBasic算法的推广,可以让MCBasic算法变得更加高效

下面是MCExploringStarts如何做使得MCBasic更高效的

考虑一个网格世界,按照一个策略π,我们可以得到一个episode

s1a2s2a4s1a2s2a3s5a1...

首先引入一个visit的定义:在一个episode中每个上面的一个stateactionpair被称为对这个stateactionpair有了一次访问visitofthatstateactionpair

MCBasic算法中采用的是Initialvisitmethod:对于上面的episode,只考虑(s1,a2),用剩下的得到的return来估计(s1,a2)actionvalue,这样做实际上是没有充分利用这个episoded的

1730129734459.png

事实上还是有两种方法

  1. firstvisitmethod:只在第一次visit的时候估计actionvalue
  2. everyvisitmethod:在每一次visit的时候都估计actionvalue

除了让数据的使用更加effient外还可以让策略的更新更加高效.

MCBasic等待所有的episode都被计算出之后才做一个averagereturn估计actionvalue进行更新policy,而等待的过程就会浪费很多时间.

而还有一种方法就是在计算出一个episodereturn时就立刻用这个episodereturn来估计actionvalue然后就直接去改进策略

这里会有一个问题就是用一个episode去估计actionvalue是不准的,但是根据之前的truncatedpolicyiterationalgorithm告诉我们这样做虽然不是很精确但依然可行。

1730130630301.png

070572f750a72e8b0c52696bd430bd0.png

解释exploringstarts

exploring:是指从每一个(s,a)出发都要有episode,如果恰恰有一个action没有被visit到,而那个action恰恰又是最优的,为了能得到最优的策略,我们还是要确保每一个(s,a)都能被访问到

starts:是指从一个(s,a)生成reward有两种方法,一种是从(s,a)开始一个eposide就是start,另一种是从其他的(s,a)开始也能经过(s,a)用后面的数据也可以估计当前(s,a)return,但是第二种visit是没办法确保的,因为它依赖于策略和环境,没办法保证从一个(s,a)开始经过其他所有剩下的(s,a)

MC Epsilon-Greedy

MCwithoutexploringstarts

softpolicy是对每一个action都有可能做选择

policy分为两种,一种是determinstic的,greadypolicy就是其中之一,还有一种是stochasticpolicysoftpolicy以及下面的ϵgready

引入softpolicy的原因是如果从一个(s,a)出发,如果episode特别长,就能确保任何一个(s,a)都能被visit到于是就可以去掉exploringstarts这个条件了,不需要从每一个(s,a)start

然后softpolicy里面要用的就是其中的ϵgready

π(as)={1ϵA(s)(A(s)1),forthegreadyactionϵA(s),fortheotherA(s)1actions

whereϵ[0,1]and|A(s)|是 状态s对应的action的数量

虽然给其他action了一些选择概率,但是还是把大概率留给了greadyaction

为什么使用ϵgready?

平衡了exploitation(剥削充分利用)和exploration(探索)

1730134576220.png

aef000b7e56a859d900613f8dfc0ff3.png

实际中,我们可以让ϵ逐渐减小,在开始时比较大,具有较好的探索能力,随着时间推移,逐渐减小,最后接近最优策略.

posted @   cxy8  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示