[DeeplearningAI笔记]02_3.1-3.2超参数搜索技巧与对数标尺
2017-10-29 10:46
621 查看
Hyperparameter search
超参数搜索
觉得有用的话,欢迎一起讨论相互学习~Follow Me
3.1 调试处理
需要调节的参数
级别一:α学习率是最重要的需要调节的参数级别二:
Momentum参数 β 0.9是个很好的默认值
mini-batch size,以确保最优算法运行有效
隐藏单元数量
级别三:
层数 , 层数有时会产生很大的影响.
learning rate decay 学习率衰减
级别四:
NG在使用Adam算法时几乎不会调整β1,β2,ϵ的大小一般会使用默认的选定值,即β1=0.9,β2=0.999,ϵ=10−8
如何选择参数
solution1随机取值
在早期的机器学习算法中,如果你有两个需要选择的超参数–超参一和超参二,常见的做法是在网格中取样点,然后系统的研究这些数值.![](http://ww1.sinaimg.cn/large/0060lm7Tly1fkvmqexln3j30a309zab8.jpg)
在参数较少的时候,此方法的确很实用,但是对于参数较多的深度学习领域,我们常做的是随机选择点.这个方法是因为对于你要解决的问题而言,你很难提前知道那个超参数最重要.
![](http://ww4.sinaimg.cn/large/0060lm7Tly1fkvmqh5p36j30ae0a8t9u.jpg)
这个问题,我们可以这样来理解.
假设超参数一指的是学习率α,超参数二是Adam算法中的ϵ,在这种情况下,我们知道α很重要,但是ϵ的取值却无关紧要,如果你在网格中取点,接着你试验了α的5个取值,那你会发现无论ϵ如何取值,结果基本上都是一样的.所以即使你考虑了25个值,但进行实验的α值只有5个
对比而言,如果你随机取值,你会试验25个独立的α值,所以你似乎会更可能发现效果更好的取值.
对于高维参数
例如如果你有三个参数,你搜索的不是一个平面,而是一个立方体.超参数三代表第三维,接着在这个三维空间中取值,你会试验大量的更多的值.
![](http://ww3.sinaimg.cn/large/0060lm7Tly1fkvn9jzwp0j30cw0c9jtn.jpg)
实际中,你会在一个更高维的空间中寻找超参数,随机取值,代表了你探究了更多超参数的潜在值.
solution2粗糙到精确取值
另一个惯例是采用有粗糙到精细的策略比如你在二维的例子中,你进行了取值,也许你会发现效果更好的某个点,也许这个点周围的其他一些点效果也很好,那么接下来你需要放大这块小区域,然后在其中更密集的随机取值,聚集更多的资源,在这个红色的方格中进行搜索,然后逐渐缩小范围,直到到达一个满意的取值
![](http://ww4.sinaimg.cn/large/0060lm7Tly1fkvo04osqpj30iu0ecwf8.jpg)
3.2 为超参数选择合适的范围
用对数标尺搜索超参数空间
在超参数范围中,随机取值可以提升你的搜索效率,但是随机取值并不是在有效值的范围内的随机均匀取值,而是选择合适的标尺,这对于探究这些超参数很重要整数范围
假设你要选取的隐藏单元的数量的值的数值范围是50 ~ 100中的某点,或者是层数20 ~ 40,只需要平均的随机从20 ~ 40的范围中选取数字即可.超参数学习率α
假设你要搜索的学习率的范围在0.0001 ~ 1的范围中如果使用随机均匀取值(即数字出现在0.0001 ~ 1的范围内的概率相等,出现概率均匀)
那么使用上述方法,90%的数值会落在0.1 ~ 1之间,结果就是0.1 ~ 1之间,应用了90% 的资源,而在0.0001到1之间,只有10%的搜索资源
使用对数标尺搜索超参数的空间更加合理
![](https://i.loli.net/2017/10/29/59f533d7cd96d.jpg)
在对数轴上均匀随机取点,这样在0.0001到0.001之间,会有更多的搜索资源可以使用.
在python中,你可以这样实现.
使r=-4*np.random.rand()[np.random.rand()创建一个给定类型和形状的数组,将其填充到一个均匀分布的随机样本[0,1)中]
α随机取值α=10r,从第一行可以得出rϵ[−4,0],那么α在10−4到100之间
更常见的是取值范围是10a−10b的一个区间,你可以通过log100.0001算出a的值即-4.在右边的值是10b,log101=0得到b的值是0.
在[a,b]区间随机均匀的给r取值,将超参数设置为10r,这就是在对数轴上取值的过程.
β计算指数加权平均值
假设β=0.9−0.999,对于指数加权平均值,若β=0.9即是取10天中的平均值,若β取0.999即是在1000个值中取指数加权平均值.对于β=0.9−0.999考虑(1−β)即0.001−0.1,所以去rϵ[−3,−1]则这是超参数的随机取值.
对于公式11−β,当β接近于1时,β就会会对细微的变化十分敏感
β1=0.9000→0.9005,无论β1=0.9000还是0.9005对于11−β1都没有很大影响.
但是当β的取值十分接近于1的时候,例如β2=0.999→0.9995,11−0.999=1000表示在1000个数据中取平均11−0.9995=2000表示在2000个数据中取平均,很接近1时看似微小的改动都会带来巨大的差异!
相关文章推荐
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法
- [DeeplearningAI笔记]Batch NormalizationBN算法Batch归一化_02_3.4-3.7
- [DeeplearningAI笔记]Multi-class classification多类别分类Softmax regression_02_3.8-3.9
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--week3 超参数调试、Batch正则化和程序框架
- DeepLearning.ai code笔记2:超参数调试、正则化以及优化
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
- DeepLearning.ai学习笔记(五)序列模型 -- week2 自然语言处理与词嵌入
- Coursera deeplearning.ai 深度学习笔记1-1-Introduction to deep learning
- [DeeplearningAI笔记]ML strategy_1_1正交化/单一数字评估指标
- Fast.ai: Practical Deep Learning for coders 课程学习笔记:Part1 Lesson1 (Lesson0)
- [DeeplearningAI笔记]ML strategy_2_4端到端学习
- Coursera deeplearning.ai 深度学习笔记2-2-Optimization algorithms-优化算法与代码实现
- Fast.ai: Practical Deep Learning for coders 课程学习笔记:Part1 Lesson1 (Lesson0)
- [DeeplearningAI笔记]ML strategy_2_1误差分析
- deeplearning.ai学习笔记(一)
- DeepLearning.ai学习回顾笔记之三( Structuring Machine Learning Projects)
- [DeeplearningAI笔记]ML strategy_2_2训练和开发/测试数据集不匹配问题
- [DeeplearningAI笔记]神经网络与深度学习4.深度神经网络
- Deeplearning.ai学习笔记-神经网络和深度学习(二)