一文总结深度学习的优化算法

深度学习的一大特点是海量数据,若我们利用大量的数据训练神经网络,这一训练过程非常缓慢。因此,本文将要介绍深度学习的各种优化算法,若理解了本文介绍的优化算法,未介绍的优化算法的思想没有太大变化,也能很好的理解它。

神经网络都是使用梯度下降这一思想来进行多次迭代,直至满足终止迭代的条件。深度学习的优化算法也是基于梯度下降法这一基础进行发散的,下面一一介绍它们:

1. 批量梯度下降法(Batch Gradient Descent)

批量梯度下降法是计算所有样本的损失函数,然后利用梯度下降法更新模型参数。

优点:由于每一次迭代都用了全部样本,因此损失函数的收敛过程比较稳定。

缺点:当数据量很大时,每一次迭代计算都会计算全部数据的梯度,因此计算速度非常慢。

2. 随机梯度下降法(Stochastic Gradient Descent)

随机梯度下降法是每迭代一次,只计算一个样本的损失函数,然后利用梯度下降法更新参数。

优点:训练速度快

缺点:准确度下降

3. 小批量梯度下降法(mini-Batch Gradient Descent)

根据批量梯度下降法和随机梯度下降法的缺点,对所有样本分割成多个数据集,这些数据集被称为mini-Batch,每个数据集迭代一次都执行批量梯度下降算法更新参数。

4. 动量梯度下降法(Gradient Descent with Momentum)

动量梯度下降法要快于标准的梯度下降法,思想是通过指数加权上一次梯度值,来更新当前的梯度值,目的是使梯度迭代曲线变得平滑,加快了迭代速度。

假设损失函数曲线图:

标准梯度下降法的迭代过程图:

若我们只定性的画出梯度下降迭代曲线图,一个箭头代表迭代一次。

动量梯度下降法能够平滑梯度迭代的过程,原理是平均了前几次迭代的梯度,对于上图的梯度下降迭代曲线图,竖直方向由于平均而变得很小,由于梯度的水平分量都指向同一个方向,因此水平方向的值依然较大,所以动量梯度下降算法能够加快收敛速度。

根据上面的描述,定性的画出动量梯度下降迭代曲线图:

比较两图可知,动量梯度下降收敛的速度提高了,当然实际问题远比这个复杂,文中的例子只是定性的分析下动量梯度下降法收敛速度提高的原因。

动量梯度下降法的公式为:

其中等式右边的表示当前梯度的值,dW表示上一个梯度的值。由上面的公式可知,动量梯度下降算法参数的更新与两个超参数相关,学习率α和权重参数β。

5. RMSprop

RMSprop,全称是root mean square prop算法,也能加速梯度下降算法。

如下图的标准梯度下降算法:

模型包含了两个参数 w 和 b,若我们能够减小参数b方向的梯度,增加参数w方向的梯度,那么就能提高迭代速度,RMSprop算法能够实现。

由上图可知,b方向的梯度较大,w的方向梯度较小,RMSprop用到了动量梯度法的思想,利用加权平均保留了微分的平方。

RMSprop的公式:

参数W,b更新:

因为b方向的梯度较大,W方向的梯度较小,通过上面的等式可以定性的推断,W方向的梯度变化增大了,b方向的梯度较小了。如下图:

其中紫色方向表示标准梯度的迭代过程,绿色方向表示RMSprop方法的梯度迭代过程,由上图可知RMSprop方法加快了收敛过程。

6. Adam算法

Adam算法结合了动量梯度法和RMSprop法,实现过程:

首先初始化:

利用动量梯度下降法的思想更新梯度:

因为初始值的问题,需要梯度进行修正,修正后的梯度:

然后利用RMSprop法更新均方参数:

均方参数也需要修正:

因此,adam的参数更新:

Adam算法能够加速梯度下降过程的原理可参考RMSprop进行推导理解 。

7. 小结

动量梯度法、RMSProp和Adam算法能够适用不同的深度学习结构,我个人建议Adam算法和mini-Batch结合在一起用。

参考:

吴恩达,深度学习公开课

欢迎扫码关注:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值