
视频元信息
- 所属课程:吴恩达深度学习专项课程 - 超参数调试、正则化与优化(Professionalization of Deep Learning)
- 章节编号:p72 / 3.2
- 本讲主题:使用适当的标准(尺度)来选择超参数
- 语言:官方中英双语
内容摘要(TL;DR)
本视频讲解超参数随机采样时尺度的选择问题。并非所有超参数都适合在线性尺度上均匀采样——对于学习率 α 和指数加权平均参数 β,应在对数尺度上采样,才能把计算资源合理分配到敏感区间。视频给出 Python 实现方法与背后的数学直觉。
一、引入:随机采样不等于均匀采样 [00:00]
上一节视频介绍了在超参数范围内随机采样比网格搜索更高效。
但随机采样(sampling at random)并不意味着在有效值范围内均匀随机采样(uniformly at random)。
重点:选择合适的尺度(appropriate scale)来探索超参数,是本节的核心议题。
理解:所谓"尺度",就是把超参数的取值范围映射到采样分布上的方式。同一个区间,用线性尺度和对数尺度采样,得到的样本分布完全不同。
二、适合线性尺度的超参数 [00:25]
有些超参数确实适合在线性尺度上均匀采样,甚至可以直接用网格搜索。
案例 1:某层的隐藏单元数 N^[L]
- 假设合理范围是 50 到 100
- 在 50~100 的数轴上均匀随机取点,是合理的做法
案例 2:网络总层数 L
- 假设合理范围是 2 到 4
- 在 2、3、4 中均匀随机选取,或者直接网格搜索评估 2、3、4 都合理
要点:当超参数取值本身是"小范围整数"或"线性变化对结果影响均匀"时,线性均匀采样是合理的。
思考:层数和隐藏单元数这类超参数,取值是离散的、数量级接近的整数,线性尺度天然合适。
三、不适合线性尺度:学习率 α [01:28]
问题所在
假设学习率 α 的搜索范围是 0.001 到 1。
如果在这条数轴上线性均匀随机采样:
- 约 90% 的采样值会落在 0.1 到 1 之间
- 只有 10% 的采样值落在 0.01 到 0.1 之间
易错点:这意味着 90% 的计算资源被浪费在 0.1~1 这个区间,而 0.001~0.01 这个同样重要的区间只得到 10% 的资源。
正确做法:对数尺度(log scale)
- 不用线性尺度,而是让数轴按 0.001 → 0.01 → 0.1 → 1 的对数刻度分布
- 在对数尺度上均匀随机采样
- 这样 0.001~0.01、0.01~0.1、0.1~1 各区间获得大致相等的搜索资源
Python 实现
r = -4 * np.random.rand() # r 是 [-4, 0] 之间的随机数
alpha = 10 ** r # alpha 落在 10^-4 到 10^0 之间
- 第一行执行后,r 是 -4 到 0 之间的随机数
- 因此 alpha 落在 10^-4 到 10^0(即 0.0001 到 1)之间
一般化公式
若要在 10^a 到 10^b 的对数尺度上采样:
- 取低值,求 log10,得到 a(本例中 log10(0.001) = -4)
- 取高值,求 log10,得到 b(本例中 log10(1) = 0)
- 在 [a, b] 之间均匀随机采样得到 r
- 令超参数 = 10^r
考点:对数尺度采样的实现三步——取对数定端点、在指数区间均匀采样、再做幂运算还原。这是面试与实战中的高频考点。
四、更棘手的情况:指数加权平均参数 β [04:40]
背景知识:β 的物理含义
β 用于计算指数加权平均(exponentially weighted averages),常见于优化算法(如 Momentum、RMSprop、Adam)。
- β = 0.9 时,相当于对最近约 10 个值做平均(类似取 10 天温度的平均)
- β = 0.9999 时,相当于对最近约 1000 个值做平均
推导:指数加权平均的有效窗口约为 1/(1-β)。当 β=0.9,1/(1-β)=10;当 β=0.9999,1/(1-β)≈10000。
问题:范围 0.9 到 0.9999 不能线性采样
如果直接在 0.9 到 0.9999 之间线性均匀随机采样,同样会出问题。
正确做法:对 1-β 做对数采样
- 转而探索 1-β 的取值范围:从 0.1 到 0.001
- 即 10^-1 到 10^-3
易错点:注意这里与上一节的端点顺序相反——上一节是小值在左、大值在右;这里是大值(0.1)在左、小值(0.001)在右。
Python 实现
r = np.random.rand() * (-1 - (-3)) + (-3) # r 在 [-3, -1] 之间均匀采样
# 等价写法:r = -3 * np.random.rand() - 1
one_minus_beta = 10 ** r
beta = 1 - 10 ** r
即:
- 在 -3 到 -1 之间均匀随机采样得到 r
- 令 1-β = 10^r
- 因此 β = 1 - 10^r
这样做的效果
- 投入到 0.9 ~ 0.99 区间的搜索资源
- 与投入到 0.99 ~ 0.9999 区间的资源大致相等
重点:对数采样让 β 接近 1 的区间获得更密集的采样,从而更高效地探索真正敏感的参数区域。
五、背后的数学直觉:为什么 β 接近 1 时不能线性采样 [06:43]
敏感性分析
考点:当 β 接近 1 时,结果对 β 的微小变化极其敏感。
- β 从 0.9000 变到 0.9005:几乎没有任何影响(平均窗口从 10 变到约 10,变化极小)
- β 从 0.9999 变到 0.9995:对算法行为产生巨大影响(平均窗口从约 10000 变到约 2000)
理解:两者变化的绝对量都是 0.0005,但造成的影响天差地别。这就是"敏感性"的含义。
根本原因
指数加权平均的窗口长度公式是 1/(1-β)。
- 当 β 接近 1 时,1-β 接近 0
- 分母趋近 0 时,公式对 β 的微小扰动极度敏感
对数采样的作用
重点:对数采样使得在 β 接近 1(等价于 1-β 接近 0)的区域采样更密集,从而把样本更高效地分配到可能产生不同结果的参数空间。
六、实用建议与总结 [08:11]
不必过度焦虑尺度选择
- 即使你在某些超参数上没有选对尺度(比如本应用对数尺度却用了均匀尺度)
- 通常仍能得到还不错的结果,尤其是当你使用从粗到细的搜索策略(coarse to fine search)时
重要提醒:从粗到细搜索会自然地把注意力集中到最有用的超参数取值区间,从而部分弥补尺度选择不当的问题。
本节核心要点回顾
- 随机采样 ≠ 均匀随机采样,尺度选择至关重要
- 隐藏单元数、层数等 → 线性尺度(甚至网格搜索)
- 学习率 α → 对数尺度,用
10 ** r实现 - 指数加权平均 β → 对 1-β 做对数尺度采样,
β = 1 - 10 ** r - 尺度选错的代价通常可接受,从粗到细搜索可缓解
下节预告
下一节将分享如何组织超参数搜索过程(organizing the hyperparameter search process),让工作更高效。
【拓展】相关背景与实战补充
为什么深度学习超参数普遍呈对数分布
- 学习率、正则化系数 λ、梯度裁剪阈值等,其"有效取值范围"通常跨越多个数量级(如 1e-5 到 1e-1)
- 这类参数的相对变化(而非绝对变化)才决定模型行为,因此天然适合对数尺度
常见超参数的推荐采样尺度
| 超参数 | 推荐尺度 | 说明 |
|---|---|---|
| 学习率 α | 对数 | 跨越多个数量级 |
| 动量 β | 对数(对 1-β) | 接近 1 时敏感 |
| 隐藏层单元数 | 线性/网格 | 数量级接近的整数 |
| 层数 L | 线性/网格 | 小范围整数 |
| 正则化系数 λ | 对数 | 跨越多个数量级 |
| batch size | 线性或 2 的幂 | 常取 2 的幂次 |
容易踩的坑
- 坑 1:直接用
np.random.uniform(0.001, 1)采学习率——90% 样本挤在大值区间,浪费算力。- 坑 2:对 β 直接线性采样——0.9 到 0.9999 之间,绝大多数样本落在 0.9~0.99,而真正敏感的 0.99~0.9999 几乎采不到。
- 坑 3:忘记 β 的端点顺序与 α 相反,导致
1-β = 10^r中的 r 区间写反。- 坑 4:把"随机搜索"理解成"均匀随机",忽略尺度映射这一步。
从粗到细搜索(Coarse to Fine)配合对数尺度
- 先在较宽的对数区间(如 1e-4 ~ 1e-1)随机采样若干组
- 观察哪些区间表现好
- 缩小范围,在该区间内更密集地采样
- 重复直到收敛
思考:对数尺度 + 从粗到细,是实践中调试学习率最常用的组合拳。
关键标签 / 关键词
深度学习 #吴恩达 #超参数调优 #学习率 #对数尺度 #随机搜索 #指数加权平均 #Beta参数 #从粗到细搜索 #Python实现 #HyperparameterTuning #LogScale
生成时间:2026-10-10 22:15:16 生成平台:VideoNote www.xygy.top