深度学习之optimizer优化器

optimizer

优化算法通常只考虑最小化目标函数。其实,任何最大化问题都可以很容易地转化为最小化问题。
很多优化问题并不存在解析解,而需要使用基于数值方法的优化算法找到近似解,即数值解。
为了求得最小化目标函数的数值解,我们将通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。
深度学习模型的目标函数可能有若干局部最优值。当一个优化问题的数值解在局部最优解附近时,由于目标函数有关解的梯度接近或变成零,最终迭代求得的数值解可能只令目标函数局部最小化而非全局最小化。

SGD,Momentum,Adagard,Adam简述

SGD为随机梯度下降,每一次迭代计算数据集的mini-batch的梯度,然后对参数进行更新。

Momentum参考了物理中动量的概念,前几次的梯度也会参与到当前的计算中,但是前几轮的梯度叠加在当前计算中会有一定的衰减。

Adagard在训练的过程中可以自动变更学习的速率,设置一个全局的学习率,而实际的学习率与以往的参数模和的开方成反比。

Adam利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,在经过偏置的校正后,每一次迭代后的学习率都有个确定的范围,使得参数较为平稳。

gradient descent & stochastic gradient descent

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用适当的学习率,沿着梯度反方向更新自变量可能降低目标函数值。梯度下降重复这一更新过程直到得到满足要求的解。学习率过大或过小都有问题。一个合适的学习率通常是需要通过多次实验找到的。当训练数据集的样本较多时,梯度下降每次迭代的计算开销较大,因而随机梯度下降通常更受青睐。

小批量随机梯度下降

在这里插入图片描述
小批量随机梯度每次随机均匀采样一个小批量的训练样本来计算梯度。在实际中,(小批量)随机梯度下降的学习率可以在迭代过程中自我衰减。通常,小批量随机梯度在每个迭代周期的耗时介于梯度下降和随机梯度下降的耗时之间。
在这里插入图片描述

动量法

在这里插入图片描述
动量法使用了指数加权移动平均的思想。它将过去时间步的梯度做了加权平均,且权重按时间步指数衰减。动量法使得相邻时间步的自变量更新在方向上更加一致。

AdaGrad算法

当两个变量的梯度值有较大差别时,需要选择足够小的学习率使得自变量在梯度值较大的维度上不发散。但这样会导致自变量在梯度值较小的维度上迭代过慢。动量法依赖指数加权移动平均使得自变量的更新方向更加一致,从而降低发散的可能。本节我们介绍AdaGrad算法,它根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题。
在这里插入图片描述
在这里插入图片描述
AdaGrad算法在迭代过程中不断调整学习率,并让目标函数自变量中每个元素都分别拥有自己的学习率。使用AdaGrad算法时,自变量中每个元素的学习率在迭代过程中一直在降低(或不变)。

RMSPROP算法

在这里插入图片描述
在这里插入图片描述
RMSProp算法和AdaGrad算法的不同在于, RMSProp算法使用了小批量随机梯度按元素平方的指数加权移动平均来调整学习率。

AdaDelta算法

在这里插入图片描述
AdaDelta算法没有学习率超参数,它通过使用有关自变量更新量平⽅的指数加权移动平均的项来替代RMSProp算法中的学习率。

ADAM算法

Adam算法在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均,
所以Adam算法可以看做是RMSProp算法与动量法的结合。
在这里插入图片描述
在这里插入图片描述
Adam算法在RMSProp算法的基础上对⼩批量随机梯度也做了指数加权移动平均。
Adam算法使用了偏差修正。

你可能感兴趣的:(深度学习,深度学习,机器学习)