“Don’t aim for success if you want it; just do what you love and believe in, and it will come naturally.”
[TOC]
、
1 超参数(hyperparameter)
1.1 什么是超参数
In Bayesian statistics, a hyperparameter is a parameter of a prior distribution; the term is used to distinguish them from parameters of the model for the underlying system under analysis.
For example, if one is using a beta distribution to model the distribution of the parameter p of a Bernoulli distribution, then:
- p is a parameter of the underlying system (Bernoulli distribution), and
- α and β are parameters of the prior distribution (beta distribution), hence hyperparameters.
One may take a single value for a given hyperparameter, or one can iterate and take a probability distribution on the hyperparameter itself, called a hyperprior.
——————以上内容来之wiki——————
Ok,上面一堆balabala的似乎有点抽象?那么你可以片面的理解为:在机器学习中,超参数是你设置模型时手动给出的参数(比如:,),并非训练模型时候自动生成的参数(比如:w,b)。
超参数好比训练模型的“旋钮”,你可以通过调节超参数,更快地获得结果,甚至获得更好的结果。
1.2 超参数调节
注:超参数调节目前没有统一的方法,网络上的资料大都是经验总结。
1.2.1 宽泛策略
宽泛策略: 在使⽤神经⽹络来解决新的问题时,⼀个挑战就是获得任何⼀种⾮寻常的学习,也就是说,达到⽐随机的情况更好的结果。
似乎很简单?但是如果训练数据很大,模型极其复杂,训练模型将耗时几天甚至几周。那么如何快速得到反馈呢?
我们可以这样做:
- 减少训练数据,比如:只用20%的训练数据进行验证,这样我们可以提高5倍的速度来得到结果
- 减少神经网络深度,加快训练结果
- 提高监控频率,比如:由原来每5000 次训练后反馈结果,提高成每1000 次。
注意事项:正则化参数λ 和训练数据大小正相关,调整模型时候,需要和训练数据一起做改变。
1.2.2 训练误差调整总结
训练误差调整总结:
- 训练误差应该稳步减小,刚开始是急剧减小,最终应随着训练收敛达到平稳状态。
- 如果训练尚未收敛,尝试运行更长的时间。
-
如果训练误差减小速度过慢,则提高学习速率也许有助于加快其减小速度。
-
- 但有时如果学习速率过高,训练误差的减小速度反而会变慢。
-
如果训练误差变化很大,尝试降低学习速率。
-
- 较低的学习速率和较大的步数/较大的批量大小通常是不错的组合。
- 批量大小过小也会导致不稳定情况。不妨先尝试 100 或 1000 等较大的值,然后逐渐减小值的大小,直到出现性能降低的情况。
重申一下,切勿严格遵循这些经验法则,因为效果取决于数据。请始终进行试验和验证。
1.2.3 超参数调整方法推荐
推荐方法:每次只调整一个超参数,确定好其中一个后再调整其他超参数。
——————来着《Neural Networks and Deep Learning》——————
规范化参数: 我建议,开始时不包含规范化(λ = 0.0),确定 η 的值。使⽤确定出来的 η,我们可以使⽤验证数据来选择好的 λ。从尝试 λ = 1.0 开始,然后根据验证集上的性能10倍的增加或者减少。⼀旦我已经找到⼀个好的量级,你可以改进 λ 的值。这⾥搞定后,你就可以返回再重新优化 η。
学习速率调整: 我们⼀直都将学习速率设置为常量。但是,通常采⽤可变的学习速率更加有效。在学习的前期,权重可能⾮常糟糕。所以最好是使⽤⼀个较⼤的学习速率让权重变化得更快。越往后,我们可以降低学习速率,这样可以作出更加精良的调整。
使⽤提前停⽌来确定训练的迭代期数量: 正如我们在本章前⾯讨论的那样,提前停⽌表⽰在每个回合的最后,我们都要计算验证集上的分类准确率。
⼩批量数据⼤⼩: 选择最好的⼩批量数据⼤⼩也是⼀种折衷。太⼩了,你不会⽤上很好的矩阵库的快速 计算。太⼤,你是不能够⾜够频繁地更新权重的。
1.3 超参数调节在线实例
——————以下超参数调节实例来来自《Google machine learning》——————
答案部分:
将正则化率从 0 增至 0.3 会产生以下影响:
测试损失明显减少。
注意:虽然测试损失明显减少,训练损失实际上却有所增加。这属于正常现象,因为您向损失函数添加了另一项来降低复杂度。最终,最重要的是测试损失,因为它是真正用于衡量模型能否针对新数据做出良好预测的标准。
- 测试损失与训练损失之间的差值明显减少。
- 特征和某些特征组合的权重的绝对值较低,这表示模型复杂度有所降低。
由于数据集具有随机性,因此无法预测哪个正则化率能得出最准确的结果。 对我们来说,正则化率为 0.3 或 1 时,一般测试损失降至最低。