参数设置
本工具为可视化目的,维数固定为2D。LHS 本身可扩展到任意维数 d。
随机数由 LCG 确定论生成。相同种子和 N 下,每次得到相同样本。
样本散点图(左: 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 不是万能药,应定位为"光滑函数的加速器"。
具体计算例
在 [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 倍。改变种子值可观察多次试行的分散行为。