机器学习数学基础 120 章

随机采样与 Monte Carlo 估计

层级:B|按需

1. 用随机样本代替难积分

目标

I=EXp[f(X)]=f(x)p(x)dxI=E_{X\sim p}[f(X)] =\int f(x)p(x)dx

高维时难解析/网格积分。若能从 pp 采样:

I^N=1Ni=1Nf(Xi).\hat I_N=\frac1N\sum_{i=1}^{N}f(X_i).

LLN 给一致性,CLT 给标准误约

SE(I^)=Varp(f)/N.SE(\hat I)=\sqrt{Var_p(f)/N}.

2. 基本 Monte Carlo 的特点

  • 误差率 O(N1/2)O(N^{-1/2}),与维度没有显式指数;
  • 误差减半约需 4 倍样本;
  • 样本独立时标准误可用样本方差估计;
  • 维度仍会通过 ff 方差、难采样区域和常数影响效率。

应报告估计值、Monte Carlo 标准误、有效样本量与随机种子,而非只给一次结果。

3. 伪随机数

计算机常用确定性伪随机生成器,种子固定则序列可复现。良好实践:

  • 使用现代库生成器;
  • 不在循环中反复用时间重置种子;
  • 为数据划分、初始化、采样使用可管理的独立随机流;
  • 并行任务避免相同子序列;
  • 安全用途使用密码学随机源,模拟用途通常无需。

可复现不等于结果稳健,还应跨多个种子报告波动。

4. 逆 CDF 采样

UU(0,1),quadX=F1(U).U\sim U(0,1),quad X=F^{-1}(U).

XX 服从 CDF FF。Exponential:

X=1λlog(1U),X=-\frac1\lambda\log(1-U),

1U1-U 也均匀,常写 logU/λ-\log U/\lambda,但实现要避免精确 U=0U=0

5. Rejection sampling

若目标未归一化密度 p~(x)\tilde p(x),易采提议 q(x)q(x),且

p~(x)Mq(x),\tilde p(x)\le Mq(x),

步骤:

  1. XqX\sim q
  2. UU(0,1)U\sim U(0,1)
  3. Up~(X)/(Mq(X))U\le\tilde p(X)/(Mq(X)) 接受。

接受率与归一化常数/MM 有关。高维提议覆盖差时接受率极低。

6. 重要性采样

从易采 qq 采样:

I=f(x)p(x)q(x)q(x)dx=Eq[f(X)w(X)],I=\int f(x)\frac{p(x)}{q(x)}q(x)dx =E_q[f(X)w(X)], w(x)=p(x)/q(x).w(x)=p(x)/q(x).

估计:

I^=1Nif(Xi)wi.\hat I=\frac1N\sum_if(X_i)w_i.

要求 q(x)>0q(x)>0 覆盖 fpfp 有贡献区域。权重重尾会导致巨大方差甚至无限方差。

7. 自归一化重要性采样

若只知道未归一化 pp

I^SNIS=iwif(Xi)iwi.\hat I_{SNIS} =\frac{\sum_iw_if(X_i)}{\sum_iw_i}.

有限样本通常有偏但一致。计算 log weights 后减最大值再归一化,避免溢出。

有效样本量诊断:

ESS(iwi)2iwi2=1iw~i2.ESS\approx\frac{(\sum_iw_i)^2}{\sum_iw_i^2} =\frac1{\sum_i\tilde w_i^2}.

它是启发式;高 ESS 不自动保证所有函数 ff 估计准确。

8. 方差缩减:控制变量

E[g(X)]E[g(X)] 已知:

I^c=1Ni[f(Xi)c(g(Xi)E[g])].\hat I_c=\frac1N\sum_i [f(X_i)-c(g(X_i)-E[g])].

选择与 ff 高相关的 gg 与合适 cc 可降方差而不改期望。最优线性系数

c=Cov(f,g)/Var(g).c^*=Cov(f,g)/Var(g).

9. 对偶样本与分层采样

  • antithetic:对 UU 同时用 1U1-U,若输出负相关可降方差;
  • stratified:把空间分层,每层采样,确保稀少区域覆盖;
  • common random numbers:比较两个系统时用相同随机输入,降低差值方差;
  • quasi-Monte Carlo:低差异序列更均匀覆盖,特定光滑问题可快于随机 MC。

10. MCMC 预览

无法独立从 pp 采样时,构造以 pp 为平稳分布的 Markov 链。样本相关:

Var(fˉ)σf2N(1+2k1ρk).Var(\bar f)\approx \frac{\sigma_f^2}{N} \left(1+2\sum_{k\ge1}\rho_k\right).

括号是自相关时间,ESS 小于 NN。需要诊断多链收敛、混合、burn-in 与尾部,而不只画一条 trace。

11. Bootstrap 是不同的采样层

Bootstrap 从经验分布有放回重采样数据,用来近似估计量的抽样分布;Monte Carlo 通常从已知模型分布采样近似积分。两者都用模拟,但目标和随机来源不同。

12. 在机器学习中的用途

  • dropout 与数据增强的期望估计;
  • Bayesian 后验预测;
  • 强化学习 return 估计;
  • 负采样与 sampled softmax;
  • 随机超参数搜索;
  • 不确定性传播与仿真评估。

若采样分布与目标分布不同,必须理解权重和偏差。

易错点

  1. 样本多不修复系统性偏差或错误分布。
  2. 重要性提议必须覆盖目标支持。
  3. 权重极端会让估计不稳定。
  4. MCMC 样本相关,不能把行数当独立样本数。
  5. 固定种子只保证特定环境下尽量复现,不保证统计稳健。

常见问答

Q1:为什么高维中拒绝采样常失败?

提议与目标的典型集合难匹配,包络常数 MM 指数变大,接受率趋零。

Q2:Monte Carlo 能给确定误差上界吗?

在有界/sub-Gaussian 等条件下可用集中界;普通 CLT 标准误是概率近似,不是绝对确定界。

Q3:采样 1000 次够吗?

取决于方差、自相关、尾部与所需精度。应估标准误/ESS并做稳定性检查,而不是用固定神奇数字。

练习

  1. MC 样本从 1000 增到 4000,标准误约变几倍?
  2. 写出重要性采样权重。
  3. 提议分布在目标有质量区域为零会怎样?
  4. 归一化权重 (0.5,0.25,0.25)(0.5,0.25,0.25) 的 ESS。
  5. 区分 bootstrap 与模型 Monte Carlo。

答案与提示

  1. 减半。
  2. p(x)/q(x)p(x)/q(x)
  3. 无法估计该区域贡献,权重未定义,估计可能偏且不一致。
  4. 1/(0.25+0.0625+0.0625)=8/32.671/(0.25+0.0625+0.0625)=8/3\approx2.67
  5. 前者从经验数据重采样估抽样分布,后者从模型采样估积分/预测。