←上一篇 ↓↑ 下一篇→
3.1 调试处理 回到目录 3.3 超参数训练的实践: Pandas vs. Caviar

为超参数选择合适的范围 (Using an Appropriate Scale to Pick Hyperparameters)

在上一个视频中,你已经看到了在超参数范围中,随机取值可以提升你的搜索效率。但随机取值并不是在有效范围内的随机均匀取值,而是选择合适的标尺,用于探究这些超参数,这很重要。在这个视频中,我会教你怎么做。

假设你要选取隐藏单元的数量 n[l]n^{[l]}n[l] ,假设,你选取的取值范围是从50到100中某点,这种情况下,看到这条从50-100的数轴,你可以随机在其取点,这是一个搜索特定超参数的很直观的方式。或者,如果你要选取神经网络的层数,我们称之为字母 LLL ,你也许会选择层数为2到4中的某个值,接着顺着2,3,4随机均匀取样才比较合理,你还可以应用网格搜索,你会觉得2,3,4,这三个数值是合理的,这是在几个在你考虑范围内随机均匀取值的例子,这些取值还蛮合理的,但对某些超参数而言不适用。

看看这个例子,假设你在搜索超参数 α\alphaα (学习速率),假设你怀疑其值最小是0.0001或最大是1。如果你画一条从0.0001到1的数轴,沿其随机均匀取值,那90%的数值将会落在0.1到1之间,结果就是,在0.1到1之间,应用了90%的资源,而在0.0001到0.1之间,只有10%的搜索资源,这看上去不太对。

反而,用对数标尺搜索超参数的方式会更合理,因此这里不使用线性轴,分别依次取0.0001,0.001,0.01,0.1,1,在对数轴上均匀随机取点,这样,在0.0001到0.001之间,就会有更多的搜索资源可用,还有在0.001到0.01之间等等。

所以在Python中,你可以这样做,使r=-4*np.random.rand(),然后 aaa 随机取值, a=10ra=10^ra=10r ,所以,第一行可以得出 r∈[−4,0]r\in[-4,0]r∈[−4,0] ,那么 a∈[10−4,100]a\in[10^{-4},10^0]a∈[10−4,100] ,所以最左边的数字是 10−410^{-4}10−4 ,最右边是 10010^0100 。

更常见的情况是,如果你在 10a10^a10a 和 10b10^b10b 之间取值,在此例中,这是 10a10^a10a (0.0001),你可以通过 0.00010.00010.0001 算出 aaa 的值,即-4,在右边的值是 10b10^b10b ,你可以算出 bbb 的值 111 ,即0。你要做的就是在 [a,b][a,b][a,b] 区间随机均匀地给 rrr 取值,这个例子中 r∈[−4,0]r\in[-4,0]r∈[−4,0] ,然后你可以设置 aaa 的值,基于随机取样的超参数 a=10ra=10^ra=10r 。

所以总结一下,在对数坐标下取值,取最小值的对数就得到 aaa 的值,取最大值的对数就得到 bbb 值,所以现在你在对数轴上的 10a10^a10a 到 10b10^b10b 区间取值,在 a,ba,ba,b 间随意均匀的选取 rrr 值,将超参数设置为 10r10^r10r ,这就是在对数轴上取值的过程。

最后,另一个棘手的例子是给 β\betaβ 取值,用于计算指数的加权平均值。假设你认为 β\betaβ 是0.9到0.999之间的某个值,也许这就是你想搜索的范围。记住这一点,当计算指数的加权平均值时,取0.9就像在10个值中计算平均值,有点类似于计算10天的温度平均值,而取0.999就是在1000个值中取平均。

所以和上张幻灯片上的内容类似,如果你想在0.9到0.999区间搜索,那就不能用线性轴取值,对吧?不要随机均匀在此区间取值,所以考虑这个问题最好的方法就是,我们要探究的是 1−β1-\beta1−β ,此值在0.1到0.001区间内,所以我们会给 1−β1-\beta1−β 取值,大概是从0.1到0.001,应用之前幻灯片中介绍的方法,这是 10−110^{-1}10−1 ,这是 10−310^{-3}10−3 ,值得注意的是,在之前的幻灯片里,我们把最小值写在左边,最大值写在右边,但在这里,我们颠倒了大小。这里,左边的是最大值,右边的是最小值。所以你要做的就是在 [−3,−1][-3,-1][−3,−1] 里随机均匀的给 rrr 取值。你设定了 1−β=10r1-\beta=10^r1−β=10r ,所以 β=1−10r\beta=1-10^rβ=1−10r ,然后这就变成了在特定的选择范围内超参数随机取值。希望用这种方式得到想要的结果,你在0.9到0.99区间探究的资源,和在0.99到0.999区间探究的一样多。

所以,如果你想研究更多正式的数学证明,关于为什么我们要这样做,为什么用线性轴取值不是个好办法,这是因为当 β\betaβ 接近1时,所得结果的灵敏度会变化,即使 β\betaβ 有微小的变化。所以 β\betaβ 在0.9到0.9005之间取值,无关紧要,你的结果几乎不会变化。

但 β\betaβ 值如果在0.999到0.9995之间,这会对你的算法产生巨大影响,对吧?在这两种情况下,是根据大概10个值取平均。但这里,它是指数的加权平均值,基于1000个值,现在是2000个值,因为这个公式 11−β\frac1{1-\beta}1−β1​ ,当 β\betaβ 接近1时, β\betaβ 就会对细微的变化变得很敏感。所以整个取值过程中,你需要更加密集地取值,在 β\betaβ 接近1的区间内,或者说,当 1−β1-\beta1−β 接近于0时,这样,你就可以更加有效的分布取样点,更有效率的探究可能的结果。

希望能帮助你选择合适的标尺,来给超参数取值。如果你没有在超参数选择中作出正确的标尺决定,别担心,即使你在均匀的标尺上取值,如果数值总量较多的话,你也会得到还不错的结果,尤其是应用从粗到细的搜索方法,在之后的迭代中,你还是会聚焦到有用的超参数取值范围上。

希望这会对你的超参数搜索有帮助,下一个视频中,我们将会分享一些关于如何组建搜索过程的思考,希望它能使你的工作更高效。

课程PPT





←上一篇 ↓↑ 下一篇→
3.1 调试处理 回到目录 3.3 超参数训练的实践: Pandas vs. Caviar

3.2 为超参数选择合适的范围-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授相关推荐

  1. 3.3 超参数训练实战:Pandas vs. Caviar-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.2 为超参数选择合适的范围 回到目录 3.4 正则化网络的激活函数 超参数训练实战:Pandas vs. Caviar (Hyperparameters Tuning i ...

  2. 4.7 参数 vs 超参数-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 4.6 前向和反向传播 回到目录 4.8 这和大脑有什么关系 参数 vs 超参数 (Parameters vs. Hyperparameters) 想要你的深度神经网络起很好 ...

  3. 3.2 选择最可能的句子-深度学习第五课《序列模型》-Stanford吴恩达教授

    选择最可能的句子 (Picking the most likely sentence) 在seq2seq机器翻译模型和我们在第一周课程所用的语言模型之间有很多相似的地方,但是它们之间也有许多重要的区别 ...

  4. 2.3.1 为超参数选择合适的范围

    调试处理 对于超参数,如何才能找到一个比较好的设定呢? 如图所示,我们可能会需要调试很多的超参数.但其中最重要的超参数还是学习率.被红色圈住的是最重要的超参数,橙色的是次重要的超参数.紫色是再其次重要 ...

  5. 深度学习笔记第二门课 改善深层神经网络 第三周 超参数调试、Batch正则化和程序框架...

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  6. 深度学习系列 -- 第二门课 改善深层神经网络:超参数调试、正则化以及优化(一):深度学习的实践层面(Practical aspects of Deep Learning)

    目录 一.深度学习的实践层面(Practical aspects of Deep Learning) 1 训练,验证,测试集(Train / Dev / Test sets) 2 偏差,方差(Bias ...

  7. 3.2 为超参数选择合适的范围

  8. 5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授

    程序示例–模型选择 在新的一组样本中,我们将通过交叉验证集选择模型,参数 CCC 和 高斯核的参数 δδδ 我们都将在以下 8 个值中选取测试,则总共构成了 8×8=648×8=648×8=64 个模 ...

  9. 3.4 参数展开-机器学习笔记-斯坦福吴恩达教授

    参数展开(Unrolling Parameters) 在神经网络的学习过程中,我们的工作对象面临的是一些矩阵: Θ(1),Θ(2),Θ(3),...Θ^{(1)},Θ^{(2)},Θ^{(3)},.. ...

最新文章

  1. MITOS|线粒体在线注释网站
  2. 如何利用《C++ Primer》学习C++?
  3. 盛骁杰:对于充满好奇心的技术人来说多媒体技术是个宝藏
  4. Springboot初次学习
  5. 剑指offer——面试题35:第一个只出现一次的字符
  6. cmd下特殊字符串的处理
  7. DBCC CHECKDB 数据库或表修复
  8. 机器学习数学基础- gradient descent算法(上)
  9. php 模糊匹配_PHP实现多字段模糊匹配查询的方法
  10. 51单片机驱动LCD12864中文字库显示
  11. 扑克牌斗牛游戏的概率问题
  12. 从网络中获取债券收益率数据
  13. LeetCode: 872. Leaf-Similar Trees
  14. Android原生Switch禁止滑动实现
  15. IDEMIA被选中提供其下一代指纹匹配引擎,成为英国内政部生物识别计划的一部分
  16. 信天游:电视剧《血色浪漫》插曲-杜老汉-拜年
  17. W3school学习 js-2
  18. 核显 linux 软件,同样的核显,看在线视频ubuntu更卡 - Linux系统与应用 - LinuxApp - 水木社区...
  19. 2019-04-28 21:43:41.098 ERROR 2920 --- [nio-8888-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] :
  20. 2017年12月英语六级翻译洞庭湖

热门文章

  1. javaweb里边的重定向与转发的区别
  2. AntData.ORM框架 之 读写分离
  3. SQL Server 2008 R2 开启数据库远程连接
  4. ajax判断用户名是否已经存在
  5. 云计算平台(检索篇)-Elasticsearch
  6. Pair Project: Elevator Scheduler Report By Hu Renjun
  7. 猴子管理法则(网络文摘)
  8. UA MATH636 信息论7 并行高斯信道简介
  9. java虚拟机指令初步学习
  10. 写操作系统用的C语言和写应用程序的C语言不是一个