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]$
计算对数边界:
\[a = \log_{10}(0.0001) = -4,\quad b = \log_{10}(1) = 0\]在 $[a, b]$ 上均匀采样 $r$:
\[r \sim \mathcal{U}(-4, 0)\]设置学习率:
\[\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$ 使用对数尺度
设 $\beta \in [0.9, 0.999]$,则:
\[1 - \beta \in [0.001, 0.1] = [10^{-3}, 10^{-1}]\]对 $1 - \beta$ 取对数边界:
\[a = \log_{10}(0.001) = -3,\quad b = \log_{10}(0.1) = -1\]- 均匀采样 $r \sim \mathcal{U}(-3, -1)$
设置:
\[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$ 的对数空间中均匀采样,以匹配其非线性敏感度。
四、实用建议与容错机制
即使一开始用了错误的尺度(如线性采样) ,只要:
- 采样点足够多
- 结合由粗到精(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}\]