Appearance
第四章 马尔可夫决策过程
作者:Nikhil Sharma
编辑:Saathvik Selvan、Wesley Zheng
部分内容改编自《人工智能:一种现代方法》(Artificial Intelligence: A Modern Approach)。
最后更新:2024 年 10 月
4.1 马尔可夫决策过程
马尔可夫决策过程(Markov Decision Process,MDP)由以下属性定义:
- 状态集合
。MDP 中的状态与传统搜索问题中的状态表示方式相同。 - 行动集合
。MDP 中的行动也与传统搜索问题中的行动表示方式相同。 - 初始状态。
- 一个或多个终止状态(可以没有)。
- 折扣因子
(可以没有,后面会介绍)。 - 转移函数
。由于行动可能是非确定性的,需要一种方式描述:从任意状态执行任意行动后,各种可能结果出现的概率。MDP 的转移函数就是这样一个概率函数,表示智能体从 执行 后到达 的概率。 - 奖励函数
。MDP 通常在每一步设置较小的“生存”奖励,以鼓励智能体继续存在;到达终止状态时给出较大的奖励。奖励可以为正,也可以为负,取决于结果是否对智能体有利。智能体的目标自然是在到达终止状态前获得尽可能大的奖励。
为一个场景构造 MDP,与为搜索问题构造状态空间图非常相似,但需要注意一些额外情况。考虑下面的赛车示例:

图 1:赛车示例。
有三个可能状态:
以及两个可能行动:
和状态空间图一样,三个状态分别表示为节点,边表示行动。overheated 是终止状态:赛车智能体到达该状态后无法再执行行动、获得奖励;它是 MDP 中没有出边的汇状态。
对于非确定性行动,同一个状态执行同一个行动时可能有多条边,分别通向不同后继状态。每条边不仅标注行动,还标注转移概率和相应奖励。它们总结如下:
转移函数
奖励函数
用离散时间步表示智能体随时间在不同 MDP 状态之间的移动。令
由于智能体的目标是在所有时间步中最大化奖励,因此可以把它的效用写成
和状态空间图一样,MDP 也可以展开为搜索树。在搜索树中,不确定性由 Q 状态(Q-state),也称行动状态(action state)表示,它们与 expectimax 中的机会节点基本相同。
这是合理的:Q 状态用概率表示环境会把智能体带到哪个状态的不确定性,expectimax 的机会节点用概率表示对手选择行动后会把智能体带到哪个状态的不确定性。从状态
下面是赛车 MDP 展开并截断到深度 2 的搜索树:

图 2:赛车搜索树。
绿色节点表示 Q 状态:行动已经从某个状态执行,但还没有解析为具体后继状态。需要注意,智能体在 Q 状态中花费的时间步为零;Q 状态只是为了表示和开发 MDP 算法而构造的概念。
4.1.1 有限视界与折扣
赛车 MDP 存在一个问题:我们没有限制赛车可以执行行动、收集奖励的时间步数量。按照当前定义,赛车可以在每个时间步永远选择 slow,安全而有效地获得无限奖励,同时不冒过热风险。
有限视界和折扣因子可以防止这种情况。
有限视界 MDP 很简单:它为智能体定义一个“寿命”,让智能体拥有固定数量
折扣因子更复杂,用于描述奖励价值随时间的指数衰减。给定折扣因子
此时,目标从最大化加性效用
变成最大化折扣效用
这个折扣效用函数类似公比为
通常选择
4.1.2 马尔可夫性
马尔可夫决策过程之所以称为“马尔可夫”,是因为它满足马尔可夫性质,也就是无记忆性质:给定现在,未来与过去条件独立。
直观地说,如果知道当前状态,那么知道过去不会为未来提供额外信息。设智能体在执行行动
马尔可夫性质把上式简化为
这就是“无记忆”的含义:时间
4.2 求解马尔可夫决策过程
在确定性、非对抗性搜索中,解决搜索问题意味着找到到达目标状态的最优计划。相反,解决 MDP 意味着找到一个最优策略
也就是把每个状态
一个显式策略
考虑下面的 MDP:
其中 Exit 只在状态

图 1:简单 MDP。
这个 MDP 有两个候选策略:

策略 1。

策略 2。
稍加分析就能确定策略 2 是最优的。按照策略执行,直到执行
| 初始状态 | 奖励 |
|---|---|
| 10 | |
| 1 | |
| 0.1 | |
| 0.1 | |
| 1 |
下面将使用 MDP 的 Bellman 方程,算法化地求解这类 MDP,以及更复杂的 MDP。
4.2.1 Bellman 方程
讨论 MDP 的 Bellman 方程之前,需要引入两个新的数学量:
- 状态
的最优价值 :从 开始、之后始终以最优方式行动的智能体,在剩余寿命中能够获得的效用期望值。文献中也经常把这个量记作 。 - Q 状态
的最优价值 :智能体从 开始,先执行 ,然后从此以后最优行动时所获得效用的期望值。
使用这两个量以及前面定义的 MDP 量,Bellman 方程为
再定义 Q 状态的最优价值,也就是通常所说的最优 Q 值:
于是 Bellman 方程可以写成更简单的形式:
Bellman 方程是一个动态规划方程:它利用问题的递归结构,把问题分解为更小的子问题。Q 值公式中的
体现了这种递归。这个量表示:从
从
从 Q 值公式出发,进一步观察
就是一个效用的加权和,每个效用的权重是它发生的概率。因此,它正是从 Q 状态
计算状态的最大期望效用,本质上与运行 expectimax 相同:先计算每个 Q 状态
Bellman 方程的另一个重要用途是作为最优性条件。也就是说,如果能为每个
4.3 价值迭代
现在有了检验 MDP 状态价值是否最优的框架,自然会问:如何实际计算这些最优值?答案是引入时间受限价值,这是有限视界的自然结果。
状态
价值迭代(value iteration)是一个动态规划算法。它使用逐步变长的时间视界计算时间受限价值,直到收敛,也就是对每个状态都有
算法如下:
对所有
,初始化 。这是自然的:时间限制为 0 时,智能体无法在终止前执行行动,也就无法获得奖励。重复以下更新规则,直到收敛:
在第
Bellman 方程与上面的更新规则看起来几乎相同,但二者并不相同:Bellman 方程给出最优性的条件,更新规则给出通过反复更新直到收敛来计算价值的方法。达到收敛后,对所有状态都有
为简洁起见,常把更新写成
证明这一点需要下面的一般不等式:
设在同一个状态
第一步不等式使用了前面的一般不等式;第二步不等式取了
既然已经证明 Bellman 更新是关于
再次考虑前面的赛车 MDP,这次引入折扣因子

图 1:赛车 MDP。
首先初始化所有
| cool | warm | overheated | |
|---|---|---|---|
| 0 | 0 | 0 |
第一轮更新中:
| cool | warm | overheated | |
|---|---|---|---|
| 0 | 0 | 0 | |
| 2 | 1 | 0 |
继续使用
| cool | warm | overheated | |
|---|---|---|---|
| 0 | 0 | 0 | |
| 2 | 1 | 0 | |
| 2.75 | 1.75 | 0 |
任何终止状态的
4.3.1 策略提取
解决 MDP 的最终目标,是确定最优策略。使用最优价值求出策略的过程称为策略提取(policy extraction)。直觉很简单:处于状态
这个行动就是把智能体带到 Q 值最大的 Q 状态的行动,因此最优策略为
从性能角度看,最好保存每个状态的最优 Q 值,这样只需执行一次 argmax 就能确定状态下的最优行动。如果只保存 argmax;这等价于执行一次深度为 1 的 expectimax。
4.3.2 Q 值迭代
使用价值迭代求最优策略时,先计算所有最优状态价值,再通过策略提取获得策略。前面已经看到,Q 值同样编码了最优策略的信息。
Q 值迭代是一个计算时间受限 Q 值的动态规划算法:
这个更新规则只是对价值迭代做了小修改。真正的区别是行动上的最大值位置发生了变化:处于普通状态时先选择行动再转移;处于 Q 状态时先转移,之后才选择新的行动。
得到每个状态—行动对的最优 Q 值后,只需选择 Q 值最高的行动,就能得到该状态下的策略。
4.4 策略迭代
价值迭代可能很慢。每轮迭代都要更新
此外,如果目标只是求出 MDP 的最优策略,价值迭代还会进行大量多余计算,因为通过策略提取计算的策略通常比状态价值本身更快收敛。
解决方法是策略迭代(policy iteration)。它保持价值迭代的最优性,同时提供显著的性能提升。策略迭代如下:
- 定义一个初始策略。初始策略可以任意选择,但它越接近最终最优策略,策略迭代收敛越快。
- 重复以下步骤,直到收敛:
用策略评估当前策略。 对策略
,策略评估意味着计算所有状态 的 ,其中 是从状态 开始并遵循 时获得的期望效用:设策略迭代第
轮的策略为 。因为每个状态只固定选择一个行动,所以不再需要最大值运算;上式会给出 个方程组成的方程组,求解该方程组即可得到每个 。也可以像价值迭代一样,用下面的更新规则反复计算
,直到收敛:不过,这种方法通常更慢。
策略改进。 当前策略评估完成后,用策略改进生成更好的策略。策略改进使用策略评估得到的状态价值执行策略提取:
如果
,算法收敛,并且可以断定
再次运行赛车示例,检查策略迭代是否得到与价值迭代相同的策略。仍使用折扣因子
初始策略选择“始终慢速”:
| cool | warm | overheated | |
|---|---|---|---|
| slow | slow | — |
终止状态没有出边,所以任何策略都不会为终止状态分配行动;可以忽略 overheated,并令所有终止状态的
对
解这个方程组,得到:
| cool | warm | overheated | |
|---|---|---|---|
| 2 | 2 | 0 |
使用这些价值执行策略提取:
第二轮策略迭代得到
这与
| cool | warm | |
|---|---|---|
| slow | slow | |
| fast | slow | |
| fast | slow |
这个例子展示了策略迭代的真正优势:只用两轮迭代,就得到了赛车 MDP 的最优策略。相比之下,对同一个 MDP 运行价值迭代时,前面计算两轮之后,价值还需要几轮才能收敛。

图 1:赛车示例。
4.5 本章小结
本章介绍了价值迭代、策略迭代、策略提取和策略评估。它们都使用 Bellman 方程,形式相近,但目的略有不同:
- 价值迭代: 通过不断更新直到收敛,计算状态的最优价值。
- 策略评估: 计算遵循某个特定策略时的状态价值。
- 策略提取: 给定状态价值函数,确定策略。如果状态价值是最优的,提取出的策略也最优。价值迭代之后用它从最优状态价值计算最优策略;策略迭代中也把它作为子程序,根据当前估计的状态价值计算最优策略。
- 策略迭代: 把策略评估和策略提取组合起来,迭代收敛到最优策略。它通常比价值迭代更快,因为策略一般比状态价值更快收敛。