第二章:马尔可夫决策过程——MDP的数学框架

各位同学,今天我们来聊聊强化学习里最核心的数学模型——马尔可夫决策过程,简称MDP。说实话,我刚开始接触强化学习时,觉得MDP就是个花架子,一堆数学符号。直到我在一个机器人导航项目里栽了跟头,才明白这东西有多重要。

MDP说白了,就是描述智能体与环境交互的数学语言。你想想看,智能体做决策,环境给反馈,这不就是我们每天都在经历的事情吗?

2.1 状态转移概率

先说说状态转移概率。这个概念其实很直观:你在某个状态s,采取某个动作a,环境会把你带到下一个状态s'。但这个转移不是确定的,是有概率的。

数学上写成:P(s' | s, a)。读作「在状态s执行动作a后,转移到状态s'的概率」。

我记得有一次做自动驾驶仿真,车辆在十字路口左转。状态是「车辆在路口中心」,动作是「左转」。但实际结果可能是「成功左转」、「被对向车逼停」、「撞上护栏」等多种可能。每种结果都有概率,这就是状态转移概率在起作用。

关键点:所有可能的下一个状态的概率之和必须等于1。即 ∑P(s' | s, a) = 1。

这里有个坑,我曾经踩过。在写代码时,如果状态空间很大,转移概率矩阵会非常稀疏。我建议用字典或稀疏矩阵来存储,别用全矩阵,否则内存会爆炸。

2.2 奖励函数

奖励函数R(s, a, s')定义了智能体在状态s执行动作a,到达状态s'后获得的即时奖励。说白了,就是告诉智能体「你刚才干得好不好」。

奖励函数的设计,嗯,这里水很深。我见过太多项目因为奖励函数设计不合理,导致智能体学出奇怪的行为。

我的经验:奖励函数要稀疏但明确。别给太多小奖励,否则智能体会钻空子。比如让机器人抓杯子,你给「接近杯子」奖励,它就会在杯子旁边来回晃悠,就是不抓。

奖励函数可以是确定性的,也可以是随机的。但实践中,我们通常用确定性的奖励函数,这样训练更稳定。

2.3 折扣因子

折扣因子γ,取值范围[0, 1]。它决定了智能体有多「短视」或多「远见」。

  • γ = 0:智能体只看眼前利益,不考虑未来
  • γ = 1:智能体无限远视,未来收益和当前收益一样重要
  • γ = 0.9~0.99:常用值,兼顾短期和长期

为什么会需要折扣因子?说白了,未来的收益有不确定性。你今天给我100块,和一年后给我100块,价值不一样。而且,折扣因子还能保证累计奖励收敛,不会无限大下去。

我个人习惯在游戏类任务中用γ=0.99,在机器人控制中用γ=0.95。前者需要长期规划,后者更注重即时反馈。

2.4 策略的定义

策略π(a|s)是智能体的行为准则。它告诉智能体:在状态s下,应该选择哪个动作a。

策略分两种:

  • 确定性策略:π(s) = a,给定状态,动作是确定的
  • 随机性策略:π(a|s) = P(a|s),给定状态,动作按概率分布选择

随机性策略在探索阶段特别有用。你想想看,如果智能体总是选同一个动作,它怎么知道其他动作会不会更好?

注意:策略和状态转移概率是两码事。策略是智能体自己控制的,状态转移概率是环境决定的。别搞混了。

2.5 价值函数

价值函数评估「某个状态有多好」或「某个状态-动作对有多好」。这是强化学习的核心概念。

主要有两种价值函数:

名称 符号 含义
状态价值函数 Vπ(s) 从状态s开始,按照策略π行动,能获得的期望累计奖励
动作价值函数 Qπ(s, a) 在状态s执行动作a,之后按照策略π行动,能获得的期望累计奖励

两者的关系很简单:Vπ(s) = ∑π(a|s) · Qπ(s, a)。说白了,状态价值就是所有动作价值的加权平均。

我记得在做一个棋类AI时,一开始只用了状态价值函数,结果智能体总是犹豫不决。后来改用Q函数,每个状态-动作对都有明确的价值,决策就果断多了。

2.6 MDP知识体系总览

下面我用一张图来总结MDP的核心逻辑。这张图我画了很多遍,每次讲课时都会拿出来用。

马尔可夫决策过程(MDP)核心框架 智能体 策略 π(a|s) 环境 状态转移 P(s'|s,a) 动作 a 状态 s' , 奖励 r MDP核心要素 状态空间 S 所有可能的状态 动作空间 A 所有可能的动作 转移概率 P P(s'|s,a) 奖励函数 R R(s,a,s') 折扣因子 γ ∈ [0,1]

这张图展示了MDP的核心循环:智能体根据策略选择动作,环境根据状态转移概率给出新状态和奖励,然后智能体再根据新状态做决策。如此循环往复。

2.7 贝尔曼方程

价值函数之间有个重要的关系,叫贝尔曼方程。它把当前状态的价值和未来状态的价值联系起来了。

对于状态价值函数:

V^π(s) = ∑ π(a|s) · ∑ P(s'|s,a) · [R(s,a,s') + γ · V^π(s')]

这个公式看着复杂,其实意思很简单:当前状态的价值 = 所有可能动作的价值加权平均,而每个动作的价值 = 即时奖励 + 未来状态的折扣价值。

我建议你把这个公式抄下来,贴墙上。因为后面所有的强化学习算法,Q-learning、SARSA、DQN,本质上都是在求解这个方程。

避坑指南:我曾经在实现贝尔曼方程时,忘了对动作概率求和,结果价值函数一直不收敛。调试了整整两天才发现问题。记住,策略是随机的,一定要对所有动作求期望。

2.8 最优价值函数与最优策略

我们最终的目标是找到最优策略π*,使得每个状态的价值都最大化。对应的价值函数叫最优价值函数V*和Q*。

最优策略有个重要性质:如果某个动作的Q值最大,那最优策略就会选择这个动作。这就是贪心策略的思想。

但这里有个矛盾:要找到最优策略,需要知道最优Q值;要知道最优Q值,又需要知道最优策略。怎么解?

答案是迭代。先猜一个策略,计算它的价值函数,然后改进策略,再计算,再改进...直到收敛。这就是策略迭代和价值迭代的思想,后面章节会详细讲。

嗯,MDP的内容就讲到这里。记住,MDP是强化学习的基石,后面的所有算法都建立在这个框架之上。把MDP搞懂了,后面的路就好走了。

可可精品资料库