对数阶乘的标度
斯托灵近似将乘积转化为和, 这是使大n数学成为可能的基本操作:
ln(n!) ≈ n·ln(n) − n + 0.5·ln(2πn)
这个公式来自于对和 Σ ln(k) 的近似, 其中 k=1..n, 然后应用梯形规则来界定误差。
为什么在几何上重要
n维球体体积公式涉及到 Γ(n/2 + 1), 对于整数 n, 等于 (n/2)! 或者是半整数的乘积。斯托灵让我们能够在大n的情况下, 估计这些值而无需直接计算每个值。
斯托灵近似给出 log(n!) ≈ n·log(n) − n·log(e) 在十进制表示中, 对于大致估计非常有用。
对于 n = 10: ln(10!) ≈ 10·2.303 − 10 + 0.5·ln(62.83) ≈ 23.03 − 10 + 2.08 = 15.10 (真实值: 15.104).
对于 n = 100: ln(100!) ≈ 100·4.605 − 100 + 0.5·ln(628.3) ≈ 460.5 − 100 + 3.24 = 363.7 (真实值: 363.74).
在 n=20 时的斯托灵计算
直接计算: ln(20) ≈ 2.996. ln(2π·20) = ln(125.66) ≈ 4.833。
体积公式
n维球体的体积, 半径为 r:
V_n(r) = C_n · r^n where C_n = π^(n/2) / Γ(n/2 + 1)
对于小的 n 值, C_n 值遵循一个模式, 使用 Γ(1/2) = √π 和减少公式:
- n=1: C_1 = π^(1/2)/Γ(3/2) = √π/(√π/2) = 2
- n=2: C_2 = π^1/Γ(2) = π/1 = π
- n=3: C_3 = π^(3/2)/Γ(5/2) = π^(3/2)/(3√π/4) = 4π/3
- n=4: C_4 = π²/Γ(3) = π²/2
- n=5: C_5 = π^(5/2)/Γ(7/2) = π^(5/2)/(15√π/8) = 8π²/15
注意:C_n 在 n=5 处达到峰值,然后开始下降。对于大值 n,C_n → 0。
最大值在 n=5 处
C_5 = 8π²/15。使用 π² ≈ 9.870 计算:
C_5 = 8·9.870/15 = 78.96/15 ≈ 5.264
为了验证这是一个最大值:C_6 = π³/6 ≈ 31.006/6 ≈ 5.168。所以 C_6 < C_5 —— 最大值 C_n 在 n=5 处达到。
角落体积的比例
量化角落悖论:一个 n 维单位超立方体 [−1,1]^n 中,镶嵌半径为 1 的球体之外的比例是多少?
角落比例 = 1 - C_n / 2^n
| n | C_n | 2^n | Sphere fraction | Corner fraction | |---|---|---|---|---| | 2 | 3.14 | 4 | 78.5% | 21.5% | | 3 | 4.19 | 8 | 52.4% | 47.6% | | 4 | 4.93 | 16 | 30.8% | 69.2% | | 5 | 5.26 | 32 | 16.4% | 83.6% | | 6 | 5.17 | 64 | 8.1% | 91.9% | | 10 | 2.55 | 1024 | 0.25% | 99.75% |
优化的意义
角落悖论在高维空间中的优化有直接的后果:
随机搜索失败。在n维参数空间中的一个随机点几乎都落在角落里——远离起点,参数值极端。如果好的解决方案聚集在中等参数值附近,随机搜索几乎不会找到它们。
梯度下降成功。沿着局部梯度方向前进,你系统地探索几何,而不是盲目采样。高维空间的困扰随机方法;结构化方法适应。
距离集中。在高维空间中,随机点之间的所有对应距离都集中在相同的值上:它们都变成了大约√(2n/3)的[0,1]^n的随机点之间的距离。最近的邻居方法失效,因为'最近'和'最远'变得难以区分。
汉明的建议:在高度依赖数学的高维空间中,理解几何是关键。在高维空间中,几何本身就是不直观,数学是唯一可靠的指南。