天天看点

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

先看几个公式!

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

 ........ (1)

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum
weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

......(2)

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

.........(3)

超参数是指机器学习模型里面的框架参数,和训练过程中学习的参数(权重)不一样,超参数通常是手工设定,不断试错调整,或者对一系列穷举出来的参数组合一通进行枚举(网格搜索)。

深度学习和神经网络模型,有很多这样的参数需要学习。时至今日,非参数学习研究正在帮助深度学习更加自动的优化模型参数选择,当然有经验的专家仍然是必须的。

Learning Rate (gradient coefficient)

上面(1)式中的

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

学习率决定了权值更新的速度,设置得太大会使结果超过最优值,太小会使下降速度过慢。

Weight decay (regularization coefficient)

上面(2)式中的

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

在实际应用中,为了避免网络的过拟合,必须对误差函数E(网络术语中也叫损失函数loss function,是一个意思)正则化(regularization)处理,即加入正则项。

在机器学习或者模式识别中,过拟合overfitting的出现,往往是因为网络权值变得过大,换句话说,参数过大往往是因为数据的高频跳跃成份所导致,因此,避免出现overfitting的办法就是想办法抵消这些过大的参数值,也就是给误差函数添加一个惩罚项,如(2)式所示。

正则化的基本思想就是通过惩罚项来消减不必要的过大的参数(有人把这比喻成奥卡姆剃刀),通过惩罚项,消除这些不必要的值的影响,使曲线更平滑。对最后结果的影响是,网络中重要的权重不会受到Weight decay影响。

进一步参考wikipedia Regularization.

Momentum

上面(3)式中的

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

动量来源于牛顿定律,基本思想是为了找到最优加入“惯性”的影响。例如,当误差曲面中存在平坦区域时,我们可以通过调整这个值使权值加大(加重),从而在每次递推时(iteration),迈出更大的步伐,加速收敛。

一个典型的m就是,通过积累历史搜索方向(典型的就是在SGD中,通过线性组合以前的历史搜索方向来更新当前的方向),避免或者说消除与以前搜索方向相反的方向(怎么看都像是共轭梯度法呀,只不过没有明确的共轭方向,因而不能保证共轭;当然,这里确实可以另改为采用共轭的方向)。

至于说跳离局部最小值,主要还是SGD的功劳,momentum在其中只是辅助的。

建议参考:https://www.zhihu.com/question/24529483

注:这里只是示意,(3)式一般文献中标准的写法为

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

其中

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

为momentum coefficient,它是上一次权重的变化量的系数,另一种写法对应关系如下

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

则可写成参考【1】所示的形式

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum
Learning Rate Decay

该方法是为了提高寻优能力,具体做法就是每次迭代的时候减少学习率的大小。

在训练模型的时候,通常会遇到这种情况:我们平衡模型的训练速度和损失(loss)后选择了相对合适的学习率(learning rate),但是训练集的损失下降到一定的程度后就不再下降了,比如training loss一直在0.8和0.9之间来回震荡,不能进一步下降。如下图所示:

weight_decay一般设置为多少_也来说说超参数 learning rate,weight decay和momentum

遇到这种情况通常可以通过适当衰减学习率(learning rate)来实现。也就是让学习率随着训练的进行逐渐衰减,放缓在平缓区的学习,比如说线性衰减(如每过5个epochs学习率减半)或指数衰减(如每过5个epochs将学习率乘以0.9)

至于如何调节参数,可参考专业文献,如:

https://arxiv.org/pdf/1803.09820.pdf

a disciplined approach to neural network hyper-parameters: part 1 – learning rate, batch size, momentum, and weight decay

https://arxiv.org/pdf/1708.07120.pdf

Super-Convergence: Very Fast Training of Neural Networks Using Large Learning Rates

参考

【1】:https://inst.eecs.berkeley.edu/~cs182/sp06/notes/backprop.pdf

【2】:CS231n Convolutional Neural Networks for Visual Recognition

【3】:http://www.cs.toronto.edu/~fritz/absps/momentum.pdf