博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度学习超参数简单理解:learning rate,weight decay和momentum
阅读量:3742 次
发布时间:2019-05-22

本文共 1312 字,大约阅读时间需要 4 分钟。

说到这些参数就会想到 Stochastic Gradient Descent (SGD)!其实 这些参数在 caffe.proto 中 对caffe网络中出现的各项参数做了详细的解释。

Learning Rate

学习率决定了权值更新的速度,设置得太大会使结果超过最优值,太小会使下降速度过慢。仅靠人为干预调整参数需要不断修改学习率,因此后面3种参数都是基于自适应的思路提出的解决方案。后面3中参数分别为:Weight Decay 权值衰减,Momentum 动量和Learning Rate Decay 学习率衰减。

\omega_{i}\leftarrow  \omega_{i} - \eta \frac{\partial E}{\partial \omega_{i}}
\omega_{i}\leftarrow  m\cdot \omega_{i} - \eta \frac{\partial E}{\partial \omega_{i}}

Weight decay

在实际应用中,为了避免网络的过拟合,必须对价值函数(Cost function)加入一些正则项,在SGD中加入\eta \lambda \omega _{i}这一正则项对这个Cost function进行规范化:

\omega_{i}\leftarrow  \omega_{i} - \eta \frac{\partial E}{\partial \omega_{i}} - \eta \lambda \omega _{i}

上面这个公式基本思想就是减小不重要的参数对最后结果的影响,网络中有用的权重则不会收到Weight decay影响。

在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网络权值逐渐变大,因此,为了避免出现overfitting,会给误差函数添加一个惩罚项,常用的惩罚项是所有权重的平方乘以一个衰减常量之和。其用来惩罚大的权值。

Momentum 

动量来源于牛顿定律,基本思想是为了找到最优加入“惯性”的影响,当误差曲面中存在平坦区域,SGD就可以更快的学习。

\omega_{i}\leftarrow  m\cdot \omega_{i} - \eta \frac{\partial E}{\partial \omega_{i}}

Learning Rate Decay 

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

\eta \left( s \right) =\frac{\eta _{0} }{1+s\cdot \eta _{n}}

点击这里:

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

关于网络调参,那就是经验。提供的资料:链接: 密码:tkgp

如有错误请指正,谢谢!

转载地址:http://hihin.baihongyu.com/

你可能感兴趣的文章
php(单双引号的区别)
查看>>
php(数据类型)
查看>>
php(运算符及流程控制)
查看>>
php(自定义函数与系统自带函数)
查看>>
php(从一个文件中调用另一个文件的变量)
查看>>
php(数组及相关操作)
查看>>
php(about error and time)
查看>>
利用php对数据库进行操作
查看>>
二叉树及其(前中后)序遍历
查看>>
2020.8.29 ssdh
查看>>
PyCharm使用技巧及常用快捷键
查看>>
ubuntu内存爆满卡住,一顿操作任务栏菜单栏消失再解决办法记录
查看>>
ubuntu下pycharm无法输入中文解决办法(记录)
查看>>
torch.cuda.is_available()返回False的解决办法
查看>>
BITVehicle_Dataset数据集转换
查看>>
将视频转存成图片小代码
查看>>
ImportError: cannot import name ‘Line 解决方法
查看>>
Ubuntu 创建/删除虚拟环境
查看>>
deepsort算法中绘制轨迹部分的代码【记录】
查看>>
C++程序设计作业--坦克大战[分享]
查看>>