调试处理

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

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

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

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

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

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

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

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

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

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

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

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

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

希望,这能给提供一种方法去系统地组织超参数搜索过程。另一个关键点是随机取值和精确搜索,考虑使用由粗糙到精细的搜索过程。

神经网络优化篇:详解调试处理(Tuning process)的更多相关文章

  1. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  2. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  3. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  4. CentOS 7 下编译安装lnmp之PHP篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...

  5. CentOS 7 下编译安装lnmp之MySQL篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...

  6. CentOS 7 下编译安装lnmp之nginx篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168   ...

  7. 详解调试Apache的mod_rewrite模块

    大家都知道Apache里面的Rewrite规则是一件很蛋疼的事情,有时候只是想做一个伪静态而已,不想去研究那些复杂的规则,可官方给的规则又常常出错,出了问题我们就要调试一下,看看提交的参数被映射到了哪 ...

  8. Canal:同步mysql增量数据工具,一篇详解核心知识点

    老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...

  9. c#的dllimport使用方法详解,调试找不到dll的方法

    DllImport会按照顺序自动去寻找的地方: 1.exe所在目录 2.System32目录 3.环境变量目录所以只需要你把引用的DLL 拷贝到这三个目录下 就可以不用写路径了 或者可以这样serve ...

  10. java提高篇-----详解java的四舍五入与保留位

    转载:http://blog.csdn.net/chenssy/article/details/12719811 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么 ...

随机推荐

  1. Python 实现 PDF 到 Word 文档的高效转换(DOC、DOCX)

    PDF(Portable Document Format)已成为一种广泛使用的电子文档格式.PDF的主要优势是跨平台,可以在不同设备上呈现一致的外观.然而,当我们需要对文件内容进行编辑或修改,直接编辑 ...

  2. 设置CentOS7使用代理服务器上网

    用三种方法设置CentOS7使用代理服务器上网 https://zhangyujia.cn/?p=1206 https://www.cnblogs.com/a-du/p/8964048.html 一. ...

  3. 关于腾讯地图geolocation.getLocation 经常定位失败,定位时间过长的解决方法

    今天遇到个项目,腾讯地图定位出现问题,导致地图无法呈现出最近的目标 这是正常的效果,之前一直出现贵州等地点的信息,查看控制台的网络后,发现腾讯的定位失败,要么就是定位时间过长,要20S左右,但是换ED ...

  4. GeoServer发布地图服务(WMS、WFS)

    目录 1. 概述 2. 矢量数据源 3. 栅格数据源 1. 概述 我们知道将GIS数据大致分成矢量数据和栅格数据(地形和三维模型都是兼具矢量和栅格数据的特性).但是如果用来Web环境中,那么使用图片这 ...

  5. Spring 多线程的事务处理

    问题起因 Spring 的 JDBC 相关的依赖库已经提供了对 JDBC 类事务处理的统一解决方案,在正常情况下,我们只需要在需要添加事务的业务处理方法上加上 @Transactional 注解即可开 ...

  6. C++篇:第三章_控制结构_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 三.控制结构 for循环的结束判定条件是boolean型 只要适当地修改代码,就 ...

  7. 华为云API中心:汇聚千行百业API资产,打造API全生命周期极致体验

    摘要:2022年11月9日,华为云全球生态部总裁康宁在华为全联接大会2022上发表"共创新价值,一切皆服务"主题演讲,并发布全新的华为云API中心. 本文分享自华为云社区<华 ...

  8. 一文你带快速认识Vue-Router路由

    摘要:Vue Router是Vue.js 官方的路由管理器.它和Vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发. 本文分享自华为云社区<Vue-Router路由快速了解与应用 ...

  9. 8种桌面IDE CodeArts智能代码补全类型

    摘要:代码补全可以有效的提升开发效率.减少拼写错误和输入代码量.CodeArts 依赖于 codearts.smartassist-java-ls 插件实现代码补全功能. 本文分享自华为云社区< ...

  10. SQL SERVER 查询所有表 统计每张表的大小

    (MySQL查看数据库表容量大小)[https://www.cnblogs.com/vipsoft/p/12145059.html] 查询某数据库中的所有数据表 SELECT name as tabl ...