热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

改善深层神经网络:超参数调整、正则化以及优化——3.2为超范围

上一节已经看到,在超参数范围内,随机取值可以提升搜索效率,但随机取值并不是在有效范围内的随机均匀取值,而是选择合适的标尺用于

上一节已经看到,在超参数范围内,随机取值可以提升搜索效率,但随机取值并不是在有效范围内的随机均匀取值,而是选择合适的标尺用于探究超参数。

假设要选取隐藏单元的数量n[l]n^{[l]}n[l],对于给定层,假设选择的取值范围是从50到100中某点,这种情况下,对于50-100的数轴,可以随机在其上取点,这是一个搜索特定超参数的很直观的方式。

或者如果要选取神经网络的层数,称之为字母L,也许会选择层数为2到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,1,在对数轴上均匀随机取点,这样在0.0001到0.001之间就会有更多的搜索资源可,还有在0.001到0.01之间等等。分别取对数可以得到0.0001-1之间的对数范围是-4-0,然后可以设置α\alphaα的值,基于随机取样的超参数值α=10r\alpha=10^rα=10r。所以总结一下,在对数坐标上取值,取最小值的对数得到a值,取最大值的对数得到b值,所以现在在对数轴上的10a10^a10a10b10^b10b区间取值,在a和b之间随机均匀的选取r值,将超参数设置为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的对数取值为-1,0.001的对数取值为-1。这里设定了1−β=10r1-\beta=10^r1β=10r,所以β=1−10r\beta=1-10^rβ=110r,然后这就变成了超参数随机取值。


推荐阅读
author-avatar
骏天天在线
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有