视频封面

视频元信息

  • 所属课程:吴恩达深度学习专项课程 - 超参数调试、正则化与优化(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 的对数尺度上采样:

  1. 取低值,求 log10,得到 a(本例中 log10(0.001) = -4)
  2. 取高值,求 log10,得到 b(本例中 log10(1) = 0)
  3. 在 [a, b] 之间均匀随机采样得到 r
  4. 令超参数 = 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

即:

  1. 在 -3 到 -1 之间均匀随机采样得到 r
  2. 令 1-β = 10^r
  3. 因此 β = 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)时

重要提醒:从粗到细搜索会自然地把注意力集中到最有用的超参数取值区间,从而部分弥补尺度选择不当的问题。

本节核心要点回顾

  1. 随机采样 ≠ 均匀随机采样,尺度选择至关重要
  2. 隐藏单元数、层数等 → 线性尺度(甚至网格搜索)
  3. 学习率 α → 对数尺度,用 10 ** r 实现
  4. 指数加权平均 β → 对 1-β 做对数尺度采样,β = 1 - 10 ** r
  5. 尺度选错的代价通常可接受,从粗到细搜索可缓解

下节预告

下一节将分享如何组织超参数搜索过程(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)配合对数尺度

  1. 先在较宽的对数区间(如 1e-4 ~ 1e-1)随机采样若干组
  2. 观察哪些区间表现好
  3. 缩小范围,在该区间内更密集地采样
  4. 重复直到收敛

思考:对数尺度 + 从粗到细,是实践中调试学习率最常用的组合拳。


关键标签 / 关键词

深度学习 #吴恩达 #超参数调优 #学习率 #对数尺度 #随机搜索 #指数加权平均 #Beta参数 #从粗到细搜索 #Python实现 #HyperparameterTuning #LogScale


生成时间:2026-10-10 22:15:16 生成平台:VideoNote www.xygy.top