拉丁超立方抽样 返回
数学统计模拟器

拉丁超立方抽样 — LHS 与简单蒙特卡洛的比较

2维分层抽样 LHS 与简单蒙特卡洛并排显示。观察每行每列放置1个点的机制,实时比较相同样本数下的积分精度差异。

参数设置
样本数 N
维数 d
2D 固定

本工具为可视化目的,维数固定为2D。LHS 本身可扩展到任意维数 d。

随机数种子(LCG)
积分函数 f(x,y)

0: 高斯峰(中心峰)/1: sin(πx)sin(πy) 脊/2: 高频 sin(20πx)sin(20πy)

随机数由 LCG 确定论生成。相同种子和 N 下,每次得到相同样本。

暂停时,拖动滑块即可即时更新结果。

计算结果
已放置样本数
抽样方法
覆盖率 LHS/MC
最大空缺层 LHS/MC
样本散点图(左: LHS/右: 简单 MC)

背景格线表示 LHS 的 N×N 单元划分。LHS 每行每列各1个点(分层),简单 MC 无分层。

理论与主要公式

在拉丁超立方抽样中,对每个维度 $d$,构造 $\{0,1,\dots,N-1\}$ 的独立排列 $\pi_d$,第 $i$ 个样本的第 $d$ 维给出($u_{i,d}\sim U(0,1)$):

$$x_{i,d} = \frac{\pi_d(i) + u_{i,d}}{N}$$

函数 $f$ 的积分通过样本平均估计:

$$\hat{I} = \frac{1}{N}\sum_{i=1}^{N} f(\mathbf{x}_i)$$

对于光滑函数,LHS 估计分散的衰减速度快于简单 MC 的 $1/N$,误差实际应用中更小:

$$\mathrm{Var}(\hat{I}_\text{LHS}) \le \mathrm{Var}(\hat{I}_\text{MC})$$

测试函数 $f_1(x,y)=\sin(\pi x)\sin(\pi y)$ 的真值为 $4/\pi^2 \approx 0.4053$。本工具以此为基准比较 LHS 和 MC 的误差。

拉丁超立方抽样(LHS)是什么

🙋
我经常在 CAE 中听到"LHS"这个术语,但与普通蒙特卡洛有什么区别呢?都是随机投点,对吧?
🎓
好问题。虽然都是"随机投点",但放置的规则不同。LHS 将每个维度分成 $N$ 个等间距单元,并且"每行每列恰好放置1个点"。看上面模拟器的左边,你可以看到水平格线的每一列、竖直格线的每一行都恰好有1个蓝点。简单 MC(右边的橙色点)没有任何限制,独立生成,所以可能会有空的条带,或点聚在一起。
🙋
哦,"每行每列各1个点"像数独一样!为什么这样积分就更准确了呢?
🎓
很好的类比。因为样本"均匀地"覆盖空间,所以计算函数值平均时的偏差更小。比如,如果某个函数在右上角值很大,简单 MC 可能偶然没在那里采样,导致估计值被低估。LHS 因为每行每列都有点,原理上不会出现这种"空白"。试着把模拟器上的 N 改成 20,几次改变种子。你会发现 LHS 的估计值(蓝色)往往能保持在真值 0.4053 附近,而 MC(橙色)会在 0.3~0.5 之间大幅波动。
🙋
我看到"误差比"卡片显示"2.5×"或"5×"之类的。这意味着 LHS 的误差比简单 MC 更小吧?
🎓
正是!|MC误差|÷|LHS误差|,所以如果大于1,LHS 就赢了。实务中重要的是,这是在"相同样本数"下比较的。比如 100 个 CFD 案例的成本固定,只要把这 100 个用 LHS 布置,得到的平均值或响应曲面精度就比简单 MC 明显更好。不增加成本,只改变采样方法就行。
🙋
当我把函数改成"高频"(2)时,误差比变成接近1,差不多没区别。为什么呢?
🎓
观察敏锐!LHS 只在"光滑函数"上有效。$\sin(20\pi x)\sin(20\pi y)$ 这样快速振荡的函数,在一个单元内就振荡很多周期,所以分层效果基本消失了。CAE 术语叫"无相关高频噪声"时,LHS 无能为力。实务中要么期望响应光滑,要么用光滑的代理模型再用 LHS,这是标准做法。

常见问题

两者都是"分散低减少采样",比简单蒙特卡洛更均匀地覆盖空间,但设计理念不同。LHS 确保每维的边际分布一定均匀,需要预先决定样本数 N 然后一次生成。Sobol 序列等低偏差序列可以逐步添加,但维数间的相关结构有时难以控制。在 CAE 设计搜索中,LHS 因为事先确定试行次数而更常用;在数值积分中,Sobol 序列更受欢迎。
"每维边际分布均匀"的性质与维数无关成立。但高维时空间本身指数增大(维数诅咒),N 较小时虽然边际均匀,2维投影中仍可能有大量空隙。为改进高维 LHS,实务中常用最大最小距离 LHS(Maximin LHS)或最优化 LHS(MILHS),这些优化了相关系数。
标准 LHS 一次性决定 N 并生成,事后追加1个点会破坏"每行每列1点"的性质。需要追加时,用嵌套 LHS(Nested LHS)或可细化 LHS(Refinable LHS)。实现复杂,一般建议最初就生成足够大的 N。
在"目标函数沿各维单调或光滑"时,理论上(McKay 1979)证明了 LHS 分散≤简单 MC 分散。但高频函数或 N 极小时,两者差异会缩小。本模拟器的"高频"函数(模式2)就是这个例子,误差比粘在1附近。

现实应用

响应曲面与代理模型训练数据:当单个 FEM/CFD 分析需时数小时时,无法在设计空间撒下数百个样本。标准做法是用 LHS 均匀布置 30~100 个案例,从结果学习多项式回归、克里金、神经网络等代理模型,加速设计探索和优化。

不确定性量化(UQ)与可靠性分析:在评估材料常数、板厚、荷载等波动对产品性能的影响时,也用 LHS 进行概率分析。与 Monte Carlo 滤波或 Saltelli 敏感性分析组合,可以有限的试行次数对各输入变量的重要度排序。

实验设计(DOE):不仅在计算机实验,实体化学工艺或制造线实验中,当要因组合需要均匀覆盖时,也应用 LHS。相比基于正交表的经典 DOE,LHS 对连续变量更友好,要因众多且需压缩样本时更有优势。

机器学习超参数搜索:搜索学习率、正则化系数、隐层大小等超参数空间时,有时用 LHS 改进随机搜索。比网格搜索少试行,比完全随机搜索覆盖更广,也常作贝叶斯优化初始点布置。

常见误解与注意事项

最常见的误解是"用 LHS 就能减少样本数而不损精度"的过度信任。LHS 改进的是估计值的分散,而不是补偿函数局部结构。如果响应有陡峭的峰,N=20 的 LHS 也很难精准定位峰值位置。试试模拟器里高斯峰函数(模式0)与 N=20 的组合,即便用 LHS 也会有一定偏差。记住:"均匀是均匀的,但峰值检测是另一回事"。

其次,"各维边际分布均匀"与"整体样本均匀"是两码事。LHS 只保证边际,2维投影中仍可能有偏斜。反复改种子时会看到点偶尔沿斜线排列("对角偏斜")。避免这种偏斜需用 Maximin LHS 或优化 LHS 这样的改进版本。本工具是标准 LHS,所以这类偏斜现象有时会出现。

最后,LHS 的优势幅度因测试函数而异。本工具模式1($\sin(\pi x)\sin(\pi y)$)是 LHS 擅长的光滑低频函数,误差比可达数倍到十倍。模式2 高频函数效果消失,有时 MC 甚至偶然更好。实务中应当事先用测试函数评估,或多轮评估分散。LHS 不是万能药,应定位为"光滑函数的加速器"。

使用指南

  1. 设置样本数 N(10~5000),选择积分对象的2维函数(如 f(x,y)=sin(πx)cos(πy))
  2. 点击"执行"按钮,同时运行拉丁超立方抽样(LHS)和简单蒙特卡洛法,左侧散点图显示样本分布,右侧显示估计值对比
  3. LHS 将 [0,1]² 区域分成 N×N 网格,从各单元随机抽1个点;简单MC 将 N 个点完全随机放置,可视化积分值收敛速度和误差

具体计算例

在 [0,1]² 区域积分 f(x,y)=sin(πx)cos(πy),真值为 ∫₀¹∫₀¹ sin(πx)cos(πy)dxdy = 4/π²≈0.405。N=400 样本时,简单MC 的样本误差约为 ±0.032(95%置信),而 LHS 通过分层效应降至 ±0.008 左右,同样本数下推定精度提升 3~4 倍。改变种子值可观察多次试行的分散行为。

实务注意事项