美文网首页机器学习
深度学习中优化的总结

深度学习中优化的总结

作者: 路过的飞碟 | 来源:发表于2020-11-26 17:23 被阅读0次

SGD:
批量梯度下降
对于训练数据集,我们首先将其分成n个批量,每个批量包含m个样本。我们每次更新都利用一个批量的数据,而非整个训练集。即:

η为学习率
gt为x在t时刻的梯度。

训练数据太多相似训练样例过多,利用整个数据集更新往往时间上不显示。

批量的方法可以减少机器的压力,并且可以更快地收敛

举例
以一个极端情况为例,若训练集前一半和后一半梯度相同。那么如果前一半作为一个批量,后一半作为另一个批量,那么在一次遍历训练集时,批量的方法向最优解前进两个步骤,而整体的方法只前进一个步骤。

Momentum:
动量法
SGD方法的一个缺点是,其更新方向完全依赖于当前的批量,因而其更新十分不稳定。

它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前批量的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力:

ρ 即动量,表示要在多大程度上保留原来的更新方向,这个值在0-1之间,在训练开始时,由于梯度可能会很大,所以初始值一般选为0.5;
当梯度不那么大时,改为0.9。
η 是学习率,即当前批量的梯度多大程度上影响最终更新方向
跟普通的SGD含义相同。ρ 与 η 之和不一定为1。

Nesterov Momentum
牛顿动量法
对传统momentum方法的一项改进

1.按照原来的更新方向更新一步(棕色线),
2.在该位置计算梯度值(红色线),
3.用这个梯度值修正最终的更新方向(绿色线)。
上图中描述了两步的更新示意图,其中蓝色线是标准momentum更新路径。

Adagrad
其实是对学习率进行了一个约束

此处,对gt从1到t进行一个递推形成一个约束项:

ε用来保证分母非0

优点:
1.gt较小时,约束项较大,可以放大梯度
2.gt较大时,约束项较小,可以约束梯度
3.适合处理稀疏梯度

缺点:
1.依赖人工设定全局学习率
2.学习率过大,约束项过于敏感,梯度调节过大
3.中后期,分母上梯度平方的累加将会越来越大,使得约束项趋于0,训练提前结束

Adadelta

Adadelta是对Adagrad的扩展
最初方案依然是对学习率进行自适应约束,但是进行了计算上的简化
Adagrad会累加之前所有的梯度平方
Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是近似计算对应的平均值。即:

在此处Adadelta其实还是依赖于全局学习率的,但是作者做了一定处理,经过近似牛顿迭代法(求根点)之后:

E是求期望

此时Adadelta已经不用依赖于全局学习率了。

特点:
1.训练初中期,加速效果不错,很快
2.训练后期,反复在局部最小值附近抖动

RMSprop
RMSprop 可看作Adadelta的一个特例:
当ρ为0.5时

变为了求梯度平方和的平均数。

再求根的话,就变成了RMS(均方根):

可将RMS就可以作为学习率η的一个约束:

特点:
1.RMSprop依然依赖于全局学习率
2.RMSprop算是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间
3.适合处理非平稳目标- 对于RNN效果很好

Adam

本质上是带有动量项RMSprop
利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率
Adam的优点主要在于经过偏置校正后每一次迭代学习率都有个确定范围,使得参数比较平稳。公式如下:

mt为对梯度的一阶矩估计
nt为对梯度的二阶矩估计
u和v为衰减率,u通常为0.9
v通常为0.999,可以看作对期望E|gt|和E|g^2..t|
mt~是对mt的校正
nt~是对nt的校正
mt和nt可以近似为对期望的无偏估计
直接对梯度的矩估计对内存没有额外的要求,而且可以根据梯度进行动态调整

对学习率形成一个动态约束,而且有明确的范围。

特点:
1.结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
2.对内存需求较小
3.为不同的参数计算不同的自适应学习率
4.也适用于大多非凸优化- 适用于大数据集和高维空间

Adamax
Adamax是Adam的一种变体,此方法对学习率的上限提供了一个更简单的范围。公式上的变化如下:

Adamax学习率的边界范围更简单

Nadam
Nadam类似于带有Nesterov动量项的Adam。公式如下:

Nadam对学习率有了更强的约束同时对梯度的更新也有更直接的影响。一般而言,在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。

动态图理解
损失平面等高线

鞍点处的比较

相关文章

  • 优化问题记录

    优化问题可选解: optimizer优化算法总结 - CSDN博客 深度学习最全优化方法总结比较(SGD,Adag...

  • 深度学习中优化的总结

    SGD:批量梯度下降对于训练数据集,我们首先将其分成n个批量,每个批量包含m个样本。我们每次更新都利用一个批量的数...

  • 动手学深度学习(六) 凸优化

    优化与深度学习 优化与估计 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目...

  • 凸优化,梯度下降和优化算法进阶

    1. 凸优化 优化方法目标:训练集损失函数值深度学习目标:测试集损失函数值(泛化性) 1.1 优化在深度学习中的挑...

  • 优化算法学习

    凸优化 尽管优化方法可以最小化深度学习中的损失函数值,但本质上优化方法达到的目标与深度学习的目标并不相同。 优化方...

  • 机器学习策略总结

    内容是对吴恩达老师深度学习课程的第三课机器学习策略内容的总结。 为什么要机器学习策略? 当你尝试优化一个深度学习系...

  • 深度学习优化器总结

    Batch gradient descent 每次更新我们需要计算整个数据集的梯度,因此使用批量梯度下降进行优化时...

  • 深度学习优化器总结

    一.优化器算法简述 首先来看一下梯度下降最常见的三种变形 BGD,SGD,MBGD,这三种形式的区别就是取决于我们...

  • 花书 深度模型中的优化(阅读笔记)

    深度学习(花书) 第二部分 深度网络:现代实践 第八章 深度模型中的优化 本章主要关注数值优化问题:寻找神经网络上...

  • 【教程】Tensorflow vs PyTorch —— 自动求

    image from unsplash.com by @johnwestrock 在深度学习中,网络参数的优化是通...

网友评论

    本文标题:深度学习中优化的总结

    本文链接:https://www.haomeiwen.com/subject/zwfziktx.html