【马尔可夫链】状态转移的数学之美,小白也能看懂!!
📚专为机器学习与统计学学习者打造的专业教程
🎯目标:严谨、透彻地解析马尔可夫链及其衍生模型的核心原理与数学本质
⚡马尔可夫链是什么?它是一类具备“无记忆性”的随机过程,是自然语言处理(如 N-gram)、强化学习(MDP)以及复杂概率采样(MCMC)的基石。
📅最后更新:2026年3月
📋 目录
- 1. 什么是马尔可夫链?
- 2. 核心数学原理
- 3. 马尔可夫链的核心性质
- 4. 扩展知识一:隐马尔可夫模型 (HMM)
- 5. 扩展知识二:马尔可夫链蒙特卡洛 (MCMC)
- 6. 实战代码示例
- 7. 常见问题解答
1. 什么是马尔可夫链?
1.1 定义与核心思想
马尔可夫链(Markov Chain)是概率论和数理统计中具有马尔可夫性质(Markov Property)的离散时间随机过程。
它的核心思想可以用一句话概括:“已知现在,未来与过去无关。”即在一个随机过程中,系统在时刻t + 1 t+1t+1的状态分布,只依赖于系统在时刻t tt的状态,而与时刻t tt之前的历史状态完全独立。这种特性被称为无记忆性(Memorylessness)。
1.2 它在计算机科学中的地位
马尔可夫链并非孤立的数学概念,它是许多现代复杂算法的底层逻辑:
| 技术领域 | 马尔可夫链的作用 |
|---|---|
| 强化学习 (RL) | 定义马尔可夫决策过程 (MDP),是智能体与环境交互的数学框架 |
| 自然语言处理 (NLP) | 传统的 N-gram 语言模型本质上是N − 1 N-1N−1阶的马尔可夫链 |
| 搜索引擎算法 | 谷歌的 PageRank 算法基于网页间的随机游走马尔可夫链平稳分布 |
| 贝叶斯推断 | MCMC 方法利用马尔可夫链的平稳分布来对复杂的高维后验概率进行采样 |
2. 核心数学原理
要严谨地描述马尔可夫链,我们需要定义两个核心要素:状态空间与转移概率。
2.1 状态空间 (State Space)
系统可能处于的所有状态的集合,记为S = { s 1 , s 2 , … , s n } S = \{s_1, s_2, \dots, s_n\}S={s1,s2,…,sn}。在离散时间马尔可夫链中,时间t tt是离散的(例如t = 0 , 1 , 2 , … t = 0, 1, 2, \dotst=0,1,2,…),在时刻t tt的状态记为随机变量X t X_tXt。
2.2 马尔可夫性质的数学表达
根据无记忆性,马尔可夫性质的严格条件概率公式表示为:
P ( X t + 1 = x t + 1 ∣ X t = x t , X t − 1 = x t − 1 , … , X 0 = x 0 ) = P ( X t + 1 = x t + 1 ∣ X t = x t ) P(X_{t+1} = x_{t+1} \mid X_t = x_t, X_{t-1} = x_{t-1}, \dots, X_0 = x_0) = P(X_{t+1} = x_{t+1} \mid X_t = x_t)P(Xt+1=xt+1∣Xt=xt,Xt−1=xt−1,…,X0=x0)=P(Xt+1=xt+1∣Xt=xt)
这个公式意味着,条件概率中位于X t X_tXt之前的所有历史信息( X t − 1 , … , X 0 ) (X_{t-1}, \dots, X_0)(Xt−1,…,X0)都可以被安全地丢弃。
2.3 转移概率矩阵 (Transition Matrix)
如果系统从状态i ii转移到状态j jj的概率不随时间变化(即时间齐次性),我们可以定义状态转移概率P i j P_{ij}Pij:
P i j = P ( X t + 1 = j ∣ X t = i ) P_{ij} = P(X_{t+1} = j \mid X_t = i)Pij=P(Xt+1=j∣Xt=i)
将所有状态之间的转移概率组合起来,就形成了一个n × n n \times nn×n的状态转移概率矩阵P PP:
P = [ P 11 P 12 … P 1 n P 21 P 22 … P 2 n ⋮ ⋮ ⋱ ⋮ P n 1 P n 2 … P n n ] P = \begin{bmatrix} P_{11} & P_{12} & \dots & P_{1n} \\ P_{21} & P_{22} & \dots & P_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ P_{n1} & P_{n2} & \dots & P_{nn} \end{bmatrix}P=P11P21⋮Pn1P12P22⋮Pn2……⋱…P1nP2n⋮Pnn
矩阵的重要约束:每行元素之和必须为 1,即∑ j = 1 n P i j = 1 \sum_{j=1}^n P_{ij} = 1∑j=1nPij=1,因为从任何状态出发,下一步必然转移到状态空间内的某一个状态。
3. 马尔可夫链的核心性质
研究马尔可夫链,通常是为了观察系统在长期运行后的稳定状态。以下是三个决定系统长期行为的关键性质:
3.1 不可约性 (Irreducibility)
如果从状态空间中的任意一个状态i ii出发,经过有限步数后,都有大于 0 的概率能够到达任意另一个状态j jj,则称该马尔可夫链是不可约的。简单来说,就是整个状态图是连通的,没有孤立的子集。
3.2 周期性 (Periodicity)
如果系统从状态i ii出发,只能在特定的步数(如 2 步、4 步、6 步)后返回状态i ii,则称状态i ii具有周期性(周期为 2)。如果马尔可夫链可能在任意步数后返回原状态(最大公约数为 1),则称其为非周期的 (Aperiodic)。在实际应用中,非周期性通常是我们期望的性质。
3.3 平稳分布 (Stationary Distribution)
这是马尔可夫链最重要的概念。设π \piπ是一个1 × n 1 \times n1×n的行向量,表示系统处于各个状态的概率分布。如果π \piπ满足以下方程:
π P = π \pi P = \piπP=π
且π \piπ中所有元素之和为 1,则称π \piπ为该马尔可夫链的平稳分布。
物理意义:一旦系统的状态概率达到了平稳分布π \piπ,无论再经过多少次状态转移矩阵P PP的演化,其宏观上的概率分布将不再发生改变。根据遍历定理 (Ergodic Theorem),一个不可约且非周期的有限状态马尔可夫链,必然存在唯一一个平稳分布。
4. 扩展知识一:隐马尔可夫模型 (HMM)
在基本的马尔可夫链中,状态是直接可见的。但如果系统的真实状态被隐藏起来,我们只能观察到由隐藏状态生成的“表象”,这就引入了隐马尔可夫模型(Hidden Markov Model, HMM)。
4.1 HMM 的双重随机过程
HMM 包含两条平行的线:
- 隐藏状态序列:符合马尔可夫性质(如:天气是晴天、雨天),这是未知的。
- 观测序列:每个隐藏状态会以一定概率生成一个可观测的值(如:某人今天穿了 T 恤、雨衣),这是已知的。
除了转移概率矩阵A AA,HMM 还需要一个发射概率矩阵B BB(表示处于某隐藏状态时生成某观测值的概率)。
4.2 HMM 的三大基本问题与算法
- 评估问题 (Evaluation):已知模型参数,求某个观测序列出现的概率。👉前向算法 (Forward Algorithm)
- 解码问题 (Decoding):已知模型参数和观测序列,求最有可能的隐藏状态序列。👉维特比算法 (Viterbi Algorithm),这是动态规划的经典应用。
- 学习问题 (Learning):已知观测序列,反推模型的转移概率和发射概率参数。👉鲍姆-韦尔奇算法 (Baum-Welch Algorithm),本质上是 EM 算法。
5. 扩展知识二:马尔可夫链蒙特卡洛 (MCMC)
5.1 为什么需要 MCMC?
在贝叶斯统计中,我们经常需要计算后验概率分布。但对于高维复杂问题,后验分布的分母(边缘似然积分)往往无法求出解析解,直接采样也极其困难。
5.2 MCMC 的逆向思维
MCMC (Markov Chain Monte Carlo)巧妙利用了马尔可夫链的“平稳分布”性质。
普通马尔可夫链的应用是:给定转移矩阵P PP,求系统的平稳分布π \piπ。
MCMC 的思路是:我们已知目标概率分布π \piπ(即难以采样的后验分布),我们需要人为构造一个转移概率矩阵P PP,使得这个马尔可夫链的平稳分布恰好等于π \piπ。
一旦构造成功,我们就让计算机在这个马尔可夫链上不断进行状态转移(随机游走)。经过足够长的“预热期(Burn-in)”后,系统达到平稳分布。此后记录下来的每一个状态,就可以被视为从复杂目标分布π \piπ中提取出的有效样本。
- 经典算法:Metropolis-Hastings 算法、吉布斯采样 (Gibbs Sampling)。
6. 实战代码示例
我们用 Python 演示如何计算一个简单的金融市场(牛市、熊市、横盘)马尔可夫链的平稳分布。
importnumpyasnp# 1. 定义状态转移矩阵 P# 状态顺序: [牛市(Bull), 熊市(Bear), 横盘(Stagnant)]# 矩阵含义: P[i][j] 表示从状态 i 转移到状态 j 的概率P=np.array([[0.6,0.2,0.2],# 牛市转牛市60%,转熊市20%,转横盘20%[0.1,0.6,0.3],# 熊市转牛市10%,转熊市60%,转横盘30%[0.2,0.3,0.5]# 横盘转牛市20%,转熊市30%,转横盘50%])# 2. 验证每一行概率之和是否为 1assertnp.allclose(np.sum(P,axis=1),1.0),"转移矩阵行和必须为1"# 3. 寻找平稳分布 π (方法:矩阵乘法迭代)# 初始状态分布,假设当前 100% 处于横盘状态pi=np.array([0.0,0.0,1.0])# 迭代求解 πP = πiterations=50for_inrange(iterations):pi=np.dot(pi,P)print("经过多次迭代后的概率分布 (近似平稳分布):")print(f"牛市:{pi[0]:.4f}, 熊市:{pi[1]:.4f}, 横盘:{pi[2]:.4f}")# 4. 严谨的数学求法:求解 P 的转置矩阵的特征值与特征向量eigenvalues,eigenvectors=np.linalg.eig(P.T)# 找到特征值为 1 对应的特征向量stationary_vector=eigenvectors[:,np.isclose(eigenvalues,1)]stationary_vector=stationary_vector[:,0].real# 归一化,使其概率和为 1pi_exact=stationary_vector/np.sum(stationary_vector)print("\n通过特征向量计算的精确平稳分布:")print(f"牛市:{pi_exact[0]:.4f}, 熊市:{pi_exact[1]:.4f}, 横盘:{pi_exact[2]:.4f}")7. 常见问题解答
Q1: 连续时间的马尔可夫模型叫什么?
答:马尔可夫过程 (Markov Process)。
严格来说,“链 (Chain)”特指状态离散且时间也离散的情况。如果时间是连续的(比如化学反应中粒子的衰变),则称为连续时间马尔可夫过程;如果状态空间也是连续的,通常涉及布朗运动等更复杂的随机微积分领域。
Q2: 如何计算马尔可夫链第n nn步的转移概率?
答:查普曼-科尔莫戈罗夫等式 (Chapman-Kolmogorov Equation)。
简而言之,经过n nn步的转移概率矩阵,正好等于一步转移概率矩阵P PP的n nn次方,即P n P^nPn。矩阵P n P^nPn中的元素( P n ) i j (P^n)_{ij}(Pn)ij就代表系统从状态i ii经过n nn步转移到状态j jj的概率。
Q3: 现在火热的 LLM (大语言模型) 和马尔可夫链有关吗?
答:有深刻渊源,但已大幅超越。
早期的语言模型(N-gram)是严谨的马尔可夫链,预测下一个词只看前面的N − 1 N-1N−1个词。现在的 Transformer 虽然在生成(Decoding)阶段是一种自回归过程(每次生成依赖之前所有的 token 输出,具备一定的马尔可夫性质),但其依赖的“上下文窗口”极大,不再局限于极短的有限记忆,因此可以捕获超长距离的语义依赖,远远超出了简单马尔可夫链的表达能力。
🎉祝你天天开心,我将更新更多有意思的内容,欢迎关注!
最后更新:2026年3月
作者:Echo
