模式识别与机器学习课程笔记(10):采样方法
概述
在模式识别与机器学习中,许多核心问题(如概率模型的参数估计、复杂分布的期望计算、生成式模型的数据生成)都依赖于采样技术。其本质是从给定的概率分布 p ( x ) p(x) p(x)中抽取一系列符合该分布的样本 { x 1 , x 2 , . . . , x N } \{x_1, x_2, ..., x_N\} {x1,x2,...,xN},通过样本的统计特性(如均值、方差)近似原分布的特性。
为什么需要采样?核心原因有两点:
- 复杂积分难以解析求解:当需要计算分布的期望 E p ( x ) [ f ( x ) ] = ∫ f ( x ) p ( x ) d x E_{p(x)}[f(x)] = \int f(x)p(x)dx Ep(x)[f(x)]=∫f(x)p(x)dx时,若 p ( x ) p(x) p(x)是高维或非标准分布(如混合高斯、贝叶斯模型的后验),积分无法通过公式直接计算,此时可通过采样得到样本 { x i } \{x_i\} {xi},用样本均值 1 N ∑ i = 1 N f ( x i ) \frac{1}{N}\sum_{i=1}^N f(x_i) N1∑i=1Nf(xi)近似期望。
- 生成符合分布的数据:生成式模型(如GAN、VAE)的目标是生成符合真实数据分布的数据,而采样是实现这一目标的直接手段。
采样方法的核心评价指标包括采样效率(单位时间内得到有效样本的数量)和样本质量(样本是否严格服从目标分布、是否存在相关性)。后续将从基础到进阶,逐步介绍常用采样方法。
基本采样方法
基本采样方法适用于目标分布 p ( x ) p(x) p(x)结构简单(如低维、有显式概率密度函数)的场景,核心是通过“确定性变换”或“接受-拒绝机制”从简单分布(如均匀分布、正态分布)推导目标分布的样本。
1. 均匀采样(Uniform Sampling)
均匀采样是最基础的采样方法,目标分布为均匀分布
U
(
a
,
b
)
U(a,b)
U(a,b),其概率密度函数为:
p
(
x
)
=
{
1
b
−
a
,
a
≤
x
≤
b
0
,
其他
p(x) = \begin{cases} \frac{1}{b-a}, & a \leq x \leq b \\ 0, & \text{其他} \end{cases}
p(x)={b−a1,0,a≤x≤b其他
采样步骤
- 调用计算机内置的伪随机数生成器,得到 [ 0 , 1 ] [0,1] [0,1]区间的均匀样本 u ∼ U ( 0 , 1 ) u \sim U(0,1) u∼U(0,1);
- 通过线性变换将 u u u映射到 [ a , b ] [a,b] [a,b]区间,即 x = a + ( b − a ) ⋅ u x = a + (b-a) \cdot u x=a+(b−a)⋅u;
- 重复步骤1-2,得到独立同分布的均匀样本 { x 1 , x 2 , . . . , x N } \{x_1, x_2, ..., x_N\} {x1,x2,...,xN}。
适用场景
- 作为其他采样方法的“基础组件”(如逆变换采样、拒绝采样均依赖均匀采样);
- 简单的随机实验设计(如随机打乱数据、划分训练/测试集)。
2. 逆变换采样(Inverse Transform Sampling)
逆变换采样适用于一维、且累积分布函数(CDF)存在显式逆函数的目标分布 p ( x ) p(x) p(x),核心是通过“CDF逆变换”将均匀样本映射为目标分布样本。
核心原理
对于目标分布
p
(
x
)
p(x)
p(x),其累积分布函数定义为:
F
X
(
x
)
=
P
(
X
≤
x
)
=
∫
−
∞
x
p
(
t
)
d
t
F_X(x) = P(X \leq x) = \int_{-\infty}^x p(t)dt
FX(x)=P(X≤x)=∫−∞xp(t)dt
若
F
X
(
x
)
F_X(x)
FX(x)严格单调递增且存在逆函数
F
X
−
1
(
y
)
F_X^{-1}(y)
FX−1(y),则对
u
∼
U
(
0
,
1
)
u \sim U(0,1)
u∼U(0,1),令
x
=
F
X
−
1
(
u
)
x = F_X^{-1}(u)
x=FX−1(u),可证明
x
∼
p
(
x
)
x \sim p(x)
x∼p(x)。
采样步骤
- 计算目标分布 p ( x ) p(x) p(x)的累积分布函数 F X ( x ) F_X(x) FX(x);
- 求解 F X ( x ) F_X(x) FX(x)的逆函数 F X − 1 ( y ) F_X^{-1}(y) FX−1(y)(需确保逆函数存在且可显式表达);
- 生成 u ∼ U ( 0 , 1 ) u \sim U(0,1) u∼U(0,1),通过 x = F X − 1 ( u ) x = F_X^{-1}(u) x=FX−1(u)得到目标样本 x x x;
- 重复步骤3,得到独立同分布的样本 { x 1 , x 2 , . . . , x N } \{x_1, x_2, ..., x_N\} {x1,x2,...,xN}。
示例:指数分布的逆变换采样
指数分布的概率密度函数为
p
(
x
)
=
λ
e
−
λ
x
p(x) = \lambda e^{-\lambda x}
p(x)=λe−λx(
x
≥
0
x \geq 0
x≥0,
λ
>
0
\lambda > 0
λ>0),其CDF为:
F
X
(
x
)
=
1
−
e
−
λ
x
F_X(x) = 1 - e^{-\lambda x}
FX(x)=1−e−λx
求解逆函数:令
y
=
1
−
e
−
λ
x
y = 1 - e^{-\lambda x}
y=1−e−λx,解得
x
=
−
1
λ
ln
(
1
−
y
)
x = -\frac{1}{\lambda} \ln(1 - y)
x=−λ1ln(1−y)。
由于
u
∼
U
(
0
,
1
)
u \sim U(0,1)
u∼U(0,1)与
1
−
u
∼
U
(
0
,
1
)
1-u \sim U(0,1)
1−u∼U(0,1)分布相同,可简化为
x
=
−
1
λ
ln
(
u
)
x = -\frac{1}{\lambda} \ln(u)
x=−λ1ln(u)。
局限性
- 仅适用于一维分布,高维分布的CDF难以计算且逆函数不存在;
- 部分分布的CDF或逆函数无法显式表达(如正态分布)。
3. 拒绝采样(Rejection Sampling)
拒绝采样解决了“逆变换采样无法处理CDF无显式逆函数”的问题,核心是通过建议分布 q ( x ) q(x) q(x)和接受概率筛选样本,最终得到目标分布 p ( x ) p(x) p(x)的样本。
核心原理
- 选择一个易于采样的建议分布 q ( x ) q(x) q(x)(如正态分布、均匀分布),并找到常数 M M M使得 M ⋅ q ( x ) ≥ p ( x ) M \cdot q(x) \geq p(x) M⋅q(x)≥p(x)对所有 x x x成立( M M M是 p ( x ) / q ( x ) p(x)/q(x) p(x)/q(x)的上界);
- 生成建议样本 x ∼ q ( x ) x \sim q(x) x∼q(x)和均匀样本 u ∼ U ( 0 , 1 ) u \sim U(0,1) u∼U(0,1);
- 若 u ≤ p ( x ) M ⋅ q ( x ) u \leq \frac{p(x)}{M \cdot q(x)} u≤M⋅q(x)p(x),则接受 x x x作为目标样本;否则拒绝 x x x,重复步骤2-3。
关键公式
- 接受概率: α ( x ) = p ( x ) M ⋅ q ( x ) \alpha(x) = \frac{p(x)}{M \cdot q(x)} α(x)=M⋅q(x)p(x)(需满足 α ( x ) ≤ 1 \alpha(x) \leq 1 α(x)≤1,由 M M M的定义保证);
- 采样效率:接受概率的期望 E q ( x ) [ α ( x ) ] = 1 M ∫ p ( x ) q ( x ) q ( x ) d x = 1 M E_{q(x)}[\alpha(x)] = \frac{1}{M} \int \frac{p(x)}{q(x)} q(x)dx = \frac{1}{M} Eq(x)[α(x)]=M1∫q(x)p(x)q(x)dx=M1,因此 M M M越小,采样效率越高。
采样步骤
- 确定目标分布 p ( x ) p(x) p(x)和建议分布 q ( x ) q(x) q(x),计算 M = max x p ( x ) q ( x ) M = \max_x \frac{p(x)}{q(x)} M=maxxq(x)p(x);
- 生成 x ∼ q ( x ) x \sim q(x) x∼q(x),生成 u ∼ U ( 0 , 1 ) u \sim U(0,1) u∼U(0,1);
- 判断:若 u ≤ p ( x ) M q ( x ) u \leq \frac{p(x)}{M q(x)} u≤Mq(x)p(x),接受 x x x;否则拒绝,返回步骤2;
- 重复步骤2-3,直到收集到足够数量的目标样本。
局限性
- 高维场景下, M M M会急剧增大,导致接受概率趋近于0,采样效率极低;
- 建议分布 q ( x ) q(x) q(x)的选择依赖经验,若 q ( x ) q(x) q(x)与 p ( x ) p(x) p(x)差异大,会大量拒绝样本。
蒙特卡洛马尔可夫链(MCMC)采样
当目标分布是高维、复杂分布(如贝叶斯模型的后验分布 p ( θ ∣ D ) p(\theta|D) p(θ∣D))时,基本采样方法失效,此时需要依赖蒙特卡洛马尔可夫链(MCMC)方法。其核心是构建一个马尔可夫链,使链的平稳分布恰好等于目标分布 p ( x ) p(x) p(x),通过运行链得到的样本近似目标分布。
1. MCMC的核心概念
(1)马尔可夫链(Markov Chain)
一个随机过程 { X 0 , X 1 , . . . , X t } \{X_0, X_1, ..., X_t\} {X0,X1,...,Xt}若满足马尔可夫性: P ( X t + 1 = x ′ ∣ X 0 , X 1 , . . . , X t ) = P ( X t + 1 = x ′ ∣ X t = x ) P(X_{t+1} = x' | X_0, X_1, ..., X_t) = P(X_{t+1} = x' | X_t = x) P(Xt+1=x′∣X0,X1,...,Xt)=P(Xt+1=x′∣Xt=x),则称为马尔可夫链。其中 P ( x ′ ∣ x ) P(x'|x) P(x′∣x)是转移概率矩阵(离散情况)或转移核(连续情况)。
(2)平稳分布(Stationary Distribution)
若存在分布 π ( x ) \pi(x) π(x),使得对任意 t t t,有 π ( x ′ ) = ∫ π ( x ) P ( x ′ ∣ x ) d x \pi(x') = \int \pi(x) P(x'|x) dx π(x′)=∫π(x)P(x′∣x)dx,则 π ( x ) \pi(x) π(x)是马尔可夫链的平稳分布。此时链达到“稳态”,后续样本均服从 π ( x ) \pi(x) π(x)。
(3)细致平稳条件(Detailed Balance Condition)
若转移核 P ( x ′ ∣ x ) P(x'|x) P(x′∣x)满足:对任意 x , x ′ x, x' x,x′,有 π ( x ) P ( x ′ ∣ x ) = π ( x ′ ) P ( x ∣ x ′ ) \pi(x) P(x'|x) = \pi(x') P(x|x') π(x)P(x′∣x)=π(x′)P(x∣x′),则 π ( x ) \pi(x) π(x)是马尔可夫链的平稳分布。这是MCMC构建转移核的核心依据——只要满足该条件,链的平稳分布就是目标分布。
2. Metropolis-Hastings(MH)算法
MH算法是最经典的MCMC方法,通过“ proposal + 接受-拒绝”机制构建满足细致平稳条件的转移核,适用于任意目标分布 p ( x ) p(x) p(x)。
核心思想
- 给定当前样本 x t x_t xt,从 proposal 分布 Q ( x ′ ∣ x t ) Q(x'|x_t) Q(x′∣xt)(如正态分布 N ( x t , σ 2 ) N(x_t, \sigma^2) N(xt,σ2))生成候选样本 x ′ x' x′;
- 计算接受概率 α ( x ′ ∣ x t ) \alpha(x'|x_t) α(x′∣xt),确保转移核满足细致平稳条件;
- 生成 u ∼ U ( 0 , 1 ) u \sim U(0,1) u∼U(0,1),若 u ≤ α ( x ′ ∣ x t ) u \leq \alpha(x'|x_t) u≤α(x′∣xt),则 x t + 1 = x ′ x_{t+1} = x' xt+1=x′;否则 x t + 1 = x t x_{t+1} = x_t xt+1=xt;
- 重复迭代,待链收敛后,收集的样本 { x T , x T + 1 , . . . } \{x_T, x_{T+1}, ...\} {xT,xT+1,...}( T T T为 burn-in 期)服从目标分布 p ( x ) p(x) p(x)。
关键公式
- 接受概率:
α ( x ′ ∣ x t ) = min ( 1 , p ( x ′ ) Q ( x t ∣ x ′ ) p ( x t ) Q ( x ′ ∣ x t ) ) \alpha(x'|x_t) = \min\left( 1, \frac{p(x') Q(x_t|x')}{p(x_t) Q(x'|x_t)} \right) α(x′∣xt)=min(1,p(xt)Q(x′∣xt)p(x′)Q(xt∣x′))
若 proposal 分布对称(即 Q ( x ′ ∣ x ) = Q ( x ∣ x ′ ) Q(x'|x) = Q(x|x') Q(x′∣x)=Q(x∣x′),如正态分布 N ( x , σ 2 ) N(x, \sigma^2) N(x,σ2)),则接受概率简化为:
α ( x ′ ∣ x t ) = min ( 1 , p ( x ′ ) p ( x t ) ) \alpha(x'|x_t) = \min\left( 1, \frac{p(x')}{p(x_t)} \right) α(x′∣xt)=min(1,p(xt)p(x′))
采样步骤
- 初始化:选择初始样本 x 0 x_0 x0,设置迭代次数 N N N和 burn-in 期 T T T;
- 迭代(
t
=
0
t=0
t=0到
N
−
1
N-1
N−1):
- 生成候选样本 x ′ ∼ Q ( x ′ ∣ x t ) x' \sim Q(x'|x_t) x′∼Q(x′∣xt);
- 计算接受概率 α = min ( 1 , p ( x ′ ) Q ( x t ∣ x ′ ) p ( x t ) Q ( x ′ ∣ x t ) ) \alpha = \min\left(1, \frac{p(x') Q(x_t|x')}{p(x_t) Q(x'|x_t)}\right) α=min(1,p(xt)Q(x′∣xt)p(x′)Q(xt∣x′));
- 生成 u ∼ U ( 0 , 1 ) u \sim U(0,1) u∼U(0,1),若 u ≤ α u \leq \alpha u≤α,则 x t + 1 = x ′ x_{t+1} = x' xt+1=x′;否则 x t + 1 = x t x_{t+1} = x_t xt+1=xt;
- 收敛判断:通过样本的“自相关性”(如相邻样本的相关系数趋近于0)判断链是否收敛;
- 收集样本:丢弃前 T T T个样本(burn-in 期,消除初始值影响),剩余样本 { x T , . . . , x N − 1 } \{x_T, ..., x_{N-1}\} {xT,...,xN−1}即为目标分布样本。
注意事项
- burn-in 期:链的初始样本受 x 0 x_0 x0影响,需丢弃前 T T T个样本以确保后续样本服从平稳分布;
- 自相关性:MCMC样本存在相关性(后一个样本依赖前一个),可通过“ thinning”(每隔 k k k个样本保留1个)降低相关性;
- proposal 分布选择: σ \sigma σ(如正态 proposal 的方差)过大易导致接受概率低,过小易导致链收敛慢,需通过经验调整。
Gibbs采样
Gibbs采样是MH算法的特例,适用于高维目标分布 p ( x 1 , x 2 , . . . , x d ) p(x_1, x_2, ..., x_d) p(x1,x2,...,xd),且每个变量的条件分布 p ( x i ∣ x − i ) p(x_i | x_{-i}) p(xi∣x−i)( x − i x_{-i} x−i表示除 x i x_i xi外的所有变量)易于采样的场景。其核心是通过“逐变量更新”避免接受-拒绝步骤,提升采样效率。
1. 核心原理
对于 d d d维目标分布 p ( x 1 , . . . , x d ) p(x_1, ..., x_d) p(x1,...,xd),Gibbs采样的转移核通过逐变量采样构建:
- 给定当前样本 x t = ( x t , 1 , x t , 2 , . . . , x t , d ) x_t = (x_{t,1}, x_{t,2}, ..., x_{t,d}) xt=(xt,1,xt,2,...,xt,d);
- 依次更新每个变量:
- 从 p ( x 1 ∣ x t , 2 , . . . , x t , d ) p(x_1 | x_{t,2}, ..., x_{t,d}) p(x1∣xt,2,...,xt,d)采样得到 x t + 1 , 1 x_{t+1,1} xt+1,1;
- 从 p ( x 2 ∣ x t + 1 , 1 , x t , 3 , . . . , x t , d ) p(x_2 | x_{t+1,1}, x_{t,3}, ..., x_{t,d}) p(x2∣xt+1,1,xt,3,...,xt,d)采样得到 x t + 1 , 2 x_{t+1,2} xt+1,2;
- …
- 从 p ( x d ∣ x t + 1 , 1 , . . . , x t + 1 , d − 1 ) p(x_d | x_{t+1,1}, ..., x_{t+1,d-1}) p(xd∣xt+1,1,...,xt+1,d−1)采样得到 x t + 1 , d x_{t+1,d} xt+1,d;
- 新样本 x t + 1 = ( x t + 1 , 1 , . . . , x t + 1 , d ) x_{t+1} = (x_{t+1,1}, ..., x_{t+1,d}) xt+1=(xt+1,1,...,xt+1,d)。
该转移核天然满足细致平稳条件,且接受概率为1(无需拒绝样本),因此采样效率远高于MH算法。
2. 采样步骤
- 初始化:
- 确定高维目标分布 p ( x 1 , x 2 , . . . , x d ) p(x_1, x_2, ..., x_d) p(x1,x2,...,xd);
- 验证每个变量的条件分布 p ( x i ∣ x − i ) p(x_i | x_{-i}) p(xi∣x−i)是否易于采样(如条件分布为正态、均匀、指数等);
- 选择初始样本 x 0 = ( x 0 , 1 , . . . , x 0 , d ) x_0 = (x_{0,1}, ..., x_{0,d}) x0=(x0,1,...,x0,d),设置迭代次数 N N N和 burn-in 期 T T T。
- 迭代(
t
=
0
t=0
t=0到
N
−
1
N-1
N−1):
- 更新 x 1 x_1 x1: x t + 1 , 1 ∼ p ( x 1 ∣ x t , 2 , x t , 3 , . . . , x t , d ) x_{t+1,1} \sim p(x_1 | x_{t,2}, x_{t,3}, ..., x_{t,d}) xt+1,1∼p(x1∣xt,2,xt,3,...,xt,d);
- 更新 x 2 x_2 x2: x t + 1 , 2 ∼ p ( x 2 ∣ x t + 1 , 1 , x t , 3 , . . . , x t , d ) x_{t+1,2} \sim p(x_2 | x_{t+1,1}, x_{t,3}, ..., x_{t,d}) xt+1,2∼p(x2∣xt+1,1,xt,3,...,xt,d);
- …
- 更新 x d x_d xd: x t + 1 , d ∼ p ( x d ∣ x t + 1 , 1 , x t + 1 , 2 , . . . , x t + 1 , d − 1 ) x_{t+1,d} \sim p(x_d | x_{t+1,1}, x_{t+1,2}, ..., x_{t+1,d-1}) xt+1,d∼p(xd∣xt+1,1,xt+1,2,...,xt+1,d−1);
- 令 x t + 1 = ( x t + 1 , 1 , . . . , x t + 1 , d ) x_{t+1} = (x_{t+1,1}, ..., x_{t+1,d}) xt+1=(xt+1,1,...,xt+1,d)。
- 收敛判断:通过单变量样本的自相关性或边际分布的稳定性(如样本均值不再变化)判断收敛。
- 收集样本:丢弃前 T T T个样本,剩余样本 { x T , . . . , x N − 1 } \{x_T, ..., x_{N-1}\} {xT,...,xN−1}服从目标分布 p ( x 1 , . . . , x d ) p(x_1, ..., x_d) p(x1,...,xd)。
3. 示例:二维正态分布的Gibbs采样
假设目标分布为二维正态分布
p
(
x
1
,
x
2
)
∼
N
(
μ
,
Σ
)
p(x_1, x_2) \sim \mathcal{N}(\mu, \Sigma)
p(x1,x2)∼N(μ,Σ),其中:
μ
=
(
μ
1
μ
2
)
,
Σ
=
(
σ
11
σ
12
σ
21
σ
22
)
\mu = \begin{pmatrix} \mu_1 \\ \mu_2 \end{pmatrix}, \quad \Sigma = \begin{pmatrix} \sigma_{11} & \sigma_{12} \\ \sigma_{21} & \sigma_{22} \end{pmatrix}
μ=(μ1μ2),Σ=(σ11σ21σ12σ22)
根据正态分布的性质,条件分布为:
- p ( x 1 ∣ x 2 ) ∼ N ( μ 1 + σ 12 σ 22 ( x 2 − μ 2 ) , σ 11 − σ 12 2 σ 22 ) p(x_1 | x_2) \sim \mathcal{N}\left( \mu_1 + \frac{\sigma_{12}}{\sigma_{22}}(x_2 - \mu_2), \sigma_{11} - \frac{\sigma_{12}^2}{\sigma_{22}} \right) p(x1∣x2)∼N(μ1+σ22σ12(x2−μ2),σ11−σ22σ122);
- p ( x 2 ∣ x 1 ) ∼ N ( μ 2 + σ 21 σ 11 ( x 1 − μ 1 ) , σ 22 − σ 21 2 σ 11 ) p(x_2 | x_1) \sim \mathcal{N}\left( \mu_2 + \frac{\sigma_{21}}{\sigma_{11}}(x_1 - \mu_1), \sigma_{22} - \frac{\sigma_{21}^2}{\sigma_{11}} \right) p(x2∣x1)∼N(μ2+σ11σ21(x1−μ1),σ22−σ11σ212)。
采样过程
- 初始化 x 0 , 1 = μ 1 x_{0,1} = \mu_1 x0,1=μ1, x 0 , 2 = μ 2 x_{0,2} = \mu_2 x0,2=μ2;
- 迭代
t
=
0
t=0
t=0:
- 从 p ( x 1 ∣ x 0 , 2 ) p(x_1 | x_{0,2}) p(x1∣x0,2)采样得到 x 1 , 1 x_{1,1} x1,1;
- 从 p ( x 2 ∣ x 1 , 1 ) p(x_2 | x_{1,1}) p(x2∣x1,1)采样得到 x 1 , 2 x_{1,2} x1,2;
- 重复迭代,待收敛后收集样本。
4. 优缺点
优点
- 无需接受-拒绝步骤,采样效率高;
- 高维场景下,仅需处理低维条件分布,计算量小;
- 实现简单,无需调整proposal分布参数。
缺点
- 依赖条件分布的可采样性,若 p ( x i ∣ x − i ) p(x_i | x_{-i}) p(xi∣x−i)复杂,则无法使用;
- 变量间相关性强时,链收敛速度慢(需更多迭代才能达到平稳分布)。
总结
本文从“简单到复杂”梳理了模式识别与机器学习中的核心采样方法,各方法的适用场景对比如下:
| 采样方法 | 适用场景 | 核心优势 | 核心局限 |
|---|---|---|---|
| 均匀采样 | 基础组件、简单随机实验 | 实现简单、样本独立 | 仅适用于均匀分布 |
| 逆变换采样 | 一维、CDF逆函数显式的分布 | 样本独立、无拒绝步骤 | 高维不适用、依赖CDF逆函数 |
| 拒绝采样 | 一维/低维、CDF无逆函数的分布 | 适用范围比逆变换广 | 高维效率低、依赖建议分布 |
| MH算法 | 高维、复杂分布 | 适用任意分布 | 存在拒绝步骤、自相关性强 |
| Gibbs采样 | 高维、条件分布易采样的分布 | 无拒绝步骤、效率高 | 依赖条件分布可采样性 |
实际应用中,需根据目标分布的维度、结构及计算成本选择合适的采样方法。
:采样方法&spm=1001.2101.3001.5002&articleId=149510334&d=1&t=3&u=e7af9f3b6d2d4a18a4487386cf12323b)
17万+

被折叠的 条评论
为什么被折叠?



