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