【万字长文】上帝掷骰子的规则:马尔科夫链从数学原理到AI应用全解析

引言:被遗忘的记忆

在这个充满大数据的时代,我们习惯于认为“数据越多越好”,历史数据越长,预测越准确。然而,在 20 世纪初,一位俄国数学家安德烈·马尔科夫 (Andrey Markov) 却提出了一个截然不同的观点。

他设想了一种系统,在这个系统中,预测未来的状态,只需要知道现在的状态,而不需要知道过去是如何到达这个状态的。

这就是著名的无记忆性 (Memorylessness),或者叫马尔科夫性 (Markov Property)

这听起来似乎是一种对现实的过度简化,但正是这种简化,让我们得以驯服复杂的随机过程。从天气预报到股票波动,从语音识别到 Google 的 PageRank 算法,马尔科夫链 (Markov Chain) 几乎构建了现代随机过程的半壁江山。

本文将带你从最基础的定义出发,推导其数学本质,解析平稳分布的奥秘,并深入探讨其在 NLP、金融和搜索引擎中的硬核应用。


第一章:数学原理——醉汉的随机游走

1.1 定义与直觉

想象一个醉汉在街上走。每一步,他都有 50% 的概率向前走一步,50% 的概率向后退一步。
他在第 $n+1$ 步的位置,只取决于他在第 $n$ 步的位置,而与他在第 $n-1$ 步甚至更早的位置完全无关。

这就是最简单的离散时间马尔科夫链

数学定义
随机过程 ${X_0, X_1, X_2, \dots}$ 是一个马尔科夫链,如果它满足:
$$P(X_{n+1} = x | X_n = x_n, X_{n-1} = x_{n-1}, \dots, X_0 = x_0) = P(X_{n+1} = x | X_n = x_n)$$

这意味着:在已知“现在”的条件下,“未来”与“过去”是独立的。

1.2 关键要素:状态与转移

要描述一个马尔科夫链,我们需要三个核心要素:

  1. 状态空间 (State Space, $S$)
    系统所有可能处于的状态集合。

    • 例子:天气模型中,$S = {\text{晴}, \text{雨}, \text{阴}}$。
  2. 转移概率 (Transition Probability)
    从状态 $i$ 转移到状态 $j$ 的概率,记为 $p_{ij}$。
    $$p_{ij} = P(X_{n+1} = j | X_n = i)$$
    显然,对于任意状态 $i$,转移出去的概率之和必须为 1:$\sum_{j} p_{ij} = 1$。

  3. 转移矩阵 (Transition Matrix, $P$)
    这是马尔科夫链的“引擎”。我们将所有 $p_{ij}$ 排列成一个矩阵:
    $$
    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}
    $$

1.3 举个栗子:打工人的生活

假设一个打工人的生活只有三种状态:工作 (Work)摸鱼 (Slack)睡觉 (Sleep)

转移规则如下:

  • 工作时:50% 概率继续工作,30% 概率开始摸鱼,20% 概率去睡觉(太累了)。
  • 摸鱼时:40% 概率回去工作(良心发现),50% 概率继续摸鱼,10% 概率去睡觉。
  • 睡觉时:20% 概率醒来工作,10% 概率醒来摸鱼,70% 概率继续睡。

我们可以写出转移矩阵 $P$:
$$
\begin{matrix}
& W & Sl & Sp \
W & 0.5 & 0.3 & 0.2 \
Sl & 0.4 & 0.5 & 0.1 \
Sp & 0.2 & 0.1 & 0.7
\end{matrix}
$$


第二章:动态演化——未来的不确定性

有了矩阵,我们就可以预测未来。

2.1 n步转移概率

如果今天是“工作”状态,两天后是“睡觉”状态的概率是多少?
这涉及到Chapman-Kolmogorov 方程。但在矩阵代数中,这变得异常简单:

  • 1步转移矩阵:$P$
  • 2步转移矩阵:$P^{(2)} = P \times P = P^2$
  • n步转移矩阵:$P^{(n)} = P^n$

如果初始状态分布向量为 $\pi_0$(例如 $[1, 0, 0]$ 代表初始在工作),那么 $n$ 步之后的状态分布 $\pi_n$ 为:
$$\pi_n = \pi_0 \cdot P^n$$

这展示了马尔科夫链的强大之处:线性代数(矩阵乘法)可以完美模拟随机系统的演化。

2.2 终极归宿:平稳分布 (Stationary Distribution)

随着时间推移 ($n \to \infty$),系统会发生什么?
在很多情况下,系统会进入一个动态平衡状态。无论初始状态是什么,最终处于各个状态的概率会趋于稳定。

这个稳定的概率分布 $\pi$ 称为平稳分布,它满足:
$$\pi = \pi P$$

这是一个特征值问题!
这意味着 $\pi$ 是矩阵 $P$ 的左特征向量,且对应的特征值为 1。

并不是所有马尔科夫链都有平稳分布。它需要满足两个条件:

  1. 不可约性 (Irreducibility):从任意一个状态出发,都有可能到达任意其他状态(没有黑洞,也没有孤岛)。
  2. 非周期性 (Aperiodicity):系统不会陷入死板的循环(比如 1->2->1->2…)。

满足这两个条件的链被称为遍历的 (Ergodic)。对于打工人模型,只要算出 $\pi P = \pi$,我们就能知道长期来看,他到底有多少比例的时间在摸鱼。


第三章:进阶模型——HMM 与 MCMC

基础马尔科夫链假设状态是可见的。但在现实中,我们往往只能看到表象。

3.1 隐马尔科夫模型 (HMM)

假设你看不见天气(状态 $X$),只能看到朋友发的朋友圈是“去公园”、“看电影”还是“宅在家”(观测值 $O$)。
你需要通过观测值序列,反推背后的天气序列。

HMM 包含两个过程:

  1. 状态转移:天气随时间变化(马尔科夫链)。
  2. 发射概率:特定天气下产生特定行为的概率。

HMM 是语音识别(前深度学习时代)和生物信息学(DNA 序列分析)的基石。解决 HMM 主要有三个算法:

  • 前向算法:算概率。
  • Viterbi 算法:找最可能的隐藏路径(比如 Siri 听音辨字)。
  • Baum-Welch 算法:参数学习。

3.2 马尔科夫链蒙特卡洛 (MCMC)

这可能是物理学和贝叶斯统计中最重要的算法之一。
当我们面临一个极其复杂的高维分布(比如计算核反应堆的积分,或者贝叶斯推断中的后验概率),直接计算是不可能的。

MCMC 的思路是:设计一个马尔科夫链,让它的平稳分布恰好等于我们想要采样的目标分布。
然后,我们在计算机里模拟这个链的随机游走。等它收敛(Burn-in)之后,记录下的样本就服从目标分布。

著名的 Metropolis-Hastings 算法Gibbs 采样 就是构建这种马尔科夫链的具体方法。


第四章:皇冠上的明珠——Google PageRank

如果说马尔科夫链有什么价值万亿的应用,那一定是 Google 的 PageRank

4.1 互联网的图模型

在 Google 出现之前,搜索引擎主要靠关键词匹配。Larry Page 和 Sergey Brin 认为:网页的重要性不应由关键词决定,而应由有多少重要的网页链接到它来决定。

他们把整个互联网看作一张图:

  • 网页 = 状态
  • 超链接 = 转移路径

4.2 随机冲浪者模型 (Random Surfer)

想象一个用户在互联网上随机点击链接浏览。

  • 如果他在网页 A,且 A 有 3 个外链,那么他点击每个链接的概率是 $1/3$。
  • 他长期停留在某个网页的概率,就代表了这个网页的权重 (PageRank 值)

这本质上就是求互联网这个巨大马尔科夫链的平稳分布

4.3 修正:阻尼因子 (Damping Factor)

互联网图有一个大问题:死胡同 (Dangling Nodes)蜘蛛陷阱 (Spider Traps)

  • 如果一个网页没有外链,用户就卡死了。
  • 如果几个网页互相指,用户就出不去了。

为了解决这个问题(保证马尔科夫链的不可约性和非周期性),Google 引入了阻尼因子 $\alpha$(通常取 0.85)。

规则变为
用户有 85% 的概率通过链接跳转;
有 15% 的概率感到厌倦,随机瞬移到互联网上的任意一个网页。

修正后的 PageRank 公式:
$$PR(u) = \frac{1-\alpha}{N} + \alpha \sum_{v \in B(u)} \frac{PR(v)}{L(v)}$$
这保证了平稳分布一定存在且唯一。Google 就是通过不断迭代计算这个矩阵乘法,给全球网页排座次。


第五章:自然语言处理——从 N-gram 到 GPT

在 ChatGPT 出现之前,语言模型本质上就是高阶马尔科夫链。

5.1 N-gram 模型

语言生成的任务是:已知前面的词,预测下一个词。
$$P(w_n | w_{n-1}, w_{n-2}, \dots)$$

  • 1-gram (Unigram):词之间独立。说话像精神分裂。
  • 2-gram (Bigram):一阶马尔科夫链。下一个词只取决于前一个词。
    • 例子:看到 “New”,大概率接 “York”。
  • N-gram:$N-1$ 阶马尔科夫链。

5.2 局限性与突破

马尔科夫链最大的问题是长程依赖 (Long-term Dependency) 缺失。
受限于计算量,我们无法建立非常高阶的马尔科夫链。这导致传统模型“记不住”很长以前的主语。
后来的 RNN(循环神经网络)和 Transformer(注意力机制),本质上就是为了打破马尔科夫假设的限制,让模型能够拥有“无限”的记忆窗口。


第六章:Python 实战——预测股票市场趋势

为了让大家更有体感,我们用 Python 写一个简单的马尔科夫链来模拟市场状态。假设市场有三种状态:牛市 (Bull)熊市 (Bear)震荡 (Stagnant)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import numpy as np
import matplotlib.pyplot as plt

# 1. 定义状态空间
states = ["Bull", "Bear", "Stagnant"]
state_map = {0: "Bull", 1: "Bear", 2: "Stagnant"}

# 2. 定义转移矩阵 P
# rows: [Current State], cols: [Next State]
# Bull -> [0.9, 0.075, 0.025] (牛市大概率持续)
# Bear -> [0.15, 0.8, 0.05] (熊市也容易持续)
# Stag -> [0.25, 0.25, 0.5] (震荡市容易变盘)
P = np.array([
[0.9, 0.075, 0.025],
[0.15, 0.8, 0.05],
[0.25, 0.25, 0.5]
])

# 3. 模拟随机游走
def simulate_market(days=100, start_state=0):
current_state = start_state
history = [current_state]

for _ in range(days):
# np.random.choice 根据概率分布进行抽样
next_state = np.random.choice(
[0, 1, 2],
p=P[current_state]
)
history.append(next_state)
current_state = next_state

return history

# 4. 计算平稳分布 (Endgame)
# πP = π => π(P - I) = 0
# 这是一个线性方程组求解问题,也可以通过矩阵多次幂逼近
def get_stationary_distribution(P):
# 方法:计算 P 的 100 次方
P_n = np.linalg.matrix_power(P, 1000)
return P_n[0]

# --- 运行 ---
print("--- 转移矩阵 ---")
print(P)

print("\n--- 长期平稳分布 ---")
stationary = get_stationary_distribution(P)
for s, prob in zip(states, stationary):
print(f"{s}: {prob:.2%}")

# 绘图模拟路径
history = simulate_market(50, start_state=1) # 从熊市开始
plt.figure(figsize=(10, 4))
plt.plot(history, 'o-', alpha=0.6)
plt.yticks([0, 1, 2], states)
plt.title("Market Regime Switching Simulation (Markov Chain)")
plt.grid(True, axis='y')
plt.show()

代码解读
运行上述代码,你会发现,无论你从牛市还是熊市开始,经过足够长的时间(比如 1000 天),市场处于“牛市”的概率会稳定在 62.5% 左右(这是由我们设定的矩阵决定的)。这就是平稳分布的魔力——它揭示了系统的内在属性。

结语:简化的哲学

马尔科夫链之所以伟大,不在于它完美地描述了世界,而在于它提供了一种**“可计算的近似”**。

现实世界当然不是无记忆的。股票今天的价格受一年前政策的影响,你今天的心情受童年经历的影响。但是,如果我们试图考虑所有历史因素,模型将变得极其复杂而无法求解。

马尔科夫假设告诉我们:有时候,抓住“当下”,就足以把握“未来”。


【万字长文】上帝掷骰子的规则:马尔科夫链从数学原理到AI应用全解析
https://time-frame.cloud/2026/01/13/2026-01-13-comprehensive-guide-to-markov-chains/
Author
Sunfove
Posted on
January 13, 2026
Licensed under