当前位置:   article > 正文

深度学习通用策略:SGD, weight decay, momentum, normalization含义理解_sgd weight decay

sgd weight decay
1.  weight decay
(权值衰减)的使用既不是为了提高你所说的收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。
2.  momentum
动量是梯度下降法中一种常用的加速技术。对于一般的SGD,其表达式为x<- x-a*dx,,x沿负梯度方向下降。而带动量的momentum项的SGD则写生如下形式:v=B*v-a*dx, x<- x+v 其中B即momentum系数,通俗的理解上面式子就是,如果上一次的momentum(即v)与这一次的负梯度方向是相同的,那这次下降的幅度就会加大,所以这样做能够达到加速收敛的过程。
3.  normalization
如果我没有理解错的话,题主的意思应该是batch normalization吧。batch normalization的是指在神经网络中激活函数的前面,将w*x+b按照特征进行normalization,这样做的好处有三点:
1、提高梯度在网络中的流动。Normalization能够使特征全部缩放到[0,1],这样在反向传播时候的梯度都是在1左右,避免了梯度消失现象。
2、提升学习速率。归一化后的数据能够快速的达到收敛。
3、减少模型训练对初始化的依赖。
4. SGD(随机梯度下降)

此处的SGD指mini-batch gradient descent,关于batch gradient descent, stochastic gradient descent, 以及 mini-batch gradient descent的具体区别就不细说了。现在的SGD一般都指mini-batch gradient descent。

SGD就是每一次迭代计算mini-batch的梯度,然后对参数进行更新,是最常见的优化方法了。即:

g_t=\nabla_{\theta_{t-1}}{f(\theta_{t-1})}

\Delta{\theta_t}=-\eta*g_t

其中,\eta是学习率,g_t是梯度SGD完全依赖于当前batch的梯度,所以\eta可理解为允许当前batch的梯度多大程度影响参数更新

缺点:(正因为有这些缺点才让这么多大神发展出了后续的各种算法)

  • 选择合适的learning rate比较困难- 对所有的参数更新使用同样的learning rate。对于稀疏数据或者特征,有时我们可能想更新快一些对于不经常出现的特征,对于常出现的特征更新慢一些,这时候SGD就不太能满足要求了
  • SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/349760
推荐阅读
相关标签
  

闽ICP备14008679号