深入解析:模式识别与机器学习课程笔记(10):采样方法

概述

在模式识别与机器学习中,许多核心问题(如概率模型的参数估计、复杂分布的期望计算、生成式模型的数据生成)都依赖于采样技术。其本质是从给定的概率分布p ( x ) p(x)p(x)中抽取一系列符合该分布的样本{ x 1 , x 2 , . . . , x N } \{x_1, x_2, ..., x_N\}{x1​,x2​,...,xN​},依据样本的统计特性(如均值、方差)近似原分布的特性。

为什么必须采样?核心原因有两点:

  1. 艰难积分难以解析求解:当应该计算分布的期望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=1N​f(xi​)近似期望。
  2. 生成符合分布的资料:生成式模型(如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其他​

采样步骤

  1. 调用计算机内置的伪随机数生成器,得到[ 0 , 1 ] [0,1][0,1]区间的均匀样本u ∼ U ( 0 , 1 ) u \sim U(0,1)u∼U(0,1);
  2. 凭借线性变换将u uu映射到[ a , b ] [a,b][a,b]区间,即x = a + ( b − a ) ⋅ u x = a + (b-a) \cdot ux=a+(b−a)⋅u;
  3. 重复步骤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)=∫−∞x​p(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)。

采样步骤

  1. 计算目标分布p ( x ) p(x)p(x)的累积分布函数F X ( x ) F_X(x)FX​(x);
  2. 求解F X ( x ) F_X(x)FX​(x)的逆函数F X − 1 ( y ) F_X^{-1}(y)FX−1​(y)(需确保逆函数存在且可显式表达);
  3. 生成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;
  4. 重复步骤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=−λ1​ln(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=−λ1​ln(u)。

局限性

  • 仅适用于一维分布,高维分布的CDF难以计算且逆函数不存在;
  • 部分分布的CDF或逆函数无法显式表达(如正态分布)。

3. 拒绝采样(Rejection Sampling)

拒绝采样解决了“逆变换采样无法处理CDF无显式逆函数”的问题,核心是通过建议分布q ( x ) q(x)q(x)和接受概率筛选样本,最终得到目标分布p ( x ) p(x)p(x)的样本。

核心原理

  1. 选择一个易于采样的建议分布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)的上界);
  2. 生成建议样本x ∼ q ( x ) x \sim q(x)x∼q(x)和均匀样本u ∼ U ( 0 , 1 ) u \sim U(0,1)u∼U(0,1);
  3. 若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越小,采样效率越高。

采样步骤

  1. 确定目标分布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=maxx​q(x)p(x)​;
  2. 生成x ∼ q ( x ) x \sim q(x)x∼q(x),生成u ∼ U ( 0 , 1 ) u \sim U(0,1)u∼U(0,1);
  3. 判断:若u ≤ p ( x ) M q ( x ) u \leq \frac{p(x)}{M q(x)}u≤Mq(x)p(x)​,接受x xx;否则拒绝,返回步骤2;
  4. 重复步骤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)。

核心思想

  1. 给定当前样本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′;
  2. 计算接受概率α ( x ′ ∣ x t ) \alpha(x'|x_t)α(x′∣xt​),确保转移核满足细致平稳条件;
  3. 生成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​;
  4. 重复迭代,待链收敛后,收集的样本{ 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′)​)

采样步骤

  1. 初始化:选择初始样本x 0 x_0x0​,设置迭代次数N NN和 burn-in 期T TT;
  2. 迭代(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​;
  3. 收敛判断:通过样本的“自相关性”(如相邻样本的相关系数趋近于0)判断链是否收敛;
  4. 收集样本:丢弃前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采样的转移核依据逐变量采样构建:

  1. 给定当前样本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​);
  2. 依次更新每个变量:
    • 从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​;
  3. 新样本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. 采样步骤

  1. 初始化:
    • 确定高维目标分布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。
  2. 迭代(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​)。
  3. 收敛判断:通过单变量样本的自相关性或边际分布的稳定性(如样本均值不再变化)判断收敛。
  4. 收集样本:丢弃前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​​)。

采样过程

  1. 初始化x 0 , 1 = μ 1 x_{0,1} = \mu_1x0,1​=μ1​,x 0 , 2 = μ 2 x_{0,2} = \mu_2x0,2​=μ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​;
  3. 重复迭代,待收敛后收集样本。

4. 优缺点

优点

  • 无需接受-拒绝步骤,采样效率高;
  • 高维场景下,仅需处理低维条件分布,计算量小;
  • 达成简单,无需调整proposal分布参数。

缺点

  • 依赖条件分布的可采样性,若p ( x i ∣ x − i ) p(x_i | x_{-i})p(xi​∣x−i​)麻烦,则无法使用;
  • 变量间相关性强时,链收敛速度慢(需更多迭代才能达到平稳分布)。

总结

本文从“简单到复杂”梳理了模式识别与机器学习中的核心采样方式,各方法的适用场景对比如下:

采样方法适用场景核心优势核心局限
均匀采样基础组件、简单随机实验完成容易、样本独立仅适用于均匀分布
逆变换采样一维、CDF逆函数显式的分布样本独立、无拒绝步骤高维不适用、依赖CDF逆函数
拒绝采样一维/低维、CDF无逆函数的分布适用范围比逆变换广高维效率低、依赖建议分布
MH算法高维、复杂分布适用任意分布存在拒绝步骤、自相关性强
Gibbs采样高维、条件分布易采样的分布无拒绝步骤、效率高依赖条件分布可采样性

实际应用中,需根据目标分布的维度、结构及计算成本选择合适的采样技巧。

posted @ 2025-11-14 08:16  yangykaifa  阅读(115)  评论(0)    收藏  举报