超参数的设定
1.权重初始化。
- 创建神经网络之后,我们需要进行权重和偏置的初始化。之前的方式就是根据独立高斯随机变量来选择权重和偏置,其被归一化为均值为0,标准差1。
- 上种方式获得了不错的效果。但有没有更好的方式。我们会使用均值为0,方差为的高斯随机分布初始化这些权重。其中表示有个输入权重的神经元。此种方法可以加快网络的训练,有时在准确率性能上有很大的提升。而偏置可以继续使用均值为0,标准差为1的高斯分布进行初始化。
2. 值的选取
- :我们选择在训练数据上的代价立即开始下降的 作为估计的阈值。如果代价 时就开始震荡或者增加,那就尝试 ,直到你找到代价在开始回合就下降的设定。这种方法可以对 的量级进行估计。毫无疑问 取值要小于阈值,如果 的值重复使用很多回合的话,你应该使用稍微小一点的值,例如阈值一半的的选择。这样的选择能够允许你训练更多的回合,不会减慢学习速度。
- 我们⼀直都将学习速率设置为常量。但是,通常采用可变的学习速率更加有效。在学习的前期,权重可能非常糟糕。所以最好是使用⼀个较大的学习速率让权重变化得更快。越往后,我们可以降低学习速率,这样可以作出更加精良的调整。
3.规范化参数
- 建议开始时不包含规范化()确定 的值。使用确定出来的 ,我们可以使用验证数据来选择好的 。从尝试 开始,然后根据验证集上的性能按照因子10增加或减少其值。⼀旦我已经找到⼀个好的量级,你可以改进 的值。这⾥搞定后,你就可以返回再重新优化
4.小批量数据大小(minibatch)
- 小批量数据大小的选择其实是相对独立的⼀个超参数(网络整体架构外的参数),所以你不需要优化那些参数来寻找好的小批量数据大小。因此,可以选择的方式就是使用某些可以接受的值(不需要是最优的)作为其他参数的选择,然后进行不同小批量数据大小的尝试,像上面那样调整 。画出验证准确率的值随时间(非回合)变化的图,选择那个得到最快性能的提升的小批量数据大小。得到了小批量数据大小,也就可以对其他的超参数进行优化了。
5.总结
跟随上面的经验并不能帮助你的网络给出绝对最优的结果。实践中,超参数之间存在着很多关系。你可能使用 进行试验,发现效果不错,然后去优化 ,发现这里又对 混在⼀起了。在实践中,⼀般是来回往复进行的,最终逐步地选择到好的值。总之,启发式规则其实都是经验,不是金规玉律。你应该注意那些没有效果的尝试的信号,然后乐于尝试更多试验。特别地,这意味着需要更加细致地监控神经网络行为,特别是验证集上的准确率。在你读这些文章时,特别是进行试验时,会更加清楚的是超参数优化就不是⼀个已经被完全解决的问题。总有⼀些技巧能够尝试着来提升性能。