强化学习(3):蒙特卡洛方法——从采样估计到无模型控制

从动态规划到蒙特卡洛方法
上一篇讨论了动态规划(Dynamic Programming)。在那里,值迭代(Value Iteration)和策略迭代(Policy Iteration)之所以能够成立,根本原因在于:我们已经知道环境模型,也就是知道状态转移概率和奖励函数。于是,对某个状态的价值进行更新时,就可以直接按照贝尔曼方程或贝尔曼最优方程,把所有可能的后继状态及其概率完整地枚举出来,再计算精确期望。换句话说,动态规划做的是已知模型条件下的全期望更新。这一点也是它能够保持形式清晰、推导直接的原因。
但是,强化学习真正有代表性的场景,往往并不是这样。
在很多实际问题中,智能体并不知道环境内部的状态转移规律,也无法事先写出完整的奖励函数。它能做的,通常只有一件事:在环境中执行动作,观察接下来发生了什么,并记录自己获得了怎样的奖励。也就是说,智能体面对的不是一个可以直接查询的模型,而是一段段交互经验。到了这里,一个很自然的问题就出现了:
如果不能再像动态规划那样直接计算期望,那么价值函数还能怎样估计?
这正是蒙特卡洛方法(Monte Carlo Method)出现的位置。
从逻辑上看,它并不是动态规划之外突然冒出来的一类新技巧,而是顺着前面的思路自然走出来的。既然动态规划的核心是在做“期望计算”,那么当精确期望无法直接得到时,最直接的替代思路就是:不用模型把所有可能结果一次算全,而是通过实际采样得到若干真实结果,再用样本平均去近似期望。
这一步转变非常关键。它意味着我们开始从“基于模型求解”过渡到“基于经验学习”。
更具体地说,在动态规划里,我们会写出类似这样的更新:
$$ V_\pi(s)=\sum_a \pi(a\mid s)\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_\pi(s')\Big] $$这里之所以能直接计算,是因为右侧所有概率和奖励都已知。而在模型未知时,这个式子虽然仍然在理论上成立,但已经不能直接拿来算。因为此时我们并不知道每个 $s'$ 出现的概率,也不知道所有可能奖励的精确分布。于是,原先“对所有可能后果求期望”的思路,就必须转化为“从真实交互中观察若干结果,再据此估计期望”。
这正对应了蒙特卡洛方法最基本的思想:如果一个量本质上是某个随机变量的期望,那么就可以通过重复采样,用样本均值去逼近它。
放到强化学习里,这个随机变量通常不是单步奖励,而是从某个时刻开始的回报 $G_t$。因此,蒙特卡洛方法关心的不是如何利用环境模型递推计算价值,而是如何从一条条实际经历过的轨迹中,直接估计状态价值或动作价值。
这也解释了为什么在动态规划之后,自然就会进入蒙特卡洛方法。
因为前面已经解决了一个问题:价值函数应当满足怎样的递推关系;现在则要进一步面对更现实的设定:当模型未知时,仅靠采样经验,能不能仍然学到这些价值函数,甚至进一步学到更优策略。 动态规划给出的是“如果一切都知道,该怎么精确算”;蒙特卡洛方法开始回答的是“如果不知道模型,只能靠经历,该怎么估计”。
从这个角度看,两者并不是彼此割裂的,而是在解决同一类问题时,所依赖信息条件不同:
- 动态规划依赖已知环境模型,直接计算期望;
- 蒙特卡洛方法不要求已知模型,而是通过采样近似期望。
因此,蒙特卡洛方法真正带来的第一个变化,不是算法形式上的变化,而是信息来源的变化:价值不再来自模型计算,而来自经验统计。
什么是蒙特卡洛方法
在上一部分里,已经看到,从动态规划过渡到蒙特卡洛方法,关键不在于“目标变了”,而在于“可用信息变了”。目标仍然是估计价值函数、改进策略;变化的是,我们不再能够直接访问环境模型,因此也就不能再对贝尔曼方程右侧做精确的全期望计算。到了这里,就需要先把“蒙特卡洛方法”本身讲清楚。
从一般意义上说,**蒙特卡洛方法(Monte Carlo Method)**并不专属于强化学习。它是一大类基于随机采样(Sampling)的数值估计方法,其基本思想是:
当某个量难以直接精确计算时,可以通过重复采样得到若干样本,再用样本平均去近似这个量。
如果把它写成最基本的概率论形式,就是下面这个思路。
设随机变量 $X$ 的数学期望为
$$ \mathbb{E}[X] $$如果我们无法直接把这个期望算出来,但可以独立重复地观察到若干个样本
$$ x_1,x_2,\dots,x_n $$那么就可以用样本均值
$$ \frac{1}{n}\sum_{i=1}^{n} x_i $$去近似 $\mathbb{E}[X]$。当样本数量足够多时,这个样本均值会逐渐接近期望值。这就是蒙特卡洛方法最核心的出发点。它不是在“推导出一个解析解”,而是在“通过样本逼近真实值”。
这个思想放到强化学习里,就会得到一个非常自然的对应关系。
强化学习中真正关心的量,不是某个抽象随机变量本身,而是从某个时刻开始的回报(Return)。时刻 $t$ 的回报写作
$$ G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots $$而状态价值函数定义为
$$ V_\pi(s)=\mathbb{E}_\pi[G_t \mid S_t=s] $$动作价值函数定义为
$$ Q_\pi(s,a)=\mathbb{E}_\pi[G_t \mid S_t=s,\;A_t=a] $$从形式上看,这两个定义本质上都是“某种条件下回报的期望”。既然如此,那么蒙特卡洛方法就可以直接介入:
- 如果想估计 $V_\pi(s)$,就去收集“从状态 $s$ 出发时实际得到的回报样本”;
- 如果想估计 $Q_\pi(s,a)$,就去收集“从状态—动作对 $(s,a)$ 出发时实际得到的回报样本”;
- 然后对这些样本回报求平均,把这个平均值作为价值的估计。
也就是说,在强化学习中,蒙特卡洛方法做的事情可以概括为一句话:
用实际经历到的回报样本均值,去近似状态价值或动作价值的期望。
这时再回头看,就会发现它和动态规划的差别已经非常清楚了。
动态规划中,一个状态的价值更新依赖的是贝尔曼方程右侧的精确期望;而蒙特卡洛方法中,一个状态的价值估计依赖的是这个状态在真实经验中对应的若干回报样本。前者是“先知道概率分布,再算期望”,后者是“先观察样本,再用样本近似期望”。
为了把这件事说得更具体,可以考虑一个简单想法。假设当前策略 $\pi$ 已经固定,现在想估计某个状态 $s$ 的价值 $V_\pi(s)$。如果一次回合中访问到了状态 $s$,并且从这个时刻起直到回合结束,实际获得的折扣回报是
$$ G_t $$那么这个 $G_t$ 就可以看成是 $V_\pi(s)$ 的一个样本。因为按照定义,
$$ V_\pi(s)=\mathbb{E}_\pi[G_t \mid S_t=s] $$所以只要反复经历很多次“访问状态 $s$”的情况,并记录每次之后得到的回报,就可以把这些回报求平均,用来估计 $V_\pi(s)$。
这个过程里有一个很重要的特点:它不需要知道环境下一步会以多大概率转移到哪里。
为什么不需要?因为蒙特卡洛方法并不尝试去枚举所有可能后果,再做概率加权;它直接使用“已经发生过的整段结果”。环境内部的概率规律虽然仍然存在,但它们已经隐含在采样出来的轨迹里了。换句话说,蒙特卡洛方法并不是绕开了随机性,而是通过反复采样,让随机性自己在样本中体现出来。
这也是为什么说蒙特卡洛方法不需要环境模型(Model-free)。它不需要显式知道
$$ P(s' \mid s,a),\quad r(s,a,s') $$只需要能够与环境交互,得到一条条实际轨迹,并从轨迹中计算对应回报即可。
这里还要澄清一个容易混淆的点:
“不需要环境模型”不等于“没有环境规律”。
环境当然仍然有自己的状态转移规律和奖励机制,只是这些规律对智能体来说不必显式可知。蒙特卡洛方法不要求把这些规律写出来,只要求能够从环境中采样得到经验。因此,它是一种**从经验中学习(Learning from Experience)**的方法,而不是一种依赖先验模型求解的方法。
到这里,可以先把蒙特卡洛方法在强化学习中的特征概括成三点:
第一,它估计的是回报的期望,因此本质上仍然是在估计价值函数。
第二,它依赖的是采样得到的完整经验,而不是环境模型的显式表达。
第三,它天然适合处理**基于回合(Episode-based)**的问题,因为只有当一整段经验走完后,才能直接把从某个时刻开始直到结尾的回报完整算出来。
最后这一点很重要,也正是下一步要展开的地方。因为前面虽然已经说明,蒙特卡洛方法是用“实际回报样本的平均”来估计价值,但这里还隐含了一个前提:这个回报样本通常要等到一整个回合结束之后才能完全得到。
基于回合的价值估计
前面已经说明,蒙特卡洛方法在强化学习中的核心做法是:把价值函数看作回报的期望,再用实际采样得到的回报样本均值去近似这个期望。接下来需要进一步回答的是:这些“回报样本”到底是怎样得到的,为什么蒙特卡洛方法通常总是和**回合(Episode)**联系在一起。
先看回报的定义。按照前文的记号,从时刻 $t$ 开始的回报写作
$$ G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots $$这个式子看起来只是一个定义,但它有一个直接后果:如果想知道某一时刻真正对应的回报 $G_t$,就必须知道从这一时刻开始之后的整段奖励序列。
也就是说,回报不是一个“当前立刻就能完整得到”的量。当前只能先看到 $r_t$,下一步才能看到 $r_{t+1}$,再下一步才能看到 $r_{t+2}$。只有当后续过程继续展开,直到这一段交互结束,或者至少走到了一个明确的截断位置,我们才能把这串奖励真正累加起来,算出对应的 $G_t$。
这就决定了一个事实:
经典蒙特卡洛方法通常要等到一个回合结束后,才能对这个回合中访问过的状态或状态—动作对进行价值估计。
这就是所谓的基于回合(Episode-based)。
先把“回合”这个概念说清楚。
在分幕式任务(Episodic Task)中,一次完整的交互会从某个初始状态开始,经过若干步状态转移和动作选择,最终到达终止状态(Terminal State),这一整段过程就叫一个回合。于是,一条回合轨迹可以写成
$$ s_0, a_0, r_0, s_1, a_1, r_1, \dots, s_T $$其中 $s_T$ 是终止状态。到达终止状态后,这一回合结束,新的回合再从新的初始状态重新开始。
在这样的设定下,如果某个状态 $s_t$ 出现在第 $t$ 步,那么从这个状态开始的回报
$$ G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots + \gamma^{T-t-1}r_{T-1} $$只有当这一整条回合走完时,才能完全计算出来。
所以,蒙特卡洛方法和分幕式任务之间天然是匹配的。因为它直接依赖“完整后果”来估计价值,而完整后果通常要到回合结束时才全部显现出来。
现在可以更具体地看“基于回合的价值估计”到底在做什么。
假设策略 $\pi$ 已经固定,我们要估计状态价值函数
$$ V_\pi(s)=\mathbb{E}_\pi[G_t\mid S_t=s] $$那么一种最直接的做法就是:
- 按照策略 $\pi$ 与环境反复交互,收集很多个完整回合;
- 每当某个回合中访问到状态 $s$,就把该时刻之后直到回合结束的回报 $G_t$ 算出来;
- 把所有这些从状态 $s$ 出发得到的回报收集起来;
- 对它们求平均,作为 $V_\pi(s)$ 的估计。
如果记这些样本回报为
$$ G_t^{(1)}, G_t^{(2)}, \dots, G_t^{(n)} $$那么对应的估计值可以写成
$$ V_\pi(s)\approx \frac{1}{n}\sum_{i=1}^n G_t^{(i)} $$这里的含义很直接:状态 $s$ 的真实价值是“从这个状态出发时回报的期望”,而我们现在无法直接拿到这个期望,于是就用多次实际观察到的回报均值去近似它。
对动作价值函数也是完全类似的。若要估计
$$ Q_\pi(s,a)=\mathbb{E}_\pi[G_t\mid S_t=s,\;A_t=a] $$那么就收集那些“在状态 $s$ 下执行动作 $a$”之后的回报样本,再对它们求平均。
这里有一个很重要的特点,需要单独指出:
蒙特卡洛方法用的是实际回报,而不是自举(Bootstrap)目标。
它的意思是,蒙特卡洛方法在估计 $V_\pi(s)$ 时,不会像后面时序差分方法那样,用“当前奖励 + 下一状态的估计价值”来构造更新目标;它直接等到整段经验结束,拿到一个完整的实际回报 $G_t$,然后拿这个真实回报去更新当前估计。
例如,在某个回合中,状态 $s$ 之后实际得到的回报是
$$ G_t=3.7 $$那么这一次访问状态 $s$ 时,对 $V_\pi(s)$ 的一个样本就是 $3.7$。这个样本里不需要再引入某个中间状态的估计值,它就是一整段经验最终给出的结果。
这也是蒙特卡洛方法和动态规划的另一个关键差别:
- 动态规划基于模型,直接计算期望;
- 蒙特卡洛方法不计算期望,而是等完整样本出来后,用样本均值逼近期望。
而这件事之所以可行,前提就是有完整回合,或者至少能明确知道“这一段经验到哪里为止”。
不过,到这里还会立刻遇到一个更细的问题。
假设在一个回合里,同一个状态 $s$ 被访问了不止一次。那么这一回合到底给状态 $s$ 提供了几个回报样本?是只取第一次访问对应的回报,还是每次访问都算一个样本?
这并不是一个细枝末节的问题,而是蒙特卡洛方法中一个标准区分:首次访问(First-Visit)蒙特卡洛与每次访问(Every-Visit)蒙特卡洛。
首次访问与每次访问
前面已经说明,蒙特卡洛方法会在完整回合结束后,回头计算其中各个时刻对应的回报,再用这些回报去估计状态价值或动作价值。接下来就会遇到一个很具体的问题:
如果同一个状态在一个回合中出现了多次,那么这一回合该怎样为这个状态提供样本?
这正对应两种经典做法:
- 首次访问(First-Visit)蒙特卡洛
- 每次访问(Every-Visit)蒙特卡洛
它们的差别只在一个地方:对同一回合内重复访问同一状态时,究竟记录几次回报样本。
先看一个简单例子。假设某个回合中的状态序列为
$$ s_0 \to s_1 \to s_2 \to s_1 \to s_3 \to \text{terminal} $$这里状态 $s_1$ 在同一个回合里出现了两次:第一次出现在较前位置,第二次出现在后面位置。
由于两个时刻所处的位置不同,因此它们之后的未来奖励序列也不同,对应的回报自然也不同。假设这两次访问 $s_1$ 的时刻分别是 $t_1$ 和 $t_2$,那么它们对应的回报分别是
$$ G_{t_1},\quad G_{t_2} $$注意,这两个量都可以视为“从状态 $s_1$ 出发得到的回报样本”,只是它们来自同一回合中的不同访问位置。
问题就在这里:我们估计 $V_\pi(s_1)$ 时,到底是只用 $G_{t_1}$,还是同时使用 $G_{t_1}$ 和 $G_{t_2}$?
首次访问蒙特卡洛
首次访问(First-Visit)蒙特卡洛的规则是:
在一个回合中,对于某个状态 $s$,只使用该状态第一次出现时对应的回报作为样本;后续同一回合中再次访问该状态时,不再重复记样本。
也就是说,在刚才那个例子里,状态 $s_1$ 虽然出现了两次,但首次访问蒙特卡洛只保留第一次出现对应的回报
$$ G_{t_1} $$而忽略第二次的
$$ G_{t_2} $$如果从多个回合收集数据,那么对状态 $s$ 的估计通常写成
$$ V_\pi(s)\approx \frac{1}{N(s)}\sum_{i=1}^{N(s)} G^{(i)}_{\text{first}}(s) $$其中 $N(s)$ 表示在多少个回合中,状态 $s$ 至少被首次访问过一次;而 $G^{(i)}_{\text{first}}(s)$ 表示第 $i$ 个相关回合里,状态 $s$ 第一次出现时对应的回报。
这种做法的特点是:每个回合对每个状态至多贡献一个样本。
每次访问蒙特卡洛
每次访问(Every-Visit)蒙特卡洛的规则则更直接:
在一个回合中,只要某个状态 $s$ 被访问到一次,就记录一次对应回报;如果同一回合里访问了多次,就把每次访问都当作样本。
于是,在刚才那个例子里,状态 $s_1$ 对应的两个回报
$$ G_{t_1},\quad G_{t_2} $$都会被保留下来,共同用于估计 $V_\pi(s_1)$。
如果从所有访问中收集样本,那么估计形式可以写成
$$ V_\pi(s)\approx \frac{1}{M(s)}\sum_{j=1}^{M(s)} G^{(j)}_{\text{every}}(s) $$这里 $M(s)$ 表示跨所有回合统计后,状态 $s$ 被访问的总次数;每一次访问都会提供一个样本回报。
这种做法的特点是:一个回合对同一个状态可以贡献多个样本。
两者的区别到底在哪里
从表面看,两者都在做同一件事:用回报样本均值来近似状态价值。因此它们的核心目标完全一致,差别只在样本的取法。
首次访问蒙特卡洛更“保守”。它避免同一回合里某个状态反复出现时,过多地让这一回合影响估计结果。每个回合对每个状态只记一次,因此样本之间的结构更整齐。
每次访问蒙特卡洛更“充分”。只要状态被访问到了,就把这次访问利用起来,不浪费可用样本。因此在实现上往往也更直接:遍历整个回合,遇到一次访问就记一次回报即可。
这里要特别说明:首次访问和每次访问的区分,不只是对状态价值函数成立,对动作价值函数也同样成立。
如果估计的是
$$ > Q_\pi(s,a) > $$那么区分方式就变成:
- 首次访问:在一个回合里,只对状态—动作对 $(s,a)$ 的第一次出现记样本;
- 每次访问:在一个回合里,$(s,a)$ 每出现一次,就记一次样本。
也就是说,区分对象不是单纯“状态是否重复”,而是“当前要估计的对象是否在同一回合里重复出现”。
两种方法谁更好
两者都可以作为合法的蒙特卡洛价值估计方法,并且在样本足够多时,都会收敛到正确的价值。
也就是说,它们不是“一个对,一个错”,而是两种不同的样本组织方式。实际使用中,每次访问方法通常实现更顺手一些,而首次访问方法在概念上更容易说明“每个回合对一个状态只贡献一次独立样本”这一点。
因此,在理论介绍里,两者通常都会讲;而在很多简单实现中,每次访问版本会更常见一些。
到这里,其实已经可以把最基本的蒙特卡洛价值估计过程说完整了:
- 固定一个策略 $\pi$;
- 采样很多个完整回合;
- 对每个状态或状态—动作对,收集其对应回报样本;
- 这些样本可以按首次访问或每次访问的规则组织;
- 再用样本均值估计价值函数。
这件事本身,就是蒙特卡洛预测(Monte Carlo Prediction)。
蒙特卡洛预测
到这里,前面的几个概念已经可以收束成一个更完整的对象了。前文依次说明了:
- 蒙特卡洛方法通过采样均值近似期望;
- 在强化学习中,价值函数本质上是回报的条件期望;
- 因此可以通过完整回合中的实际回报样本来估计价值;
- 而这些样本可以按首次访问或每次访问的方式组织。
把这些内容合在一起,就得到蒙特卡洛预测(Monte Carlo Prediction)。
所谓“预测(Prediction)”,这里仍然是强化学习中的标准含义:给定一个策略,估计这个策略对应的价值函数。 它不负责改策略,也不直接寻找最优策略,而是回答这样的问题:
如果智能体始终按照当前策略 $\pi$ 与环境交互,那么各个状态的价值 $V_\pi(s)$,或者各个状态—动作对的价值 $Q_\pi(s,a)$,应该是多少?
因此,蒙特卡洛预测可以看作是“用蒙特卡洛方法做策略评估”。
问题定义
先看状态价值的情形。
对固定策略 $\pi$,状态价值函数定义为
$$ V_\pi(s)=\mathbb{E}_\pi[G_t\mid S_t=s] $$而蒙特卡洛预测要做的,就是利用按策略 $\pi$ 采样得到的一批完整回合,估计每个状态的这个期望值。
如果估计的是动作价值函数,则目标变成
$$ Q_\pi(s,a)=\mathbb{E}_\pi[G_t\mid S_t=s,\;A_t=a] $$此时只需把样本收集对象从“状态”换成“状态—动作对”即可,思路本身完全相同。
所以从本质上说,蒙特卡洛预测解决的是一个经验式策略评估问题:不依赖环境模型,而是依赖按当前策略采样得到的完整经验。
基本流程
以状态价值估计为例,蒙特卡洛预测的基本流程可以概括为下面几步。
第一步,固定一个策略 $\pi$。 在预测问题中,策略不是待优化对象,而是已知条件。所有采样都按这个策略进行。
第二步,按照策略 $\pi$ 与环境反复交互,收集多个完整回合。 每个回合都从初始状态开始,直到终止状态结束。
第三步,在每个回合结束后,回头计算该回合中各个时刻的回报。 如果某一回合为
$$ s_0,a_0,r_0,s_1,a_1,r_1,\dots,s_T $$那么对任意时刻 $t$,都可以计算
$$ G_t=r_t+\gamma r_{t+1}+\gamma^2 r_{t+2}+\cdots+\gamma^{T-t-1}r_{T-1} $$第四步,把这些回报分配给对应的状态或状态—动作对。 如果采用首次访问规则,就只记录第一次出现时的回报;如果采用每次访问规则,就把每次出现都记下来。
第五步,对每个状态或状态—动作对,把收集到的回报样本求平均,作为价值估计。 例如,若状态 $s$ 一共收集到 $n$ 个样本回报
$$ G^{(1)}(s),G^{(2)}(s),\dots,G^{(n)}(s) $$那么可以估计为
$$ V_\pi(s)\approx \frac{1}{n}\sum_{i=1}^n G^{(i)}(s) $$这就是最基本的蒙特卡洛预测过程。
这套方法之所以合理,根本原因仍然是价值函数本身就是回报的期望。
例如,
$$ V_\pi(s)=\mathbb{E}_\pi[G_t\mid S_t=s] $$既然目标就是一个条件期望,那么只要我们在“状态为 $s$”这一条件下反复观察对应的回报样本,那么样本均值就会逐渐逼近这个期望值。也就是说,蒙特卡洛预测并没有改变价值函数的定义,只是把“直接算期望”换成了“用样本均值逼近期望”。
所以,和动态规划相比,变化的不是估计对象,而是估计方式:
- 动态规划:利用模型做精确期望更新;
- 蒙特卡洛预测:利用完整回合样本做经验均值估计。
一个简单的伪代码视角
如果用状态价值的首次访问版本来概括,它的思路可以写得很简洁:
- 初始化每个状态的价值估计 $V(s)$;
- 重复进行:
- 按策略 $\pi$ 生成一个完整回合;
- 对回合中每个状态的首次出现位置,计算其对应回报 $G_t$;
- 将 $G_t$ 加入该状态的样本集合;
- 用该状态样本集合的平均值更新 $V(s)$。
如果不想显式保存所有历史样本,也可以维护“累计和 / 访问次数”,即
$$ V(s)=\frac{\text{该状态回报累计和}}{\text{该状态样本数}} $$这样实现会更直接一些。
到这里,蒙特卡洛方法作为“预测”已经基本完整了。但强化学习真正更核心的问题不是仅仅评估一个固定策略,而是进一步寻找更好的策略。于是下一个自然问题就是:
如果价值函数已经可以通过蒙特卡洛方法从经验中估计出来,那么能不能再结合策略改进,把这种方法推进到控制问题上?
从预测到控制
前一节讨论的是蒙特卡洛预测。它解决的问题是:给定一个策略,如何用经验样本估计这个策略的价值函数。 但强化学习真正更核心的任务并不只是“评估一个已有策略”,而是进一步回答:
能否在估计价值的基础上,把策略本身也逐步改进,从而得到更优策略?
这一步,就是从 预测(Prediction) 走向 控制(Control)。
为什么只做预测还不够
如果只停留在预测阶段,那么我们最多只能得到这样一种结果:
- 对某个固定策略 $\pi$,已经知道了 $V_\pi(s)$ 或 $Q_\pi(s,a)$;
- 因而也知道这个策略在不同状态下大致能带来怎样的长期回报。
这当然有意义,因为它回答了“当前策略到底表现如何”。但这还没有直接解决最优控制问题。原因很简单:强化学习的目标不是给某个任意策略打分,而是找到更好的策略,最好是最优策略。
换句话说,预测只是中间步骤。它告诉我们当前策略的长期效果,却还没有主动利用这些信息去修改决策规则。
所以,在蒙特卡洛方法里,和动态规划中一样,也会自然出现同样的两步结构:
- 先评估当前策略;
- 再根据价值信息改进当前策略。
只不过,这里评估不再依赖环境模型,而是依赖采样得到的完整回合。
控制问题为什么更适合看动作价值
从“评估”走向“改进”时,有一个重点需要先说明:在控制问题里,通常更方便直接估计动作价值函数
$$ Q_\pi(s,a) $$而不仅仅是状态价值函数
$$ V_\pi(s) $$原因并不复杂。
状态价值 $V_\pi(s)$ 只能告诉我们:在状态 $s$ 下,如果继续按策略 $\pi$ 行动,长期平均回报是多少。但它没有直接分解出“在这个状态下,不同动作各自有多好”。
而动作价值 $Q_\pi(s,a)$ 则更直接。它明确给出了:在状态 $s$ 下,先采取动作 $a$,之后再按策略 $\pi$ 行动,长期期望回报是多少。这样一来,在同一个状态里比较不同动作就变得非常自然。只要比较
$$ Q_\pi(s,a_1),\;Q_\pi(s,a_2),\;\dots $$就能知道当前状态下哪个动作更值得选。
因此,一旦目标从“只是评估”变成“要改策略”,动作价值函数往往比状态价值函数更直接有用。
蒙特卡洛控制的基本思想
现在可以把思路写清楚了。
假设当前有一个策略 $\pi$。我们先按照这个策略采样多个完整回合,并用蒙特卡洛方法估计它的动作价值函数
$$ Q_\pi(s,a) $$接着,在每个状态 $s$ 下,根据当前得到的动作价值估计,选择价值更高的动作来构造一个新策略。例如,最直接的改法就是令新策略对 $Q_\pi(s,a)$ 做贪心选择:
$$ \pi'(s)=\arg\max_a Q_\pi(s,a) $$这一步和上一篇里讲动态规划时的策略改进思想是完全一致的。区别只在于:那时的 $Q_\pi(s,a)$ 可以通过模型计算;这里的 $Q_\pi(s,a)$ 则是通过经验采样估计得到的。
于是,蒙特卡洛控制的整体逻辑就变成:
- 用经验样本评估当前策略的动作价值;
- 再依据这些动作价值改进策略;
- 再用新策略继续采样、继续评估;
- 如此反复,逐步把策略推向更优。
从结构上看,这其实仍然是在做一种广义策略迭代(Generalized Policy Iteration, GPI):评估与改进交替进行,只不过其中的评估步骤从动态规划式的精确计算,换成了蒙特卡洛式的采样估计。
从逻辑上说,蒙特卡洛控制几乎是蒙特卡洛预测的直接延伸。
因为前面已经知道:
- 价值函数可以通过回报样本均值来估计;
- 价值函数一旦估计出来,就可以拿来比较动作优劣;
- 动作优劣一旦能比较,就可以做策略改进。
所以,蒙特卡洛控制并不是全新引入的一套思想,而只是把“采样估计价值”进一步接到“基于价值改进策略”上。这和动态规划中的“策略评估 + 策略改进”在逻辑上是平行的,只是实现手段不同。
也正因为如此,可以把两者的对应关系先简要对照一下:
- 动态规划控制:已知模型,交替进行精确策略评估与策略改进;
- 蒙特卡洛控制:未知模型,交替进行采样式策略评估与策略改进。
这也是为什么前面说,蒙特卡洛方法和动态规划并不是断裂的两部分。它们是在同一个强化学习框架下,对同一类问题给出的两种求解路径。
不过,一旦进入控制,就会立刻出现一个比预测更敏感的问题:
如果我们总是让策略直接对当前的 $Q$ 估计做完全贪心选择,那么某些动作可能很快就再也不会被尝试。这样一来,那些动作的价值估计就得不到新的样本,策略也可能过早固定在一个并不理想的方向上。
这说明控制问题里不能只讲“利用”,还必须讲“探索”。也就是说,蒙特卡洛控制并不是简单地“估计完价值就永远选最大”,它还要考虑如何保证不同状态—动作对能够被持续访问,从而让学习真正继续下去。
蒙特卡洛控制中的探索问题
上一节已经把蒙特卡洛控制的基本逻辑搭起来了:先用经验样本估计动作价值函数,再依据动作价值改进策略。这样看起来,事情似乎已经很直接:
- 按当前策略采样回合;
- 估计 $Q_\pi(s,a)$;
- 在每个状态下选择当前估计值最大的动作;
- 重复这一过程。
但如果真的这样做,很快就会遇到一个根本问题:策略改进不能只依赖当前估计结果做完全贪心选择,否则很多动作可能很早就不再被访问。
这就是蒙特卡洛控制里必须单独讨论“探索(Exploration)”的原因。
先看一个很简单的情形。假设在某个状态 $s$ 下,有两个动作 $a_1$ 和 $a_2$。一开始由于样本很少,我们可能得到这样的估计:
$$ Q(s,a_1)=1.2,\qquad Q(s,a_2)=0.8 $$如果此时立刻把策略改成完全贪心,那么以后每次到达状态 $s$ 时,都会只选 $a_1$,而不再尝试 $a_2$。
问题在于:当前这个估计未必可靠。它可能只是因为前几次采样存在随机波动,导致 $a_1$ 暂时看起来更好。若此后再也不尝试 $a_2$,那么 $Q(s,a_2)$ 就永远得不到新的样本修正,策略也就可能长期停留在一个错误判断上。
所以,在控制问题里,仅仅“利用当前已知最优动作”是不够的,还必须保证策略有能力继续尝试其他动作。否则学习会很快失去纠错能力。
这正是强化学习中经典的**探索与利用(Exploration vs. Exploitation)**矛盾,在蒙特卡洛控制里同样存在:
- 利用:优先选择当前看起来价值更高的动作;
- 探索:保留一定机会去尝试当前不一定最优、但可能被低估的动作。
如果只有利用,没有探索,那么学习可能过早收敛到次优策略。 如果只有探索,没有利用,那么策略又无法真正朝高价值方向稳定改进。
因此,蒙特卡洛控制要真正成立,不能只说“做贪心改进”,还必须回答:
怎样保证各个状态—动作对有机会被反复访问,从而让动作价值估计持续改进?
这个问题在蒙特卡洛控制中会显得特别突出,有一个直接原因:蒙特卡洛方法本身是基于完整回合样本的。
它不像动态规划那样可以靠模型直接枚举所有动作后果,也不像后面的时序差分方法那样可以一步一步在线更新。蒙特卡洛控制估计 $Q(s,a)$ 的方式,是等到某个状态—动作对真的在回合中出现过,然后利用该次出现后对应的完整回报作为样本。
这意味着:如果某个状态—动作对在采样过程中根本不再出现,那么它的价值估计就无法继续更新。
而一旦无法继续更新,后续策略改进也就失去了关于它的可靠信息。于是整个学习过程会变成一种自我强化:
- 因为当前估计不高,所以很少选它;
- 因为很少选它,所以得不到新样本;
- 因为没有新样本,所以估计值很难改变;
- 因而更不可能被选中。
这会导致学习停在一个局部判断上。
从这里可以引出蒙特卡洛控制中的一个关键要求:要让学习有效,相关的状态—动作对必须被持续访问。
更准确地说,如果我们想学到某个策略下的动作价值,或者进一步逼近最优动作价值,那么至少那些可能重要的状态—动作对,不能永久失去被采样的机会。否则就谈不上“从经验中逐步修正估计”。
这件事在理论表述里,通常会被说成某种“覆盖性”要求。直白地理解就是:
该看的动作,不能因为前期估计偶然偏低,就从此完全看不到。
因此,蒙特卡洛控制的难点不只是“如何根据样本算均值”,而是“如何在策略逐步变得更偏向高价值动作的同时,仍然保留足够探索”。
为了解决这个问题,经典蒙特卡洛控制通常会沿两条思路展开。
第一条思路是引入某种额外假设,保证所有状态—动作对都有机会作为起点被访问。
这会导向后面常见的 探索性出发(Exploring Starts) 设定。
第二条思路是不要求起点强行覆盖,而是直接把策略设计成“不是完全贪心”,例如让策略始终保留一小部分随机探索概率。
这会导向后面的 $\varepsilon$-soft 或 $\varepsilon$-greedy 类型策略。
这两种思路本质上都在解决同一个问题:如何让控制过程在改进策略的同时,不丢掉探索。
这里也能更清楚地看到,蒙特卡洛控制和动态规划控制之间有一个很重要的不同。
在动态规划里,因为环境模型已知,所以即使某个动作没有被真实执行过,我们仍然可以通过模型直接算出它的期望后果。因此,策略改进时不需要额外担心“这个动作最近没被采样过”。
而在蒙特卡洛控制里,动作价值来自样本,而不是来自模型。没有样本,就没有更新;没有更新,策略改进就可能建立在不充分的信息上。因此,探索问题在这里不是附属细节,而是方法能否成立的核心条件之一。
探索性出发与最基本的蒙特卡洛控制
既然蒙特卡洛控制的关键困难在于:如果没有额外机制,某些状态—动作对可能很快就不再被访问,那么最直接的思路就是先人为加入一个更强的条件,保证这些状态—动作对都有机会被看到。
这就是**探索性出发(Exploring Starts)**的设定。
所谓探索性出发,指的是:
每个回合开始时,初始状态—动作对 $(s,a)$ 都有非零概率被选作起点。
换句话说,不再只允许环境从某个固定初始状态开始,也不再要求起始动作必须由当前策略自然选出,而是额外假设:任意可能的状态—动作对,都有机会作为一条回合的开头。
这个设定的作用非常直接。因为如果每个 $(s,a)$ 都有非零概率作为起点出现,那么随着回合数不断增加,各个状态—动作对就不会永久失去被访问的机会。于是,蒙特卡洛控制在估计动作价值时,就不会因为某些动作长期采不到样本而彻底停住。
所以,探索性出发本质上是在用一个理想化假设,先把“探索覆盖性”这个最麻烦的问题压住。这样一来,我们就可以先专注于理解蒙特卡洛控制本身的主结构。
有了探索性出发之后,最基本的蒙特卡洛控制思路就可以写得很清楚。
我们希望学习最优动作价值函数,并逐步得到更优策略。因此更自然的对象是动作价值函数
$$ Q(s,a) $$而不是状态价值函数 $V(s)$。原因前面已经说过:控制问题最终要比较同一状态下不同动作的优劣,而这一点由 $Q(s,a)$ 更直接体现。
在探索性出发设定下,一轮最基本的蒙特卡洛控制可以理解为下面这个循环:
先给定一个初始策略 $\pi$,并初始化动作价值估计 $Q(s,a)$;
从某个具有非零概率的起始状态—动作对 $(s_0,a_0)$ 出发,按当前策略生成一个完整回合;
对这个回合中出现的各个状态—动作对,计算其对应回报;
用这些回报样本去更新 $Q(s,a)$;
对每个状态 $s$,根据当前的 $Q(s,a)$ 做贪心改进,得到新策略:
$$ \pi(s)=\arg\max_a Q(s,a) $$重复这一过程。
如果只看形式,它和上一篇中的策略迭代非常相似:
- 都有“评估”;
- 都有“改进”;
- 都在交替进行。
但它和动态规划的本质区别仍然很明确:
- 动态规划中的评估,是依赖模型的精确计算;
- 这里的评估,是依赖完整回合样本的蒙特卡洛估计。
所以,这可以看成一种基于采样的策略迭代。
这里有个细节很重要:在一次改进中使用的贪心策略,是针对当前估计出来的 $Q$,而不是某个已经精确已知的真实最优动作价值函数。
也就是说,策略的改进方向虽然是“朝当前看起来更优的动作走”,但这个“看起来更优”本身也在不断被样本修正。因此整个过程不是一步得到最优,而是:
- 用当前策略采样;
- 用样本更新 $Q$;
- 用更新后的 $Q$ 再改策略;
- 再继续采样、继续修正。
这就是一个持续迭代的过程。
探索性出发的最大意义在于,它把蒙特卡洛控制最核心的思想以最干净的方式展现出来了:
- 通过完整回合样本估计动作价值;
- 再根据动作价值做贪心策略改进;
- 在覆盖性得到保证时,这个过程可以持续推进。
因此,从教学逻辑上,它非常适合作为蒙特卡洛控制的第一个版本。
但它的局限也很明显:这个设定通常过于理想化。
在很多实际环境中,智能体并不能任意指定“从哪个状态—动作对开始一整个回合”。回合起点往往由环境决定,初始动作也只能在真实起点下由策略选出。因此,探索性出发更多是一种理论上的过渡工具,用来先说明控制机制,而不一定适合作为实际算法假设。
如果不再依赖探索性出发,那么还能怎样保证探索,同时让蒙特卡洛控制继续成立?
这就会走到更实际的方案:软策略(Soft Policy),尤其是后面最常见的 $\varepsilon$-greedy 形式。
不依赖探索性出发的蒙特卡洛控制
上一节中的探索性出发,解决方式很直接,但假设过强。真实问题通常不是“任意状态—动作对都能被拿来作为回合起点”,而是环境只给出有限的起始条件,智能体只能在这些条件下行动。因此,若想让蒙特卡洛控制更接近实际,就需要换一种思路:
不去强行规定回合从哪里开始,而是直接约束策略本身,让它始终保留一定探索能力。
这就是不依赖探索性出发的蒙特卡洛控制的基本方向。
回顾前面的困难:蒙特卡洛控制需要反复估计动作价值
$$ Q(s,a) $$而 $Q(s,a)$ 的估计依赖这个状态—动作对真的在经验中出现过。如果策略一旦变成完全贪心,那么某些动作可能很快就再也不会被选中,对应的 $Q(s,a)$ 也就不会再被修正。
探索性出发的做法,是从“回合起点”层面保证所有 $(s,a)$ 都有机会被访问。
现在放弃这个假设之后,更自然的替代方式就是:
不要求所有状态—动作对都能被强制拿来当起点,而是要求当前策略在到达某个状态时,不要把某些动作的选择概率压成 0。
只要一个动作在某状态下始终还有非零概率被选到,那么随着交互次数增加,它就仍然会不断获得样本。这样,动作价值估计就还能继续更新,策略也仍然保有纠偏能力。
所以,这里的核心思想变成了:
把探索内化到策略本身。
要做到这一点,就需要先引入**软策略(Soft Policy)**的概念。
如果一个策略在每个状态下,对所有动作都赋予正概率,也就是说对任意状态 $s$ 和任意动作 $a$,都有
$$ \pi(a\mid s) > 0 $$那么这样的策略就可以称为软策略。
它和贪心策略的差别很清楚:
- 贪心策略:只给当前价值最大的动作概率 1,其余动作概率 0;
- 软策略:即使某个动作当前不是最优,也仍然保留一个非零选择概率。
从控制角度看,软策略的意义就在于:它可以一边偏向当前更优动作,一边不彻底放弃其他动作。这正好对应探索与利用之间需要的平衡。
在软策略里,最常见的形式就是 $\varepsilon$-greedy。
它的思想和多臂老虎机中是同一类逻辑:
在大多数时候选择当前估计最好的动作,在少数时候随机探索其他动作。
如果在状态 $s$ 下,当前估计动作价值最大的动作为
$$ a^*=\arg\max_a Q(s,a) $$那么一个典型的 $\varepsilon$-greedy 策略可以写成:
- 以较大概率选择 $a^*$;
- 以较小概率在所有动作中随机选择。
若动作集合大小为 $|\mathcal{A}(s)|$,则可以写成
$$ \pi(a\mid s)= \begin{cases} 1-\varepsilon + \dfrac{\varepsilon}{|\mathcal{A}(s)|}, & a=a^* \\ \dfrac{\varepsilon}{|\mathcal{A}(s)|}, & a\neq a^* \end{cases} $$其中
$$ 0<\varepsilon<1 $$$\varepsilon$ 控制探索强度。$\varepsilon$ 越大,探索越强;$\varepsilon$ 越小,策略越接近纯贪心。
这个策略为什么特别适合蒙特卡洛控制?因为它同时满足两件事:
第一,它是偏向高价值动作的。当前估计更优的动作会被更频繁地选择,因此策略可以朝更优方向推进。
第二,它是持续探索的。任何动作都还有非零概率被选中,因此相关的状态—动作对不会因为一次早期误判而永久消失。
所以,$\varepsilon$-greedy 本质上是在用一种更现实的方式,替代探索性出发的覆盖性假设。
在这种设定下,蒙特卡洛控制的流程就可以表述为:
- 初始化动作价值函数 $Q(s,a)$;
- 初始化一个 $\varepsilon$-soft 策略;
- 按当前策略采样完整回合;
- 用回合中的回报样本更新 $Q(s,a)$;
- 根据当前 $Q(s,a)$,把策略改成相对于 $Q$ 的 $\varepsilon$-greedy 形式;
- 重复这一过程。
这里和探索性出发版本相比,最大的区别不在评估,而在改进步骤。
在探索性出发版本中,策略改进是完全贪心的:
$$ \pi(s)=\arg\max_a Q(s,a) $$而这里不是把策略改成纯贪心,而是改成相对于当前 $Q$ 的 $\varepsilon$-greedy 策略。也就是说,改进仍然存在,但这种改进是“带探索的改进”。
因此,这里的控制过程可以理解为:
一边用蒙特卡洛样本评估当前策略,一边把策略逐步推向更偏好高价值动作、但又不失去探索能力的形式。
这一步容易让人产生一个疑问:如果策略没有变成完全贪心,而只是变成 $\varepsilon$-greedy,那么它还算不算“改进”?
答案是算,但这里的改进对象需要说得更准确一些。
它不是在说“新策略一定已经是全局最优策略”,也不是说“新策略已经等于贪心最优策略”。它的意思是:
在所有满足一定探索要求的软策略中,新的 $\varepsilon$-greedy 策略会更偏向那些当前估计价值更高的动作,因此它比旧策略更优,或者至少不更差。
也就是说,改进是在“软策略约束”下进行的。
你不能要求一个始终保留探索的策略,表现得和完全无探索的最优贪心策略一模一样;但在“必须保留探索”的前提下,仍然可以让它尽量偏向高价值动作。这就是为什么很多教材会说,这里得到的是在 $\varepsilon$-soft 策略类中的改进。
这里,蒙特卡洛控制就已经出现了两种典型形式:
- 有探索性出发的版本:用理想化起点覆盖来保证探索;
- 无探索性出发的版本:用 $\varepsilon$-soft 或 $\varepsilon$-greedy 策略来保证探索。
从教学顺序上,后者通常更重要,因为它更接近真实强化学习中常见的做法。
为什么蒙特卡洛方法能够从经验中学习
到这里,其实已经可以回过头来回答一个贯穿全文的核心问题了:
为什么蒙特卡洛方法在不知道环境模型的情况下,仍然能够学习价值函数,甚至进一步学习策略?
这个问题的关键,不在于蒙特卡洛方法“绕开了价值函数的定义”,恰恰相反,它始终紧贴价值函数的定义本身。
先看状态价值函数:
$$ V_\pi(s)=\mathbb{E}_\pi[G_t\mid S_t=s] $$动作价值函数:
$$ Q_\pi(s,a)=\mathbb{E}_\pi[G_t\mid S_t=s,\;A_t=a] $$这两个定义都说明,价值函数本质上就是在某种条件下,未来回报的期望。
而蒙特卡洛方法所做的事情非常直接:既然目标是期望,那么就去实际采样这些回报;既然期望难以直接写出,就用反复观察到的样本均值去逼近它。
因此,蒙特卡洛方法能够从经验中学习,并不是因为它额外发明了某种新的价值概念,而是因为:
经验本身就携带了回报样本,而价值函数本来就是这些回报样本在统计意义上的平均结果。
换句话说,只要智能体能够不断与环境交互,积累越来越多的回合经验,那么这些经验里就会不断包含:
- 某个状态之后实际得到的回报样本;
- 某个状态—动作对之后实际得到的回报样本。
只要这些样本足够多,样本均值就会越来越接近真实的期望回报。于是,价值估计也就越来越接近真实价值。
这就是蒙特卡洛方法“从经验中学习”的根本机制:
不是从模型中算出来,而是从样本中统计出来。
现在再把它和上一篇的动态规划放在一起看,关系就会更清楚。
动态规划中,价值函数的更新依赖贝尔曼方程或贝尔曼最优方程。例如对固定策略,
$$ V_\pi(s)=\sum_a \pi(a\mid s)\sum_{s'}P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_\pi(s')\Big] $$它的核心是:利用环境模型,对所有可能后果做精确期望。
而蒙特卡洛方法中,虽然不直接写这个求和来更新,但目标并没有改变。它仍然在估计同一个 $V_\pi(s)$ 或 $Q_\pi(s,a)$,只是方式变成了:
- 不去枚举所有可能后果;
- 而是让环境实际运行若干次;
- 用那些真实发生的完整后果,来替代模型中的显式期望计算。
因此,两者的关系可以概括成一句话:
动态规划和蒙特卡洛方法,解决的是同一个价值估计 / 策略改进问题;不同之处只在于,一个通过模型算期望,一个通过样本估期望。
也正因为如此,蒙特卡洛方法并不是对动态规划的否定,而可以看成是在“模型未知”条件下,对动态规划思想的一种自然延伸。
到这里,可以总结出蒙特卡洛方法的主要优点。
第一,不需要环境模型。
这是它最直接的优势。在很多实际问题中,环境内部机制根本拿不到,或者虽然理论上存在,但显式建模成本很高。蒙特卡洛方法只依赖实际交互经验,因此适用范围比动态规划更现实。
第二,概念上直接。
它直接围绕价值函数定义本身展开:价值就是回报的期望,那么就去采样回报,再取平均。这个逻辑非常直观,不依赖复杂递推推导。
第三,估计目标是真实回报。
蒙特卡洛方法更新时使用的是完整实际回报 $G_t$,而不是某个中间近似目标。因此,它的目标在定义上是“无偏地指向真实回报”的,这一点在理解上很干净。
第四,适合分幕式任务。
对于有明确起点和终点的任务,回合天然可分,完整回报也天然可算,这使得蒙特卡洛方法特别适合作为第一类无模型方法来理解。
但它的局限也同样明显,而且这些局限并不是附属细节,而是会直接推动后续方法的出现。
第一,必须等到回合结束。
如果一个回合很长,那么一次价值更新就要等很久才能进行。若任务是持续性的、没有明确终点,经典蒙特卡洛方法就会变得不自然,甚至难以直接使用。
第二,样本方差通常较大。
因为它直接使用完整回报 $G_t$ 作为估计目标,而完整回报会累积整段未来随机性的影响,所以不同回合之间的波动可能很大。这会导致学习过程不够稳定,需要更多样本才能得到较平滑的估计。
第三,不能充分利用中间信息。
在一个很长的回合中,虽然前面很多步已经发生了,但蒙特卡洛方法通常还是要等到整条回合结束后,才能统一回头计算回报。也就是说,它对“已经观察到局部转移信息但尚未回合结束”的利用不够及时。
第四,控制中必须认真处理探索问题。
因为动作价值来自样本,而不是模型,所以如果某些状态—动作对缺少访问,估计就会停滞。为此就需要探索性出发、$\varepsilon$-soft、$\varepsilon$-greedy 等机制来保持覆盖性。
小结:从模型求解到经验学习
这一篇的主线,其实可以概括为一条很清晰的递进路径。
上一篇讨论动态规划时,核心前提是环境模型已知。因此,无论是策略评估还是策略改进,本质上都依赖对贝尔曼方程或贝尔曼最优方程右侧的精确期望计算。值迭代和策略迭代之所以能够直接写成明确的更新公式,正是因为状态转移概率和奖励函数都可以被直接查询。
但在更一般的强化学习问题中,这个前提往往并不成立。智能体通常无法直接拿到环境模型,只能通过与环境交互,逐步积累经验。于是,问题自然转化为:如果不能直接计算期望,那么能否用采样样本去近似期望,从而继续估计价值函数并改进策略。
蒙特卡洛方法给出的回答是肯定的。
它的核心思想并不复杂:价值函数本质上是回报的期望,而期望可以通过样本均值来逼近。因此,在策略固定时,可以通过完整回合中的实际回报样本来估计 $V_\pi(s)$ 或 $Q_\pi(s,a)$,这对应蒙特卡洛预测;在此基础上,再结合基于动作价值的策略改进,就得到蒙特卡洛控制。为了让控制过程真正可持续,还必须进一步处理探索问题,这就引出了探索性出发以及 $\varepsilon$-soft、$\varepsilon$-greedy 等机制。
因此,从整体上看,蒙特卡洛方法的意义可以概括为两点。
第一,它标志着强化学习开始真正摆脱“已知模型”的假设,进入无模型(Model-free)学习的框架。
第二,它第一次清楚展示了:即使没有环境模型,只要能够不断获得经验,智能体仍然可以通过统计这些经验中的回报,逐步学习价值并改进策略。
但与此同时,蒙特卡洛方法也留下了明显的限制。它通常要等回合结束之后才能更新,样本方差也往往较大,对持续性任务的处理也不够自然。也正因为这些限制,后续方法会继续沿着这条线往前推进:既保留“从经验中学习”的优点,又尽量减少“必须等完整回合”的代价。
这正是下一篇要进入的主题:时序差分(Temporal Difference, TD)方法。