这是深度学习笔记第十四篇,完整的笔记目录可以点击这里查看。
  
  训练神经网络会涉及到许多超参数设置。神经网络中最常见的超参数包括:

  • the initial learning rate
  • learning rate decay schedule (such as the decay constant)
  • regularization strength (L2 penalty, dropout strength)

  但正除此之外,还有许多相对不太敏感的超参数,例如在单参数自适应学习方法中,动量的设置及其schedule等方面。在本节中,我们将介绍一些执行超参数搜索的tips和tricks:

1. Implementation

  大型神经网络通常需要很长时间来训练,因此执行超参数搜索可能需要很多天/周的时间。记住这一点很重要,因为它会影响代码库的设计。一种特殊的设计是让一个worker不断地对随机超参数进行采样并执行优化。在训练期间,worker将跟踪每个epoch之后的validation performance,并将模型检查点(以及其他训练统计信息,如随时间的损失 the loss over time)写入文件,最好是在共享文件系统上。将validation performance直接包含在文件名中是很有用的,这样可以方便地检查和排序进度。然后还有第二个程序,我们称之为master,它在计算集群中启动或终止worker,还可以检查worker编写的检查点,绘制他们的训练统计数据等。

2. Prefer one validation fold to cross-validation

  在大多数情况下,一个大小合适的单一验证集大大简化了代码库,而不需要多次交叉验证。你会听到人们说他们“交叉验证”了一个参数,但很多时候都假设他们仍然只使用了一个验证集。

3. Hyperparameter ranges

  在对数尺度上搜索超参数。例如,学习率的典型抽样如下learning_rate = 10 ** uniform(-6, 1)。也就是说,我们从 一个均匀分布中生成一个随机数,然后把它乘以10的幂。正则化强度也应采用相同的策略。直观地说,这是因为学习率和正则化强度对training dynamics有乘法效应(multiplicative effects)。例如,当学习率为0.001时,学习率加0.01的固定变化对dynamics有很大影响,而当学习率为10时,几乎没有影响。这是因为在更新中学习率和计算的梯度相乘了。因此,将一个范围内的学习率乘以或除以某个值,比将这个范围内的学习率乘以或减去某个值要合适得多。一些参数(如dropout)通常在原始比例(original scale)中搜索(如dropout = uniform(0,1))。

4. Prefer random search to grid search

  正如Bergstra and Bengio在Random Search for Hyper-Parameter Optimization上所说的:“randomly chosen trials比trials on a grid更有效”。事实证明,这通常也更容易实现。
  图片来自论文Random Search for Hyper-Parameter Optimization,要更深入了解可以下载来仔细阅读。
  通常情况下,某些超参数比其他超参数更重要(例如图中顶部的超参数与左侧的超参数相比)。相比于网格搜索,执行随机搜索可以更精确地发现重要值。

5. Careful with best values on border

  有时可能发生的情况是,你正在一个坏的范围(bad range)内搜索一个超参数(如学习率)。例如,假设我们使用learning_rate = 10 ** uniform(-6, 1)。一旦我们获取到结果,重要的是要再次检查最终的学习率不在此间隔的边缘,否则你可能会错过超出此间隔的更优化的超参数设置。

6. Stage your search from coarse to fine

  在实践中,一个好的方法是首先在粗略范围(例如10**[-6,1])中搜索,然后根据最佳结果出现的位置缩小范围。此外,在只训练1个epoch或更少epoch的情况下进行初始粗搜索也是有帮助的,因为许多超参数设置会导致模型根本不进行学习,或者因为无穷大的代价(infinite cost)而直接崩溃,代价是无限的。然后,第二阶段可以对5个epochs执行更窄的搜索,最后一阶段可以在最终范围内对更多epochs执行详细搜索。

7. Bayesian Hyperparameter Optimization

  贝叶斯超参数优化是一个致力于提出更有效地寻找超参数空间的算法研究领域。其核心思想是在查询不同超参数下的性能时,适当地平衡exploration - exploitation之间的权衡。在这些模型的基础上还开发了多个库,其中一些比较著名的是Spearmint、SMAC和Hyperopt。然而,在使用ConvNets的实际环境中,carefully-chosen intervals击败random search仍然是相对困难的。



*本博客翻译总结自CS231n课程作业网站,该网站需要翻墙才能访问。

深度学习笔记(十四)—— 超参数优化[Hyperparameter Optimization]相关推荐

  1. HALCON 20.11:深度学习笔记(5)---设置超参数

    HALCON 20.11:深度学习笔记(5)---设置超参数 HALCON 20.11.0.0中,实现了深度学习方法.关于超参数的有关设置内容如下: 不同的DL方法被设计用于不同的任务,它们的构建方式 ...

  2. 吴恩达深度学习笔记7-Course2-Week3【超参数调试、Batch 正则化和程序框架】

    超参数调试.Batch 正则化和程序框架 一.超参数调试(hyperparameter tuning) 推荐的超参数重要性排序: 1.学习率(learning rate): α 2.隐藏神经单元(hi ...

  3. 动手深度学习笔记(四十)7.4. 含并行连结的网络(GoogLeNet)

    动手深度学习笔记(四十)7.4. 含并行连结的网络(GoogLeNet) 7.4. 含并行连结的网络(GoogLeNet) 7.4.1. Inception块 7.4.2. GoogLeNet模型 7 ...

  4. 动手深度学习笔记(四十五)8.1. 序列模型

    动手深度学习笔记(四十五)8.1. 序列模型 8.1. 序列模型 8.1.1. 统计工具 8.1.1.1. 自回归模型 8.1.1.2. 马尔可夫模型 8.1.1.3. 因果关系 8.1.2. 训练 ...

  5. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  6. 深度学习笔记(四)(1)卷积神经网络

    深度学习笔记(四)(1)卷积神经网络 返回目录 终于到了.... 1.1 计算机视觉(Computer vision) 图象识别.目标检测.风格迁移. 但在应用计算机视觉时要面临一个挑战,就是数据的输 ...

  7. Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理

    Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...

  8. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

  9. 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

    目录 0. 前言 1. LeNet-5 2. AlexNet 3. VGG-16 4. ResNet 残差网络 5. Inception Network 如果这篇文章对你有一点小小的帮助,请给个关注, ...

最新文章

  1. element tree不刷新视图_不懂Linux Device Tree,被新人嘲笑之后,含泪写完
  2. java 18 -4 LinkedHashMap集合
  3. 如何将SAP Spartacus的默认home页面替换成login页面 - ProtectedRoutesService
  4. java封装拦截请求_Retrofit,OkHttp拦截器,RxJava封装请求网络
  5. 软件工程实践2017第一次作业
  6. JAVA基础学习预科部分 (Markdown + dox)2021/2/22持续更新中
  7. androidstudio调用系统相机为什么resultcode一直返回0_函数递归调用?看这文就够了...
  8. VMware 虚拟机不能联网的解决办法
  9. nodejs中使用node-sass
  10. 扇贝和不背单词_你还没找到中意的背单词APP?我都试过,我来帮你盘点盘点
  11. 好用的文件批量改名工具推荐
  12. 一文读懂华为智能网联汽车产业链布局
  13. <论文阅读> DI-FODO — 3D距离传感器的快速视觉里程计
  14. 大数据来临,商业银行面对合规挑战!
  15. Java菜鸟逆袭之基础语法下
  16. 计算机课教学常规要求,职业学校计算机专业常规课堂教学模式探究
  17. Android学习之Socket多个客户端即时通信聊天
  18. 关于使用gml数据格式的一点体会
  19. Arduino提高篇02—OLED屏汉字显示
  20. Python学习总结

热门文章

  1. Flask基础(一)
  2. Java中List集合的遍历
  3. Ubuntu搭建博客typecho
  4. 中业科技机器人_哈尔滨东昂中业科技开发有限公司
  5. 【Dear Imgui】组件的使用之Text
  6. 【笔记】web安全基础
  7. 过滤微信昵称emoji表情
  8. c语言停车场管理系统实验报告,停车场实验报告..doc
  9. 中国移动ML302模组(4G Cat.1 通信模组)TencentOS-tiny AT模组框架适配
  10. 访谈编码怎么做_用户调研报告如何做?访谈-整理-报告?