模式识别与机器学习课程笔记(10):采样方法
- 概述
- 基本采样方法
- 1. 均匀采样(Uniform Sampling)
- 采样步骤
- 适用场景
- 2. 逆变换采样(Inverse Transform Sampling)
- 核心原理
- 采样步骤
- 示例:指数分布的逆变换采样
- 局限性
- 3. 拒绝采样(Rejection Sampling)
- 核心原理
- 关键公式
- 采样步骤
- 局限性
- 蒙特卡洛马尔可夫链(MCMC)采样
- 1. MCMC的核心概念
- (1)马尔可夫链(Markov Chain)
- (2)平稳分布(Stationary Distribution)
- (3)细致平稳条件(Detailed Balance Condition)
- 2. Metropolis-Hastings(MH)算法
- 核心思想
- 关键公式
- 采样步骤
- 注意事项
- Gibbs采样
- 1. 核心原理
- 2. 采样步骤
- 3. 示例:二维正态分布的Gibbs采样
- 采样过程
- 4. 优缺点
- 优点
- 缺点
- 总结
概述
在模式识别与机器学习中,许多核心问题(如概率模型的参数估计、复杂分布的期望计算、生成式模型的数据生成)都依赖于采样技术。其本质是从给定的概率分布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)dxEp(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 uu映射到[ a , b ] [a,b][a,b]区间,即x = a + ( b − a ) ⋅ u x = a + (b-a) \cdot ux=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)dtFX(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 xx;
- 重复步骤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 0x≥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 MM使得M ⋅ q ( x ) ≥ p ( x ) M \cdot q(x) \geq p(x)M⋅q(x)≥p(x)对所有x xx成立(M MM是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 xx作为目标样本;否则拒绝x xx,重复步骤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 MM的定义保证);
- 采样效率:接受概率的期望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 MM越小,采样效率越高。
采样步骤
- 确定目标分布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 xx;否则拒绝,返回步骤2;
- 重复步骤2-3,直到收集到足够数量的目标样本。
局限性
- 高维场景下,M MM会急剧增大,导致接受概率趋近于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 tt,有π ( 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_txt,从 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_txt+1=xt;
- 重复迭代,待链收敛后,收集的样本{ x T , x T + 1 , . . . } \{x_T, x_{T+1}, ...\}{xT,xT+1,...}(T TT为 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_0x0,设置迭代次数N NN和 burn-in 期T TT;
- 迭代(t = 0 t=0t=0到N − 1 N-1N−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 \alphau≤α,则x t + 1 = x ′ x_{t+1} = x'xt+1=x′;否则x t + 1 = x t x_{t+1} = x_txt+1=xt;
- 收敛判断:通过样本的“自相关性”(如相邻样本的相关系数趋近于0)判断链是否收敛;
- 收集样本:丢弃前T TT个样本(burn-in 期,消除初始值影响),剩余样本{ x T , . . . , x N − 1 } \{x_T, ..., x_{N-1}\}{xT,...,xN−1}即为目标分布样本。
注意事项
- burn-in 期:链的初始样本受x 0 x_0x0影响,需丢弃前T TT个样本以确保后续样本服从平稳分布;
- 自相关性:MCMC样本存在相关性(后一个样本依赖前一个),可利用“ thinning”(每隔k kk个样本保留1个)降低相关性;
- proposal 分布选择:σ \sigmaσ(如正态 proposal 的方差)过大易导致接受概率低,过小易导致链收敛慢,需利用经验调整。
Gibbs采样
MH算法的就是Gibbs采样特例,适用于高维目标分布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_ixi外的所有变量)易于采样的场景。其核心是凭借“逐变量更新”避免接受-拒绝步骤,提升采样效率。
1. 核心原理
对于d dd维目标分布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 NN和 burn-in 期T TT。
- 迭代(t = 0 t=0t=0到N − 1 N-1N−1):
- 更新x 1 x_1x1: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_2x2: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_dxd: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 TT个样本,剩余样本{ 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_1x0,1=μ1,x 0 , 2 = μ 2 x_{0,2} = \mu_2x0,2=μ2;
- 迭代t = 0 t=0t=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采样 | 高维、条件分布易采样的分布 | 无拒绝步骤、效率高 | 依赖条件分布可采样性 |
实际应用中,需根据目标分布的维度、结构及计算成本选择合适的采样技巧。