随机过程:带结构的随机性 本节摘要:许多 AI 系统涉及随时间演化的随机性——不是静态随机,而是每一步依赖前一步的结构化、序列化随机。语言模型逐 token 生成,每个 token 依赖前文,模型输出分布、采样、继续——这是随机过程。扩散模型逐步给图像加噪直到变纯静态,再反向逐步去噪直到新图像浮现:前向是马尔可夫链,反向是学习到的、倒着跑的马尔可夫链。强化学习智能体在环境里采取动作,每动作以某概率导向新状态,整个是马尔可夫决策过程。MCMC 采样(贝叶斯推断的骨干)构造一个平稳分布为你想采样的后验的马尔可夫链。
本节摘要:许多 AI 系统涉及随时间演化的随机性——不是静态随机,而是每一步依赖前一步的结构化、序列化随机。语言模型逐 token 生成,每个 token 依赖前文,模型输出分布、采样、继续——这是随机过程。扩散模型逐步给图像加噪直到变纯静态,再反向逐步去噪直到新图像浮现:前向是马尔可夫链,反向是学习到的、倒着跑的马尔可夫链。强化学习智能体在环境里采取动作,每动作以某概率导向新状态,整个是马尔可夫决策过程。MCMC 采样(贝叶斯推断的骨干)构造一个平稳分布为你想采样的后验的马尔可夫链。本节建立在四个基础概念上:随机游走(最简随机过程,位移按 √n 增长)、马尔可夫链(用转移矩阵的结构化随机,无记忆性)、Langevin 动力学(带噪声的梯度下降)、Metropolis-Hastings(从任意分布采样);并讲清扩散模型的前向过程是布朗运动、反向过程是学习到的逆马尔可夫链。读完本节,你明白调 LLM 温度就是在调马尔可夫链,训扩散模型就是在学逆转一个类布朗运动的过程。
对应原课程:Phase 01 · Lesson 22 ·
stochastic-processes(原英文phases/01-math-foundations/22-stochastic-processes/docs/en.md)。前置:第 6、7 节(概率、贝叶斯)。
阅读完本节,你应当能够:
许多 AI 系统涉及随时间演化的随机性。语言模型逐 token 生成,扩散模型逐步加噪再反向去噪,RL 智能体在环境里随机行动,MCMC 采样构造收敛到后验的马尔可夫链。这些都建立在四个基础概念上:随机游走、马尔可夫链、Langevin 动力学、Metropolis-Hastings。
从位置 0 开始,每步抛公平硬币:正面右移 +1,反面左移 −1。n 步后位置是 n 个随机 ±1 之和。期望位置是 0(游走无偏),但期望距原点距离按 √n 增长。
这反直觉:游走公平——任一方向无漂移——但随着时间它越走越远离起点。n 步后标准差是 √n:
步 0: 位置 = 0 步 100: 期望距原点 ~ 10(√100) 步 10000:期望距原点 ~ 100(√10000)
2D 时上、下、左、右等概率移动,同样的 √n 标度适用于距原点距离,路径描出分形样图案。
为何 √n? 每步 ±1 等概率,n 步后位置 S_n = X_1+...+X_n,每步方差 1 且独立,故 Var(S_n)=n,标准差 √n。由中心极限定理,S_n/√n 收敛到标准正态。这个 √n 标度在 ML 里无处不在:SGD 噪声按 1/√batch_size 缩放,嵌入维度按 √d 缩放——平方根是独立随机相加的签名。
与布朗运动的联系:取步长 1/√n、每单位时间 n 步的随机游走,n→∞ 时收敛到布朗运动 B(t)——一个连续时间过程,B(t) 服从均值 0、方差 t 的正态分布。布朗运动是扩散的数学基础,建模流体中粒子的随机抖动、股价波动,以及——关键地——扩散模型里的噪声过程。
赌徒破产:随机游走者从位置 k 出发,0 与 N 处有吸收壁,到达 N 前先到 0 的概率:公平游走 P(到达 N) = k/N——惊人地简洁优雅,联系到鞅论(公平随机游走是鞅,期望未来值=当前值)。
马尔可夫链是按固定概率在状态间转移的系统,关键性质是下一状态只依赖当前状态,不依赖历史:P(X_{t+1}=j | X_t=i, X_{t-1}=...) = P(X_{t+1}=j | X_t=i)。这是马尔可夫性质,意味着你能用转移矩阵 P 完整描述动力学:P[i][j] = 从状态 i 到状态 j 的概率,P 每行和为 1(你必须去某处)。
天气例:状态 晴(0)、雨(1)、阴(2) P = [[0.7,0.1,0.2], 晴:70%晴、10%雨、20%阴 [0.3,0.4,0.3], 雨:30%晴、40%雨、30%阴 [0.4,0.2,0.4]] 阴:40%晴、20%雨、40%阴
从任一状态开始,经多次转移后状态分布收敛到平稳分布 π,满足 π·P = π——这是 P 的特征值为 1 的左特征向量。天气链的平稳分布是 [0.55, 0.18, 0.27]:长期看 55% 时间晴,与起始状态无关。
算平稳分布两种方法:① 幂法——任一初始分布反复乘 P,足够多次后收敛;② 特征值法——找 P 的特征值为 1 的左特征向量(即 Pᵀ 特征值为 1 的右特征向量)。两法都要求链满足收敛条件。
收敛条件:马尔可夫链收敛到唯一平稳分布,若它不可约(每状态从其他每状态可达)且非周期(链不以固定周期循环)。ML 里遇到的大多数链都满足两者。
吸收态:一旦进入就永不离开的状态(P[i][i]=1)。吸收马尔可夫链建模有终态的过程——结束的游戏、流失的客户、命中文本结束 token 的序列。
混合时间:链「接近」平稳分布需多少步?形式上是与平稳的总变差距离降到阈值以下的步数。快混合=少步,慢混合=浪费算力。P 的**谱间隙**(1 减第二大特征值模)控制混合时间——间隙越大混合越快。
语言模型的 token 生成近似马尔可夫过程。给定当前上下文,模型输出下一 token 分布,温度控制锐度:P(token_i) = exp(logit_i/T)/Σexp(logit_j/T)。T=1 标准分布;T<1 更锐(更确定);T>1 更平(更随机);T→0 是 argmax(贪心)。top-k 截断到 k 个最高概率 token,top-p 截断到累积概率超过 p 的最小集合——两者都修改马尔可夫转移概率。
随机游走的连续时间极限。位置 B(t) 有三性质:① B(0)=0;② B(t)-B(s) 服从均值 0、方差 t-s 的正态(t>s);③ 非重叠区间上的增量独立。布朗运动连续但处处不可导——它在每个尺度上都抖动,路径在平面里分形维数 2。离散仿真中近似:B(t+dt) = B(t) + √dt·z,z~N(0,1),√dt 标度来自随机游走的中心极限定理。
梯度下降找函数最小,Langevin 动力学找正比于 exp(-U(x)/T) 的概率分布(U 是能量函数,T 是温度):
x_{t+1} = x_t − dt·∇U(x_t) + √(2T·dt)·z_t
两力作用:① 梯度力 −dt·∇U 推向低能(像梯度下降);② 随机力 √(2T·dt)·z 推向随机方向(探索)。T=0 时纯梯度下降;高温时近随机游走;合适温度时粒子探索能量地形、更多时间停在低能区。
与扩散模型的联系:扩散模型的前向过程 x_t = √(α_t)·x_{t-1} + √(1-α_t)·noise 是一个逐步把数据与噪声混合的马尔可夫链,足够多步后 x_T 是纯高斯噪声。反向过程(从噪声回到数据)也是马尔可夫链,但其转移概率由神经网络学习——网络学会预测每步加的噪声,再减去它。
有时你要从分布 p(x) 采样——你能算(到归一化常数)但无法直接采样。贝叶斯后验是经典例子:你知道「似然×先验」,但归一化常数(证据)难处理。Metropolis-Hastings 构造平稳分布为 p(x) 的马尔可夫链:① 从某位置 x 开始;② 从提议分布 Q(x'|x) 提议新位置 x';③ 算接受比 a = p(x')·Q(x|x') / (p(x)·Q(x'|x));④ 以概率 min(1,a) 接受 x',否则留 x;⑤ 重复。若 Q 对称(如 Q(x'|x)=Q(x|x')=N(x,σ²)),比值简化为 a = p(x')/p(x)——你只需概率比值,归一化常数相消。
链在温和条件下保证收敛到 p(x),但收敛可能慢:提议太小(随机游走)或太大(高拒绝)都慢,调提议是 MCMC 的艺术。为何有效:接受比保证细致平衡——在 x 且移到 x' 的概率等于在 x' 且移到 x 的概率,细致平衡蕴含 p(x) 是链的平稳分布,故足够多步后样本来自 p(x)。
实战要点:burn-in(丢弃前 N 个样本,链需时间从起点达平稳);thinning(每 k 个留一个降自相关);多链(从不同起点跑几条,若收敛到同分布则有收敛证据);接受率(d 维高斯提议最优约 23%,太高链几乎不动,太低全拒)。
| 过程 | AI 应用 |
|---|---|
| 随机游走 | RL 探索、Node2Vec 嵌入 |
| 马尔可夫链 | 文本生成、MCMC 采样 |
| 布朗运动 | 扩散模型(前向过程) |
| Langevin 动力学 | 基于分数的生成模型、SGLD |
| 马尔可夫决策过程 | 强化学习 |
| Metropolis-Hastings | 贝叶斯推断、后验采样 |
完整源码见 phases/01-math-foundations/22-stochastic-processes/code/。
def random_walk_1d(n_steps, seed=None): rng = np.random.RandomState(seed) steps = rng.choice([-1, 1], size=n_steps) return np.concatenate([[0], np.cumsum(steps)]) # 累积和 = 位置 def random_walk_2d(n_steps, seed=None): rng = np.random.RandomState(seed) directions = rng.choice(4, size=n_steps) dx = np.zeros(n_steps); dy = np.zeros(n_steps) dx[directions == 0] = 1; dx[directions == 1] = -1 dy[directions == 2] = 1; dy[directions == 3] = -1 return np.concatenate([[0], np.cumsum(dx)]), np.concatenate([[0], np.cumsum(dy)])
1D 游走存累积和,每步 ±1,n 步后位置是和,方差随 n 线性增长故标准差随 √n 增长。
class MarkovChain: def __init__(self, transition_matrix, state_names=None): self.P = np.array(transition_matrix, dtype=float) self.n_states = len(self.P) self.state_names = state_names or [str(i) for i in range(self.n_states)] def simulate(self, start_state, n_steps, seed=None): rng = np.random.RandomState(seed) states = [start_state]; current = start_state for _ in range(n_steps): current = rng.choice(self.n_states, p=self.P[current]) states.append(current) return states def stationary_distribution(self): eigenvalues, eigenvectors = np.linalg.eig(self.P.T) # 转置把左特征向量变右 idx = np.argmin(np.abs(eigenvalues - 1.0)) stationary = np.real(eigenvectors[:, idx]) return np.abs(stationary / stationary.sum()) # 归一化
平稳分布是 P 的特征值为 1 的左特征向量,通过算 Pᵀ 的特征向量找到(转置把左特征向量变右)。
def langevin_dynamics(grad_U, x0, dt, temperature, n_steps, seed=None): rng = np.random.RandomState(seed) x = np.array(x0, dtype=float); trajectory = [x.copy()] for _ in range(n_steps): noise = rng.randn(*x.shape) x = x - dt * grad_U(x) + np.sqrt(2 * temperature * dt) * noise trajectory.append(x.copy()) return np.array(trajectory)
梯度把 x 推向低能,噪声防卡住,平衡时样本分布正比于 exp(-U(x)/温度)。
def metropolis_hastings(target_log_prob, proposal_std, x0, n_samples, seed=None): rng = np.random.RandomState(seed) x = np.array(x0, dtype=float); samples = [x.copy()]; accepted = 0 for _ in range(n_samples - 1): x_proposed = x + rng.randn(*x.shape) * proposal_std log_ratio = target_log_prob(x_proposed) - target_log_prob(x) if np.log(rng.rand()) < log_ratio: x = x_proposed; accepted += 1 samples.append(x.copy()) return np.array(samples), accepted / (n_samples - 1)
算法提议新点、检查是否概率更高(或按比值概率接受)、重复,良好混合的接受率应约 23%~50%。
rng = np.random.RandomState(42) walk = np.cumsum(rng.choice([-1, 1], size=10000)) print(f"最终位置: {walk[-1]}, 期望距离: {np.sqrt(10000):.1f}, 实际: {abs(walk[-1])}") # 转移矩阵的幂法 P = np.array([[0.7,0.1,0.2],[0.3,0.4,0.3],[0.4,0.2,0.4]]) distribution = np.array([1.0, 0.0, 0.0]) for _ in range(100): distribution = distribution @ P # 反复乘 P 收敛到平稳分布
反复乘初始分布与 P,足够多次后收敛到平稳分布(不论起点)——这是找主左特征向量的幂法。
验证马尔可夫链收敛:算特征值,谱间隙 = 1 − 第二大特征值模,约 1/谱间隙 步混合。间隙 0.2 约 5 步混合,0.01 约 100 步——跑长模拟前总要检查,慢混合链浪费算力。
与真实框架的联系:PyTorch 扩散(Hugging Face diffusers 的 DDPMScheduler 实现前向与反向马尔可夫链);NumPyro/PyMC 用 MCMC(NUTS 采样器,Metropolis-Hastings 的改进)做贝叶斯推断;Gymnasium(RL)的环境 step 函数定义马尔可夫决策过程。
DDPM(Ho 等 2020)定义前向马尔可夫链 q(x_t|x_{t-1}) = N(x_t; √(1-β_t)·x_{t-1}, β_t·I)(β_t 是噪声调度),T 步后 x_T ≈ N(0,I);反向过程由预测噪声的神经网络参数化 p_θ(x_{t-1}|x_t) = N(x_{t-1}; μ_θ(x_t,t), σ_t²·I)——生成的每一步都是学到的马尔可夫链的一步,理解马尔可夫链就是理解扩散模型如何生成数据。SGLD(随机梯度 Langevin 动力学)把 mini-batch 梯度下降与 Langevin 噪声结合:用随机梯度估计代替全梯度并加校准噪声,随学习率衰减,SGLD 从优化过渡到采样——免费得到近似贝叶斯后验样本,这是从神经网络获取不确定性估计的最简方式之一。
贯穿所有这些联系的关键洞见:随机过程不只是理论工具,它们是现代 AI 系统内部的计算机制。调 LLM 温度时你在调马尔可夫链,训扩散模型时你在学逆转一个类布朗运动的过程,跑贝叶斯推断时你在构造收敛到后验的链。
outputs/prompt-stochastic-process-advisor.md:一份提示,帮你识别给定问题适用哪种随机过程框架(随机游走、马尔可夫链、Langevin、MCMC、扩散)。源码见 phases/01-math-foundations/22-stochastic-processes/code/。
U(x)=(x²−1)² 采样,低温样本聚一井,高温跨两井,找链在两井间混合的临界温度。π·P = π 是 P 特征值 1 的左特征向量,经幂法(反复乘 P)或 Pᵀ 特征分解求得。B(t+dt)=B(t)+√dt·z,是扩散模型前向过程的数学基础。exp(-U/T)。至此,第 2 章「数学基础」全部 22 节完成。从线性代数直觉、微积分、概率与贝叶斯,到信息论、降维、SVD、张量运算、数值稳定性、范数与距离、统计、采样、线性方程组、凸优化、复数、傅里叶变换、图论与随机过程——AI 的地板已经铺好。下一章,我们将带着这些数学工具,进入模型与算法的工程化实现。