马尔可夫决策过程(Markov Decision Process, MDP)完全教程
> 本文系统介绍强化学习核心理论——马尔可夫决策过程。
目录
引言:为什么需要MDP?
核心概念解析
数学形式化定义
贝尔曼方程:MDP的灵魂
求解算法详解
实际应用案例
扩展与变体
总结与学习资源
引言:为什么需要MDP?
在现实世界中,许多决策问题具有以下特征:
序列性:当前决策影响未来状态
不确定性:环境响应存在随机性
延迟反馈:当前动作的后果可能很久后才显现
传统方法的问题:
静态优化(如线性规划)无法处理动态环境
启发式规则难以保证最优性
监督学习需要大量标注数据
MDP的优势:
提供一个统一的数学框架,将状态、动作、奖励、转移概率整合在一起,通过贝尔曼最优性原理求解序列决策问题。
核心概念解析
1. 马尔可夫性(Markov Property)
> "未来独立于过去,只依赖于现在"
数学表达:
\[P(S_{t+1} | S_t, A_t) = P(S_{t+1} | S_1, A_1, S_2, A_2, ..., S_t, A_t)
\]
直观理解:如果你知道现在的位置,你不需要知道你是怎么走到这里的。
例子:
✅ 满足马尔可夫性:棋类游戏中,当前棋盘局面包含所有信息
❌ 不满足马尔可夫性:扑克游戏中,你不知道对手手里有什么牌(需要记忆历史)
2. MDP的五个组成部分
要素
符号
类型
说明
状态空间
\(\mathcal{S}\)
集合
环境所有可能的状态
动作空间
\(\mathcal{A}\)
集合
智能体可执行的动作
状态转移函数
\(\mathcal{P}\)
概率分布
\(\mathcal{P}(s'|s,a) = P(S_{t+1}=s'|S_t=s, A_t=a)\)
奖励函数
\(\mathcal{R}\)
实数
\(\mathcal{R}(s,a,s')\) 或 \(\mathcal{R}(s,a)\)
折扣因子
\(\gamma\)
\([0,1]\)
未来奖励的现值系数
3. 策略(Policy)
策略 \(\pi\) 是从状态到动作的映射:
确定性策略:\(\pi: \mathcal{S} \rightarrow \mathcal{A}\),即 \(a = \pi(s)\)
随机性策略:\(\pi: \mathcal{S} \times \mathcal{A} \rightarrow [0,1]\),即 \(\pi(a|s) = P(A_t=a|S_t=s)\)
目标:找到最优策略 \(\pi^*\),使得累积奖励最大化。
数学形式化定义
3.1 完整定义
一个马尔可夫决策过程是一个五元组:
\[\mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)
\]
其中:
\(\mathcal{S} = \{s_1, s_2, ..., s_n\}\)(有限或可数无限)
\(\mathcal{A} = \{a_1, a_2, ..., a_m\}\)(每个状态可有不同动作集 \(\mathcal{A}(s)\))
\(\mathcal{P}: \mathcal{S} \times \mathcal{A} \times \mathcal{S} \rightarrow [0,1]\),满足 \(\sum_{s'\in\mathcal{S}} \mathcal{P}(s'|s,a) = 1\)
\(\mathcal{R}: \mathcal{S} \times \mathcal{A} \times \mathcal{S} \rightarrow \mathbb{R}\)(或简化为 \(\mathcal{R}: \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R}\))
\(\gamma \in [0,1]\)(通常取 0.9 或 0.99)
3.2 回报(Return)
从时刻 \(t\) 开始的累积折扣奖励:
\[G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ... = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}
\]
为什么需要折扣因子 \(\gamma\)?
数学上:保证无穷级数收敛(当 \(\gamma < 1\) 时)
经济上:现在的钱比未来的钱更值钱
直觉上:未来的不确定性更高,应该降低权重
贝尔曼方程:MDP的灵魂
4.1 状态值函数(State Value Function)
在状态 \(s\) 下遵循策略 \(\pi\) 的期望回报:
\[V^\pi(s) = \mathbb{E}_\pi[G_t | S_t = s]
\]
4.2 动作值函数(Action Value Function)
在状态 \(s\) 执行动作 \(a\) 后遵循策略 \(\pi\) 的期望回报:
\[Q^\pi(s,a) = \mathbb{E}_\pi[G_t | S_t = s, A_t = a]
\]
4.3 贝尔曼期望方程(Bellman Expectation Equation)
值函数的自洽方程:
状态值函数:
\[V^\pi(s) = \sum_{a \in \mathcal{A}} \pi(a|s) \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma V^\pi(s')]
\]
动作值函数:
\[Q^\pi(s,a) = \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma \sum_{a' \in \mathcal{A}} \pi(a'|s') Q^\pi(s',a')]
\]
两者关系:
\[V^\pi(s) = \sum_{a \in \mathcal{A}} \pi(a|s) Q^\pi(s,a)
\]
\[Q^\pi(s,a) = \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma V^\pi(s')]
\]
4.4 贝尔曼最优方程(Bellman Optimality Equation)
最优值函数的定义:
最优状态值函数:
\[V^*(s) = \max_{a \in \mathcal{A}} \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma V^*(s')]
\]
最优动作值函数:
\[Q^*(s,a) = \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma \max_{a' \in \mathcal{A}} Q^*(s',a')]
\]
关键洞察:最优策略可以通过贪婪地选择最优动作值函数得到:
\[\pi^*(a|s) = \begin{cases} 1 & \text{if } a = \arg\max_{a'} Q^*(s,a') \\ 0 & \text{otherwise} \end{cases}
\]
求解算法详解
5.1 动态规划方法(模型已知)
当转移概率 \(\mathcal{P}\) 和奖励函数 \(\mathcal{R}\) 已知时,可以使用动态规划。
5.1.1 策略迭代(Policy Iteration)
算法流程:
初始化:随机选择策略 \(\pi_0\)
策略评估(Policy Evaluation):
重复直到收敛:
\(V_{k+1}(s) = \sum_a \pi(a|s) \sum_{s'} P(s'|s,a)[R(s,a,s') + \gamma V_k(s')]\)
策略改进(Policy Improvement):
\(\pi'(s) = \arg\max_a \sum_{s'} P(s'|s,a)[R(s,a,s') + \gamma V(s')]\)
如果 \(\pi' \neq \pi\),令 \(\pi = \pi'\),返回步骤2;否则结束
收敛性:有限状态空间下,策略迭代保证收敛到最优策略。
5.1.2 值迭代(Value Iteration)
直接迭代更新最优值函数:
\[V_{k+1}(s) = \max_{a \in \mathcal{A}} \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma V_k(s')]
\]
停止条件:当 \(\max_s |V_{k+1}(s) - V_k(s)| < \theta\)(阈值)时停止。
提取策略:
\[\pi(s) = \arg\max_{a} \sum_{s' \in \mathcal{S}} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma V(s')]
\]
复杂度:每次迭代 \(O(|\mathcal{S}|^2 |\mathcal{A}|)\)。
5.2 无模型方法(模型未知)
当环境模型未知时,使用采样方法。
5.2.1 蒙特卡洛方法(Monte Carlo)
通过完整采样episode来估计值函数
适用于episode可自然终止的任务
更新公式:\(V(S_t) \leftarrow V(S_t) + \alpha [G_t - V(S_t)]\)
5.2.2 时序差分学习(Temporal Difference)
结合动态规划和蒙特卡洛的优点:
SARSA(On-policy):
\[Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t, A_t)]
\]
Q-learning(Off-policy):
\[Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha [R_{t+1} + \gamma \max_{a} Q(S_{t+1}, a) - Q(S_t, A_t)]
\]
实际应用案例
6.1 网格世界(Grid World)
场景:机器人在网格中寻找宝藏,避开陷阱。
MDP建模:
状态:网格坐标 \((i, j)\)
动作:上、下、左、右
转移:80% 按指令移动,10% 滑向左侧,10% 滑向右侧(随机性)
奖励:宝藏 +10,陷阱 -10,每步 -0.1(鼓励快速找到宝藏)
求解:使用值迭代计算每个格子的最优值,得到最优路径。
6.2 库存管理
场景:商店决定每周订购多少商品。
MDP建模:
状态:当前库存量
动作:订购数量
转移:需求随机(泊松分布)
奖励:销售收入 - 订购成本 - 库存持有成本
目标:找到最优订购策略,最大化长期利润。
6.3 机器人控制
场景:机械臂抓取物体。
挑战:连续状态空间(关节角度)和连续动作空间(扭矩)。
解决方案:使用函数近似(神经网络)估计值函数,即深度强化学习(DQN, PPO等)。
扩展与变体
7.1 部分可观察MDP(POMDP)
当状态不完全可见时,使用信念状态(belief state)\(b(s) = P(S_t=s | \text{历史观测})\)。
复杂度:POMDP求解是PSPACE完全的,远难于MDP。
7.2 连续MDP
状态和动作为连续变量(如机器人控制)。
方法:
离散化(简单但维度灾难)
函数近似(线性函数、神经网络)
策略梯度方法(直接优化策略参数)
7.3 多智能体MDP
多个智能体同时决策,分为:
合作:共同优化团队奖励
竞争:零和博弈
混合:一般和博弈
总结与学习资源
核心要点回顾
MDP五元组:\((\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)\)
马尔可夫性:未来只依赖于当前状态
贝尔曼方程:值函数的递归定义
求解方法:
模型已知:策略迭代、值迭代
模型未知:蒙特卡洛、时序差分、Q-learning
学习路径建议
初学者:
理解网格世界等简单例子
手动计算小型MDP的最优值函数
实现值迭代和策略迭代算法
进阶:
学习函数近似(线性逼近、神经网络)
研究策略梯度方法(REINFORCE, Actor-Critic)
探索模型预测控制(MPC)与MDP的结合
推荐资源
经典教材:
《Reinforcement Learning: An Introduction》(Sutton & Barto)- 强化学习圣经
《Algorithms for Reinforcement Learning》(Csaba Szepesvari)- 理论严谨
在线课程:
David Silver 的强化学习课程(YouTube/Bilibili)
Sergey Levine 的CS 285(UC Berkeley)
代码实践:
OpenAI Gym/Gymnasium:标准强化学习环境
Stable-Baselines3:实现好的强化学习算法库
附录:关键公式速查
概念
公式
回报
\(G_t = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}\)
贝尔曼期望方程
\(V^\pi(s) = \mathbb{E}_\pi[R_{t+1} + \gamma V^\pi(S_{t+1}) | S_t=s]\)
贝尔曼最优方程
\(V^*(s) = \max_a \mathbb{E}[R_{t+1} + \gamma V^*(S_{t+1}) | S_t=s, A_t=a]\)
值迭代更新
\(V_{k+1}(s) = \max_a \sum_{s'} P(s'|s,a)[R(s,a,s') + \gamma V_k(s')]\)
Q-learning更新
\(Q(s,a) \leftarrow Q(s,a) + \alpha[r + \gamma \max_{a'} Q(s',a') - Q(s,a)]\)