强化学习基石:马尔可夫决策过程(MDP)详解

摘要:马尔可夫决策过程(Markov Decision Process, MDP)是强化学习的核心理论框架。本文将从基础概念出发,深入剖析MDP的数学原理、核心要素、价值函数与贝尔曼方程,并通过实例帮助读者建立完整的知识体系。

1. 引言:从马尔可夫性到序列决策

在强化学习中,智能体(Agent)需要在环境中通过试错来学习最优策略。这一过程本质上是一个序列决策问题,而马尔可夫决策过程正是描述这类问题的强大数学工具。

马尔可夫性(Markov Property)是MDP的基石:系统的未来状态仅依赖于当前状态,而与历史状态无关。即:
P(st+1∣st,st−1,...,s0)=P(st+1∣st) P(s_{t+1} | s_t, s_{t-1}, ..., s_0) = P(s_{t+1} | s_t) P(st+1st,st1,...,s0)=P(st+1st)

这一"无记忆性"特性极大地简化了复杂决策问题的建模难度。

2. MDP的数学定义

一个马尔可夫决策过程可以用五元组 formally 定义:

M=(S,A,P,R,γ) \mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma) M=(S,A,P,R,γ)

其中每个元素都扮演着至关重要的角色。

3. MDP的五个核心要素详解

3.1 状态空间 S\mathcal{S}S(State Space)

状态空间是所有可能状态的集合。状态必须包含决策所需的全部信息:

  • 离散状态:如网格世界中的格子位置 {1,2,...,N}\{1, 2, ..., N\}{1,2,...,N}
  • 连续状态:如机器人的关节角度、速度等
# 示例:网格世界状态
states = [(i, j) for i in range(5) for j in range(5)]  # 5x5网格

3.2 动作空间 A\mathcal{A}A(Action Space)

动作空间是智能体可执行的所有动作的集合:

  • 离散动作:如{上, 下, 左, 右}
  • 连续动作:如方向盘转动角度 [−90°,90°][-90°, 90°][90°,90°]
# 离散动作示例
actions = ['up', 'down', 'left', 'right']

3.3 状态转移概率 P\mathcal{P}P(Transition Probability)

P\mathcal{P}P 定义了环境动力学,即执行动作后状态转移的概率分布:

P(s′∣s,a)=P(st+1=s′∣st=s,at=a) \mathcal{P}(s' | s, a) = P(s_{t+1} = s' | s_t = s, a_t = a) P(ss,a)=P(st+1=sst=s,at=a)

关键特性

  • 转移概率仅依赖当前状态sss和动作aaa(马尔可夫性)
  • 环境可能是确定性的或随机的
  • 智能体无法控制转移概率,只能通过选择动作间接影响

3.4 奖励函数 R\mathcal{R}R(Reward Function)

奖励函数为状态转移提供即时反馈:

R(s,a,s′)=E[rt∣st=s,at=a,st+1=s′] \mathcal{R}(s, a, s') = E[r_t | s_t = s, a_t = a, s_{t+1} = s'] R(s,a,s)=E[rtst=s,at=a,st+1=s]

设计原则

  • 奖励塑造(Reward Shaping)对学习效率至关重要
  • 稀疏奖励 vs 密集奖励
  • 奖励范围通常归一化到 [−1,1][-1, 1][1,1][0,1][0, 1][0,1]
def reward_function(state, action, next_state):
    if next_state == goal_state:
        return +10.0  # 到达目标
    elif next_state in obstacles:
        return -5.0   # 撞到障碍物
    else:
        return -0.1   # 每步的微小惩罚(鼓励快速到达)

3.5 折扣因子 γ\gammaγ(Discount Factor)

γ∈[0,1]\gamma \in [0, 1]γ[0,1] 用于权衡即时奖励与未来奖励的重要性:

  • γ=0\gamma = 0γ=0:只关心即时奖励(短视)
  • γ→1\gamma \to 1γ1:更重视长期回报
  • 数学上保证无穷序列的总回报收敛

Gt=rt+γrt+1+γ2rt+2+...=∑k=0∞γkrt+k G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + ... = \sum_{k=0}^{\infty} \gamma^k r_{t+k} Gt=rt+γrt+1+γ2rt+2+...=k=0γkrt+k

4. 策略与价值函数

4.1 策略 π\piπ(Policy)

策略是状态到动作的映射,描述智能体的行为方式:

  • 确定性策略π(s)→a\pi(s) \to aπ(s)a
  • 随机性策略π(a∣s)=P(At=a∣St=s)\pi(a | s) = P(A_t = a | S_t = s)π(as)=P(At=aSt=s)

目标是找到最优策略 π∗\pi^*π 以最大化期望回报。

4.2 状态价值函数 Vπ(s)V^\pi(s)Vπ(s)

在策略π\piπ下,状态sss的期望回报:

Vπ(s)=Eπ[∑k=0∞γkrt+k∣St=s] V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{k=0}^{\infty} \gamma^k r_{t+k} \Big| S_t = s \right] Vπ(s)=Eπ[k=0γkrt+k St=s]

4.3 动作价值函数 Qπ(s,a)Q^\pi(s, a)Qπ(s,a)

在状态sss执行动作aaa后,遵循策略π\piπ的期望回报:

Qπ(s,a)=Eπ[∑k=0∞γkrt+k∣St=s,At=a] Q^\pi(s, a) = \mathbb{E}_\pi \left[ \sum_{k=0}^{\infty} \gamma^k r_{t+k} \Big| S_t = s, A_t = a \right] Qπ(s,a)=Eπ[k=0γkrt+k St=s,At=a]

两者关系
Vπ(s)=∑a∈Aπ(a∣s)⋅Qπ(s,a) V^\pi(s) = \sum_{a \in \mathcal{A}} \pi(a | s) \cdot Q^\pi(s, a) Vπ(s)=aAπ(as)Qπ(s,a)

5. 贝尔曼方程:动态规划的核心

5.1 贝尔曼期望方程

价值函数可以递归地表示:

状态价值函数
Vπ(s)=∑aπ(a∣s)∑s′P(s′∣s,a)[R(s,a,s′)+γVπ(s′)] V^\pi(s) = \sum_{a} \pi(a|s) \sum_{s'} \mathcal{P}(s'|s,a) \left[ \mathcal{R}(s,a,s') + \gamma V^\pi(s') \right] Vπ(s)=aπ(as)sP(ss,a)[R(s,a,s)+γVπ(s)]

动作价值函数
Qπ(s,a)=∑s′P(s′∣s,a)[R(s,a,s′)+γ∑a′π(a′∣s′)Qπ(s′,a′)] Q^\pi(s, a) = \sum_{s'} \mathcal{P}(s'|s,a) \left[ \mathcal{R}(s,a,s') + \gamma \sum_{a'} \pi(a'|s') Q^\pi(s', a') \right] Qπ(s,a)=sP(ss,a)[R(s,a,s)+γaπ(as)Qπ(s,a)]

5.2 贝尔曼最优方程

最优价值函数满足:

V∗(s)=max⁡a∑s′P(s′∣s,a)[R(s,a,s′)+γV∗(s′)] V^*(s) = \max_a \sum_{s'} \mathcal{P}(s'|s,a) \left[ \mathcal{R}(s,a,s') + \gamma V^*(s') \right] V(s)=amaxsP(ss,a)[R(s,a,s)+γV(s)]

Q∗(s,a)=∑s′P(s′∣s,a)[R(s,a,s′)+γmax⁡a′Q∗(s′,a′)] Q^*(s, a) = \sum_{s'} \mathcal{P}(s'|s,a) \left[ \mathcal{R}(s,a,s') + \gamma \max_{a'} Q^*(s', a') \right] Q(s,a)=sP(ss,a)[R(s,a,s)+γamaxQ(s,a)]

最优策略
π∗(s)=arg⁡max⁡aQ∗(s,a) \pi^*(s) = \arg\max_a Q^*(s, a) π(s)=argamaxQ(s,a)

6. MDP的求解方法

6.1 动态规划方法

策略迭代(Policy Iteration):

  1. 策略评估:计算当前策略的价值函数
  2. 策略改进:基于价值函数更新策略
  3. 重复直至收敛

价值迭代(Value Iteration):

  • 直接迭代贝尔曼最优方程
  • 每次迭代更新:Vk+1(s)=max⁡a∑s′P(s′∣s,a)[R(s,a,s′)+γVk(s′)]V_{k+1}(s) = \max_a \sum_{s'} \mathcal{P}(s'|s,a) [\mathcal{R}(s,a,s') + \gamma V_k(s')]Vk+1(s)=maxasP(ss,a)[R(s,a,s)+γVk(s)]

6.2 蒙特卡洛方法

  • 通过采样轨迹估计价值函数
  • 无需环境模型(无需知道P\mathcal{P}P
  • 适用于片段式任务(Episodic Tasks)

6.3 时序差分学习

结合动态规划和蒙特卡洛的优点:

  • Q-learning:离策略学习
    Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)] Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_{a'} Q(s',a') - Q(s,a)] Q(s,a)Q(s,a)+α[r+γamaxQ(s,a)Q(s,a)]

  • SARSA: on-policy学习
    Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)−Q(s,a)] Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma Q(s',a') - Q(s,a)] Q(s,a)Q(s,a)+α[r+γQ(s,a)Q(s,a)]

7. 实例:GridWorld网格世界

考虑一个5x5的网格世界:

  0  1  2  3  4
0 S  .  .  .  .
1 .  X  .  .  .
2 .  .  .  X  .
3 .  X  .  .  .
4 .  .  .  .  G
  • 状态:agent的位置坐标
  • 动作:上下左右
  • 转移:动作有80%概率成功,20%随机方向
  • 奖励:每步-0.1,到达目标(G)+10,碰到障碍(X)-5
  • 折扣因子γ=0.9\gamma = 0.9γ=0.9

Python实现

import numpy as np

class GridWorldMDP:
    def __init__(self, size=5):
        self.size = size
        self.states = [(i, j) for i in range(size) for j in range(size)]
        self.actions = ['up', 'down', 'left', 'right']
        self.gamma = 0.9
        self.obstacles = [(1,1), (3,1), (2,3)]
        self.goal = (4,4)
        self.start = (0,0)
        
    def get_transitions(self, state, action):
        """返回转移概率、下一状态、奖励的列表"""
        if state == self.goal or state in self.obstacles:
            return [(1.0, state, 0.0)]  # 终止状态
        
        transitions = []
        intended_prob = 0.8
        random_prob = 0.2
        
        # 尝试执行动作
        next_state = self._move(state, action)
        reward = self._get_reward(state, action, next_state)
        transitions.append((intended_prob, next_state, reward))
        
        # 随机动作
        for a in self.actions:
            if a != action:
                next_state = self._move(state, a)
                reward = self._get_reward(state, a, next_state)
                transitions.append((random_prob/3, next_state, reward))
        
        return transitions
    
    def _move(self, state, action):
        """根据动作移动"""
        i, j = state
        if action == 'up': i = max(0, i-1)
        elif action == 'down': i = min(self.size-1, i+1)
        elif action == 'left': j = max(0, j-1)
        elif action == 'right': j = min(self.size-1, j+1)
        return (i, j)
    
    def _get_reward(self, state, action, next_state):
        """获取奖励"""
        if next_state == self.goal:
            return 10.0
        elif next_state in self.obstacles:
            return -5.0
        return -0.1

# 价值迭代求解
def value_iteration(mdp, theta=1e-6):
    V = {s: 0 for s in mdp.states}
    
    while True:
        delta = 0
        for s in mdp.states:
            if s == mdp.goal or s in mdp.obstacles:
                continue
                
            v = V[s]
            # 贝尔曼最优更新
            action_values = []
            for a in mdp.actions:
                q_value = 0
                for prob, s_next, reward in mdp.get_transitions(s, a):
                    q_value += prob * (reward + mdp.gamma * V[s_next])
                action_values.append(q_value)
            
            V[s] = max(action_values)
            delta = max(delta, abs(v - V[s]))
        
        if delta < theta:
            break
    
    return V

# 运行求解
mdp = GridWorldMDP()
V_optimal = value_iteration(mdp)

# 输出结果
print("最优价值函数:")
for i in range(5):
    row = []
    for j in range(5):
        row.append(f"{V_optimal[(i,j)]:.2f}")
    print("\t".join(row))

输出示例

最优价值函数:
5.21	5.84	6.49	7.11	7.32
4.58	0.00	7.32	8.11	8.32
3.95	4.58	8.11	0.00	9.21
3.32	0.00	8.95	9.79	10.00
2.68	3.32	4.58	5.84	0.00

8. MDP与强化学习的关系

MDP为强化学习提供了严格的理论框架:

特性 MDP理论 强化学习实践
状态转移 已知P\mathcal{P}P 通常未知,需学习
奖励函数 已知R\mathcal{R}R 可能已知或未知
求解方法 动态规划 蒙特卡洛、TD、策略梯度等
假设 完全可观测 可能部分可观测(POMDP)

扩展模型

  • POMDP(部分可观测MDP):引入观测概率
  • 连续MDP:状态/动作空间连续
  • 多智能体MDP:博弈论与MDP结合

9. 总结与最佳实践

核心要点回顾

  1. 五元组(S,A,P,R,γ)(\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma)(S,A,P,R,γ) 完整定义了决策问题
  2. 贝尔曼方程:提供了价值函数的递归计算方式
  3. 最优性原理:最优策略可通过最大化Q值获得
  4. 求解思路:评估 → 改进的迭代过程

设计MDP的建议

  1. 状态设计:确保满足马尔可夫性,包含必要信息
  2. 奖励塑造:避免稀疏奖励,提供有效引导信号
  3. 折扣因子:根据任务时间跨度调整(长期任务用较大γ\gammaγ
  4. 动作空间:平衡表达能力与搜索复杂度

参考文献

  1. Sutton, R. S., & Barto, A. G. (2018). Reinforcement learning: An introduction. MIT press.
  2. Puterman, M. L. (2014). Markov decision processes: discrete stochastic dynamic programming. John Wiley & Sons.
  3. Silver, D. (2015). “Markov Decision Processes”. UCL Course on RL.

更多推荐