深度学习中常用的优化算法

机器学习几乎所有的算法都要利用损失函数 lossfunction 来检验算法模型的优劣,同时利用损失函数来提升算法模型。而这个提升的过程就叫做优化(Optimizer)。

下面的内容就是记录一下在深度学习中常用到的几种优化算法,以备日后查询。

1、SGD、BGD、Mini-BGD

把这三个放到一起是因为其有很多共性,接下来就来一一介绍:

1、SGD(随机梯度下降)

SGD(stochastic gradient descent):随机梯度下降,算法在每读入一个数据都会立刻计算loss function的梯度来更新参数.假设loss function为L(w),下同.
在这里插入图片描述
优点:收敛的速度快;可以实现在线更新;能够跳出局部最优

缺点:很容易陷入到局部最优,困在马鞍点.

2、BGD(批量梯度下降)

BGD(batch gradient descent):批量梯度下降,算法在读取整个数据集后累加来计算损失函数的的梯度
在这里插入图片描述
优点:如果loss function为convex(凸面的),则基本可以找到全局最优解

缺点:数据处理量大,导致梯度下降慢;不能实时增加实例,在线更新;训练占内存

3、Mini-BGD(小批量梯度下降)

Mini-BGD(mini-batch gradient descent):顾名思义,选择小批量数据进行梯度下降,这是一个折中的方法.采用训练集的子集(mini-batch)来计算loss function的梯度.
在这里插入图片描述
这个优化方法用的也是比较多的,计算效率高而且收敛稳定,是现在深度学习的主流方法

4、总结

上面的三个方法都存在一个问题,就是update更新的方向完全依赖于计算出来的梯度。所以很容易陷入局部最优的马鞍点

那么能不能改变其走向,又保证原来的梯度方向(就像向量变换一样)呢?
针对这个问题,模拟物理中物体流动的动量概念(惯性),引入Momentum的概念。

2、Momentum(动量梯度下降)

在更新方向的时候保留之前的方向,增加稳定性而且还有摆脱局部最优的能力
在这里插入图片描述
与SGD等优化公式的一个显著区别就是该公式中多加了一项 α Δ ω \alpha\Delta\omega αΔω,加上这一项后,能够实现以下的功能:
若当前梯度的方向与历史梯度一致(表明当前样本不太可能为异常点),则会增强这个方向的梯度,若当前梯度与历史梯方向不一致,则梯度会衰减。

一种形象的解释是:我们把一个球推下山,球在下坡时积聚动量,在途中变得越来越快,η可视为空气阻力,若球的方向发生变化,则动量会衰减。

3、Adagrad(自适应梯度下降)

Adagrad:(adaptive gradient)自适应梯度算法,是一种改进的随机梯度下降算法。
前面的一系列优化算法有一个共同的特点,就是对于每一个参数都用相同的学习率进行更新。但是在实际应用中各个参数的重要性肯定是不一样的,所以我们对于不同的参数要动态的采取不同的学习率,让目标函数更快的收敛。
出现频率较低参数采用较大的α更新.出现频率较高的参数采用较小的α更新.根据描述这个优化方法很适合处理稀疏数据。

具体实现思路是将每一个参数的每一次迭代的梯度取平方累加再开方,用基础学习率除以这个数,来做学习率的动态更新。
在这里插入图片描述
优点:

  1. 前期Gt较小的时候, regularizer较大,能够放大梯度;后期Gt较大的时候,regularizer较小,能够约束梯度
  2. 适合处理稀疏梯度:相当于为每一维参数设定了不同的学习率:压制常常变化的参数,突出稀缺的更新。能够更有效地利用少量有意义样本

缺点:
它计算时要在分母上计算梯度平方的和,由于所有的参数平方必为正数,这样就造成在训练的过程中,分母累积的和会越来越大。这样学习到后来的阶段,网络的更新能力会越来越弱,能学到的更多知识的能力也越来越弱,因为学习率会变得极其小,就会提前停止学习。

4、RMSprop

RMSprop:(root mean square propagation)也是一种自适应学习率方法.不同之处在于,Adagrad会累加之前所有的梯度平方,RMProp仅仅是计算对应的平均值.可以缓解Adagrad算法学习率下降较快的问题.
在这里插入图片描述
特点:
对于RNN效果很好,因为RMSprop的更新只依赖于上一时刻的更新。

5、Adam

Adam:(adaptive moment estimation)是对RMSProp优化器的更新.利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率.
Adam = Adaptive + Momentum,顾名思义Adam集成了SGD的一阶动量和RMSProp的二阶动量。
在这里插入图片描述
优点:每一次迭代学习率都有一个明确的范围,使得参数变化很平稳,所以Adam是实际学习中最常用的优化算法。

6、推荐文章

推荐几篇更详细的文章:
https://blog.csdn.net/u012759136/article/details/52302426
https://blog.csdn.net/qq_23269761/article/details/80901411
https://www.jianshu.com/p/33eed2e1d357

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值