文章

26 为超参数选择合适的采样尺度(Scale)

26 为超参数选择合适的采样尺度(Scale)

一、核心思想

超参数不应在原始线性空间中均匀随机采样,而应根据其对模型性能的影响敏感度,选择合适的尺度(scale) 进行采样,例如:

  • 对数尺度(log scale)用于学习率 $\alpha$
  • 反向对数尺度(通过 $1 - \beta$)用于动量参数 $\beta$

  这样可以更均匀地分配搜索资源,避免在不敏感区域浪费计算,在敏感区域覆盖不足。


二、不同超参数的采样策略

✅ 1. 适合线性均匀采样的超参数

  这些参数在数值上线性变化时,对模型影响也近似线性,可直接在区间内均匀采样:

  • 隐藏单元数 $n^{[l]}$:如在 $[50, 100]$ 内均匀采样
  • 网络层数 $L$:如在 ${2, 3, 4}$ 中离散均匀选择

✅ 这些是整数型或结构型参数,线性尺度合理。


🔥 2. 必须使用对数尺度采样的超参数:学习率 $\alpha$

❌ 错误做法:

  在线性区间 $[0.0001, 1]$ 上均匀采样
→ 90% 的样本落在 $[0.1, 1]$,而关键的小学习率区域 $[0.0001, 0.1]$ 仅占 10%

✅ 正确做法:在对数尺度上均匀采样

  设 $\alpha \in [10^a, 10^b]$,例如 $[10^{-4}, 10^0]$

  1. 计算对数边界:

    \[a = \log_{10}(0.0001) = -4,\quad b = \log_{10}(1) = 0\]
  2. 在 $[a, b]$ 上均匀采样 $r$:

    \[r \sim \mathcal{U}(-4, 0)\]
  3. 设置学习率:

    \[\alpha = 10^r\]

💡 Python 实现

1
2
r = -4 * np.random.rand()  # r ∈ [-4, 0]
alpha = 10 ** r

  ✅ 这样可在 $[10^{-4}, 10^{-3}]$、$[10^{-3}, 10^{-2}]$ 等每个数量级区间内均匀分配采样点


⚠️ 3. 特殊处理:动量参数 $\beta$ (如 Momentum 或 Adam 中的 $\beta_1$

问题背景:
  • $\beta$ 控制指数加权平均的记忆长度,有效窗口约为:

    \[\text{Effective window} \approx \frac{1}{1 - \beta}\]
  • 当 $\beta = 0.9$ → 窗口 ≈ 10
  • 当 $\beta = 0.999$ → 窗口 ≈ 1000

📌 关键洞察:$\beta$ 接近 1 时,微小变化会导致有效窗口大幅改变,因此对 $\beta$ 的敏感度非线性增强

❌ 错误做法:

  在 $[0.9, 0.999]$ 上线性均匀采样
→ 大部分点集中在 $[0.9, 0.95]$,而高敏感区 $[0.99, 0.999]$ 覆盖不足

✅ 正确做法: $1 - \beta$ 使用对数尺度
  1. 设 $\beta \in [0.9, 0.999]$,则:

    \[1 - \beta \in [0.001, 0.1] = [10^{-3}, 10^{-1}]\]
  2. 对 $1 - \beta$ 取对数边界:

    \[a = \log_{10}(0.001) = -3,\quad b = \log_{10}(0.1) = -1\]
  3. 均匀采样 $r \sim \mathcal{U}(-3, -1)$
  4. 设置:

    \[1 - \beta = 10^r \quad \Rightarrow \quad \beta = 1 - 10^r\]

💡 效果:在 $\beta = 0.9$(窗口≈10)和 $\beta = 0.999$(窗口≈1000)之间等比例探索不同时间尺度


三、为什么这样做更有效?——敏感度分析

  • 对于 $\beta$,性能对 $1 - \beta$ 的相对变化更敏感,而非绝对变化。
  • 例如:

    • $\beta$ 从 0.9 → 0.9005(变化 0.0005):窗口从 10 → 10.05,几乎无影响
    • $\beta$ 从 0.999 → 0.9995(同样变化 0.0005):窗口从 1000 → 2000,翻倍!

因此,应在 $1 - \beta$ 的对数空间中均匀采样,以匹配其非线性敏感度


四、实用建议与容错机制

  • 即使一开始用了错误的尺度(如线性采样) ,只要:

    1. 采样点足够多
    2. 结合由粗到精(coarse-to-fine)搜索策略
  • 仍可能找到较好结果,因为精细阶段会聚焦到有效区域。

最佳实践优先使用正确尺度 + 随机搜索 + 由粗到精


五、总结:超参数采样尺度指南

超参数合理范围示例推荐采样方式公式
学习率 $\alpha$$[10^{-4}, 1]$对数均匀$\alpha = 10^r,\ r \sim \mathcal{U}(-4, 0)$
动量 $\beta$$[0.9, 0.999]$ $1-\beta$ 取对数$\beta = 1 - 10^r,\ r \sim \mathcal{U}(-3, -1)$
隐藏单元数 $n^{[l]}$$[50, 100]$线性均匀$n \sim \mathcal{U}(50, 100)$
网络层数 $L$${2,3,4,5}$离散均匀$L \in {2,3,4,5}$

六、关键公式汇总(KaTeX 兼容)

  • 学习率采样:

    \[\alpha = 10^r,\quad r \sim \mathcal{U}(\log_{10}\alpha_{\min},\ \log_{10}\alpha_{\max})\]
  • 动量参数采样:

    \[\beta = 1 - 10^r,\quad r \sim \mathcal{U}(\log_{10}(1 - \beta_{\max}),\ \log_{10}(1 - \beta_{\min}))\]
  • 指数加权平均的有效窗口:

    \[\text{Window} \approx \frac{1}{1 - \beta}\]
本文由作者按照 CC BY 4.0 进行授权