←上一篇 ↓↑ 下一篇→
2.11 总结 回到目录 3.2 为超参数选择合适的范围

调试处理 (Tuning Process)

大家好,欢迎回来,目前为止,你已经了解到,神经网络的改变会涉及到许多不同超参数的设置。现在,对于超参数而言,你要如何找到一套好的设定呢?在此视频中,我想和你分享一些指导原则,一些关于如何系统地组织超参调试过程的技巧,希望这些能够让你更有效的聚焦到合适的超参设定中。

关于训练深度最难的事情之一是你要处理的参数的数量,从学习速率 α\alphaα 到Momentum(动量梯度下降法)的参数 β\betaβ 。如果使用MomentumAdam优化算法的参数, β1,β2\beta_1,\beta_2β1​,β2​ 和 ϵ\epsilonϵ ,也许你还得选择层数,也许你还得选择不同层中隐藏单元的数量,也许你还想使用学习率衰减。所以,你使用的不是单一的学习率 α\alphaα 。接着,当然你可能还需要选择mini-batch的大小。

结果证实一些超参数比其它的更为重要,我认为,最为广泛的学习应用是 α\alphaα ,学习速率是需要调试的最重要的超参数。

除了 α\alphaα ,还有一些参数需要调试,例如Momentum参数 β\betaβ ,0.9就是个很好的默认值。我还会调试mini-batch的大小,以确保最优算法运行有效。我还会经常调试隐藏单元,我用橙色圈住的这些,这三个是我觉得其次比较重要的,相对于 α\alphaα 而言。重要性排第三位的是其他因素,层数有时会产生很大的影响,学习率衰减也是如此。当应用Adam算法时,事实上,我从不调试 β1,β2\beta_1,\beta_2β1​,β2​ 和 ϵ\epsilonϵ ,我总是选定其分别为 0.9,0.9990.9,0.9990.9,0.999 和 10−810^{-8}10−8 ,如果你想的话也可以调试它们。

但希望你粗略了解到哪些超参数较为重要, α\alphaα 无疑是最重要的,接下来是我用橙色圈住的那些,然后是我用紫色圈住的那些,但这不是严格且快速的标准,我认为,其它深度学习的研究者可能会很不同意我的观点或有着不同的直觉。

现在,如果你尝试调整一些超参数,该如何选择调试值呢?在早一代的机器学习算法中,如果你有两个超参数,这里我会称之为超参1,超参2,常见的做法是在网格中取样点,像这样,然后系统的研究这些数值。这里我放置的是5×5的网格,实践证明,网格可以是5×5,也可多可少,但对于这个例子,你可以尝试这所有的25个点,然后选择哪个参数效果最好。当参数的数量相对较少时,这个方法很实用。

在深度学习领域,我们常做的,我推荐你采用下面的做法,随机选择点,所以你可以选择同等数量的点,对吗?25个点,接着,用这些随机取的点试验超参数的效果。之所以这么做是因为,对于你要解决的问题而言,你很难提前知道哪个超参数最重要,正如你之前看到的,一些超参数的确要比其它的更重要。

举个例子,假设超参数1是 α\alphaα (学习速率),取一个极端的例子,假设超参数2是Adam算法中,分母中的 ϵ\epsilonϵ 。在这种情况下, α\alphaα 的取值很重要,而 ϵ\epsilonϵ 取值则无关紧要。如果你在网格中取点,接着,你试验了 α\alphaα 的5个取值,那你会发现,无论 ϵ\epsilonϵ 取何值,结果基本上都是一样的。所以,你知道共有25种模型,但进行试验的 α\alphaα 值只有5个,我认为这是很重要的。

对比而言,如果你随机取值,你会试验25个独立的 α\alphaα ,似乎你更有可能发现效果做好的那个。

我已经解释了两个参数的情况,实践中,你搜索的超参数可能不止两个。假如,你有三个超参数,这时你搜索的不是一个方格,而是一个立方体,超参数3代表第三维,接着,在三维立方体中取值,你会试验大量的更多的值,三个超参数中每个都是。

实践中,你搜索的可能不止三个超参数有时很难预知,哪个是最重要的超参数,对于你的具体应用而言,随机取值而不是网格取值表明,你探究了更多重要超参数的潜在值,无论结果是什么。

当你给超参数取值时,另一个惯例是采用由粗糙到精细的策略。

比如在二维的那个例子中,你进行了取值,也许你会发现效果最好的某个点,也许这个点周围的其他一些点效果也很好,那在接下来要做的是放大这块小区域(小蓝色方框内),然后在其中更密集得取值或随机取值,聚集更多的资源,在这个蓝色的方格中搜索,如果你怀疑这些超参数在这个区域的最优结果,那在整个的方格中进行粗略搜索后,你会知道接下来应该聚焦到更小的方格中。在更小的方格中,你可以更密集得取点。所以这种从粗到细的搜索也经常使用。

通过试验超参数的不同取值,你可以选择对训练集目标而言的最优值,或对于开发集而言的最优值,或在超参搜索过程中你最想优化的东西。

我希望,这能给你提供一种方法去系统地组织超参数搜索过程。另一个关键点是随机取值和精确搜索,考虑使用由粗糙到精细的搜索过程。但超参数的搜索内容还不止这些,在下一个视频中,我会继续讲解关于如何选择超参数取值的合理范围。

课程PPT





←上一篇 ↓↑ 下一篇→
2.11 总结 回到目录 3.2 为超参数选择合适的范围

3.1 调试处理-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授相关推荐

  1. 吴恩达deeplearning.ai系列课程笔记+编程作业(6)第二课 改善深层神经网络-第二周:优化算法 (Optimization algorithms)

    第二门课 改善深层神经网络:超参数调试.正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning, Regularization and ...

  2. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  3. 1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 理解 Dropout 回到目录 1.9 归一化输入 其他正则化方法 (Other Regularization Methods) 除了 L2L2L2 正则化和随机失活 ...

  4. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  5. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  6. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  7. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  8. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  9. 1.5 为什么正则化有利于预防过拟合-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.4 正则化 回到目录 1.6 Dropout 正则化 为什么正则化有利于预防过拟合呢 (Why regularization reduces overfitting?) ...

最新文章

  1. 《一起学习rgbdSLAM》中g2o部分报错的问题
  2. android webview loadurl本地,Android WebView 使用loadUrl方法执行本地JavaScript
  3. 更改SYS密码,expiry_date 过期时间 没有更新,普通用户更改密码会更新
  4. Hulu直播服务难点解析(三):关键收获
  5. 可以自定义模板的ide_将IDE检查应用于自定义Java批注
  6. php培训出生做微电影网站的,微电影分享网站织梦整站源码
  7. python sanic orm_基于sanic的微服务框架 - 架构分析
  8. Visual Studio的Node.js插件:NTVS 1.0正式发布
  9. Linux上配置jupyter的步骤及与本地映射
  10. iOS之Masonry代码解析
  11. 射频电路中三种基本接收机结构
  12. 计算KL散度与JS散度的MATLAB程序
  13. 【58同城和赶集网简历下载获取】
  14. sprintf函数用法详解
  15. 微信小程序报错 RangeError: WebAssembly.Memory(): could not allocate memory
  16. U盘量产-FC1179-453C98B3766B
  17. JavaScript高级04 正则表达式
  18. PCL三维点云拼接融合技术
  19. FPGA平台开发基础
  20. Kafka HighLevel API与LowLevel API说明

热门文章

  1. java 深克隆(深拷贝)与浅克隆(拷贝)详解
  2. Python——接口开发
  3. whoosh----索引|搜索文本类库
  4. 【Kafka】Kafka-分区数-备份数-如何设置-怎么确定-怎么修改
  5. script 有哪个属性可以让它不立即执行 defer,async
  6. Linux chmod命令详解
  7. addHeaderView()异常 —— setAdapter has already been called
  8. 修改XtraMessageBox的内容字体大小
  9. IE6环境下遭遇winow.location.href=''的跳转bug
  10. 电动力学每日一题 2021/10/23 载流板产生的电磁场