2007 words
10 minutes
强化学习理论基础:MDP、贝尔曼方程与时序差分学习

马尔可夫决策过程(Markov Decision Process, MDP)#

马尔可夫性(Markov Property)#

马尔可夫性是指”未来仅取决于现在,而与过去无关”,数学表达式为:

P(St+1∣St,At,St−1,At−1,… )=P(St+1∣St,At)\mathbb{P}(S_{t+1} | S_t, A_t, S_{t-1}, A_{t-1}, \dots) = \mathbb{P}(S_{t+1} | S_t, A_t)

马尔可夫奖励过程(Markov Reward Process, MRP)#

最大累计回报(Return,GtG_t)#

回报是从 t 时刻开始,直到过程结束(或无限远)所获得的全部折扣奖励之和:

Gt=∑k=0∞γkRt+k+1G_t = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}

  • 如果 γ≈0,智能体变”近视”,只看重眼前利益。

  • 如果 γ≈1,智能体变”远见”,更看重未来的长期收益。

状态价值函数(State Value Function, V(s)V(s))#

价值函数用于衡量一个状态ss的”好坏”。它的定义是该状态下回报的期望值:

V(s)=E[Gt∣St=s](蒙特卡洛MonteCarlo)V(s) = \mathbb{E}[G_t | S_t = s](蒙特卡洛 Monte Carlo)

使用这个公式衡量一个状态的好坏,只能靠”硬算”未来的所有奖励之和。这需要有全局的视野,使得在数学和计算上都会遇到巨大的阻碍。后来人们使用 贝尔曼方程 去解决这一问题。

数学表达#

一个马尔可夫奖励过程通常由一个四元组⟨S,P,R,γ⟩\langle S, P, R, \gamma \rangle表示:

  • S (State space):有限的状态集合。

  • P (Transition probability matrix):状态转移概率矩阵。

  • R (Reward function):奖励函数,表示在状态 s 时能获得的即时奖励期望:

    Rs=E[Rt+1∣St=s]R_s = \mathbb{E}[R_{t+1} | S_t = s]

  • γ (Discount factor):折扣因子,γ∈[0,1],用于平衡当前奖励与未来长期奖励的权重。

马尔可夫决策过程数学表示#

策略(Policy, ππ)#

策略是智能体(Agent)的”行为指南”。它可以是确定性的,也可以是随机性的:

随机性策略:π(a∣s)=P(At=a∣St=s)π(a∣s)=P(A_t=a∣S_t=s),即在状态ss下选择动作aa的概率分布。

数学表达#

一个标准的马尔可夫决策过程通常由一个五元组 ⟨S,A,P,R,γ⟩\langle S, A, P, R, \gamma \rangle来表示:

  • S (State space):有限的状态集合。

  • A (Action space):有限的动作集合。

  • P (Transition probability matrix):状态转移概率,表示在状态 s 采取动作 a 后,转移到状态 s ′的概率:

    P(s′∣s,a)=P(St+1=s′∣St=s,At=a)P(s' | s, a) = \mathbb{P}(S_{t+1} = s' | S_t = s, A_t = a)

  • R (Reward function):奖励函数,表示在状态 s 采取动作 a 转移到 s′ 后获得的即时收益:

    R(s,a,s′)=E[Rt+1∣St=s,At=a,St+1=s′]R(s, a, s') = \mathbb{E}[R_{t+1} | S_t = s, A_t = a, S_{t+1} = s']

  • γ (Discount factor):折扣因子,γ∈[0,1]γ∈[0,1],用于平衡当前奖励与未来长期奖励的权重。

贝尔曼方程 (Bellman Equation)#

在没有贝尔曼方程之前,如果你想知道一个状态有多”好”,你需要模拟从这个状态开始直到任务结束的所有可能路径,然后把所有的奖励加起来。

这会产生两个致命的问题:

  • 计算量爆炸:随着步数增加、路径数量成指数级增长(类似棋类游戏)。

  • 无限循环:如果任务没有终点,你根本算不完未来的奖励。

它将一个需要”看透未来”的全局优化问题,转化为了一个”只需看眼前一步”的局部递归问题

数学表达#

Vπ(s)=∑a∈Aπ(a∣s)∑s′∈SP(s′∣s,a)[R(s,a,s′)+γVπ(s′)]V_{\pi}(s) = \sum_{a \in A} \pi(a|s) \sum_{s' \in S} P(s'|s, a) \left[ R(s, a, s') + \gamma V_{\pi}(s') \right]

现在计算一个状态的价值只需要知道下一个状态的价值是多少,而不需要进行全局视野。

时序差分学习(TD Learning)#

贝尔曼方程本质上是一个静态等式,它告诉我们,在理想状态下,当前状态的价值应该刚好等于期望的即时奖励加上未来的折现价值。

但是在实际的任务中,我们面临两个问题:

  1. 不知道期望:我们不知道环境的所有可能性,只能通过”采样”获得一个实际结果。

  2. 初始值不准:最开始我们的V(s)V(s)是随机初始化的,等式两边根本不相等。

为了解决这些问题,TD Learning引入了 学习率α 的概念,把等式变成了迭代公式:

V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)]V(S_t) \leftarrow V(S_t) + \alpha [R_{t+1} + \gamma V(S_{t+1}) - V(S_t)]

其中,将δt=Rt+1+γV(St+1)−V(St)δ_t=R_{t+1} + \gamma V(S_{t+1}) - V(S_t)称为 “TD Erro”

举例深入理解#

假设你正在为一个包含 5 个节点(服务器)的局部网络设计一个智能路由算法,目标是让数据包以 最低延迟 从起始节点 S1S_1 到达目标节点 SGoalS_{Goal}。

1. 场景建模#

  • 状态 (S):网络中的 5 个路由器节点{S1,S2,S3,S4,G}\{S_1, S_2, S_3, S_4, G\}。

  • 动作 (A):选择将数据包转发给哪一个邻居节点。

  • 奖励 (R):每经过一条链路,由于存在延迟,奖励为负值。

    • 普通链路:R = -1。

    • 拥堵链路:R = -10。

    • 到达目标GG:R = 0(过程结束)。

  • 不确定性 (P):网络是不稳定的,即使你选择了某条路径,由于链路抖动,数据包有 20% 的概率会被误传到另一个错误的节点。

2. 传统方式的困境:蒙特卡洛(Monte Carlo)穷举#

在传统思维中,我们要评估节点S1S_1 的价值,必须进行大量的”全路径模拟”。

计算过程:

  1. 采样路径 1:S1→S2→S4→GS_1 \to S_2 \to S_4 \to G,总回报Gt=(−1)+(−1)+(−1)=−3G_t = (-1) + (-1) + (-1) = -3。

  2. 采样路径 2(遇到拥堵和错误转向):S1→S3→S2→S4→GS_1 \to S_3 \to S_2 \to S_4 \to G,总回报Gt=(−10)+(−1)+(−1)+(−1)=−13G_t = (-10) + (-1) + (-1) + (-1) = -13。

  3. 计算平均值:经过 1000 次这样的随机模拟,求出S1S_1 的期望价值。

这种方式的致命缺点:

  • 计算极其冗余:如果S1S_1 和S3S_3 都经过S4S_4 到达GG,传统方式会分别在两者的采样中重复计算S4→GS_4 \to G 这段路程。

  • 无法应对 “无限循环”:如果网络中存在环路(如 S2↔S3S_2 \leftrightarrow S_3),采样可能会陷入死循环,导致永远算不出结果。

3. 贝尔曼方式:迭代传播(Value Iteration)#

贝尔曼方程通过”空间换时间”和”局部一致性”,将问题拆解。它不急着去跑通全路径,而是在每个节点建立一个”价值档案”。

第 0 轮(初始化):

所有节点都不知道自己离终点多远。

V0(S1)=0,V0(S2)=0,V0(S3)=0,V0(S4)=0,V0(G)=0V_0(S_1)=0, V_0(S_2)=0, V_0(S_3)=0, V_0(S_4)=0, V_0(G)=0

第 1 轮(发现终点):

只有紧挨着终点GG 的节点(假设是S4S_4)感知到了奖励。

根据贝尔曼更新规则:

V1(S4)←R(S4→G)+γV0(G)=−1+0=−1V_1(S_4) \leftarrow R(S_4 \to G) + \gamma V_0(G) = -1 + 0 = -1

此时,V1(S1)V_1(S_1)依然是00。

第 2 轮(价值回传):

连接S4S_4 的节点(比如S2S_2)开始更新。

V2(S2)←R(S2→S4)+γV1(S4)=−1+0.9×(−1)=−1.9V_2(S_2) \leftarrow R(S_2 \to S_4) + \gamma V_1(S_4) = -1 + 0.9 \times (-1) = -1.9

第kk 轮(全网收敛):

就像往水池里丢了一块石头(终点奖励),价值信息像涟漪一样,每经过一次迭代就向外扩散一圈。最终,S1S_1 会通过邻居的”价值档案”计算出自己的最优价值,而无需亲自跑完一万次模拟。

4. 时序差分学习方式:边走边修正#

在 TD 看来,它既不需要上帝视角,也不需要像蒙特卡洛那样等数据包真的到家。

初始状态: 你对网络的初次印象非常模糊(随机初始化),假设你认为 V(S1)=−5,V(S2)=−5。

动作发生: 数据包从 S1 出发,经过链路到达了 S2。

关键瞬间:

1. 观察到的现实: 这一段链路花了 1 毫秒延迟(R=−1)。

2. 新的发现: 当你到达 S2 时,你低头看了一眼 S2 的”价值档案”,上面写着 V(S2)=−5。

3. 产生冲突(TD Error):

  • 旧的看法: 站在 S1 时,你以为价值是 −5。

  • 新的依据: 走了一步后,你发现 S1 的价值应该是 这一步的开销(-1) + 下一站的预估(-5),也就是 −6。

  • 修正: 现实比你想象的更糟糕(误差为 −1)。你不会立刻把 V(S1) 改成 −6,而是用学习率 α(假设为 0.1)轻轻修正:

    V(S1)←−5+0.1×[−1+(−5)−(−5)]=−5.1V(S1)←−5+0.1×[−1+(−5)−(−5)]=−5.1

强化学习理论基础:MDP、贝尔曼方程与时序差分学习
https://blog.emilejones.top/posts/ai/强化学习理论基础/
Author
EmileJones
Published at
2026-02-10
License
CC BY-NC-SA 4.0
评论