Optimizer优化器总结

    在训练深度学习模型的时候,我们要使用优化算法不断迭代模型参数以降低模型损失函数的值。在深度学习问题中,我们通常要预定义一个损失函数(L1,L2等Loss),在模型训练过程中,这样的损失函数通常被称为目标函数。优化算法的目标损失函数通常是一个基于训练数据集的损失函数,优化目标是为了降低训练误差,但是在降低训练误差以外还要注意过拟合,后面将介绍防止过拟合的相关方法。

    在优化过程中,我们经常会遇到局部最小值以及鞍点来干扰我们找到全局最小点。假设一个函数的输入为k维向量,输出为标量,那么它的海森矩阵有k个特征值:在梯度为0时,(1)当k个特征值全为正时,该函数得到局部最小值;(2)当k个特征值全为负值时,该函数得到局部最大值;(3)当k个特征值有正有负时,该函数得到鞍点(可能有的值在局部最小,有的值在局部最大)。

1  梯度下降以及随机梯度下降

1.1  为了让大家清楚梯度下降,下面对一维进行梯度下降解析。

泰勒公式为:,当x=x+u(u为接近于0的值),a=x,则我们可以得到,当u足够小时,我们可以将后面舍去。f'(x)为f(x)在x处的梯度,通过将u替换为,所以我们可以得到,由于恒大于0,因此,因此可以通过来迭代x,从而优化目标函数。若学习率太大,则会造成前面公式不成立,会导致并不是沿着梯度下降的方向运行。

2  随机梯度下降

    ,f(x)为损失函数(例如x1**2+x2**2(x为一个向量)),⽬标函数在x处的梯度计算为,使用梯度下降的话,自变量的迭代随着数目的增加次数增大,因此训练集数目很大的时候会导致计算开销比较高,因此为了减少迭代的开销,提出了随机梯度下降,但是随机梯度下降会造成计算资源的浪费。因此,提出了批量梯度下降。

3  小批量随机梯度下降

    但是基于suiji随机采样得到的方差在迭代过程中无法减少,因此在实际中,使用的是自我衰减的学习率,如

当批量较大时,每个小批量中可能含有更多的冗余信息,因此为了得到更好地解,批量较大需要更多的数据集。

4  动量法(使用了加权移动平均)

    在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新变量,然而迭代方向仅仅取决于自变量当前位置,可能带来一些问题:(1)在目标函数确定下,同一位置上,目标函数在竖直方向或者水平方向的斜率不在一个量级上,因此给定一个确定的准确率会使得震荡,甚至越过目标函数的最优解,若不想避免,使用小的学习率会使得收敛速度变慢。因此提出了动量法,来通过结合时间序列来不断地优化自变量。

5  AdaGrad算法

    通过根据每个维度的梯度值来调整各个维度的学习率,这样可以避免统一的学习率难以适应所有维度的问题。

每个时间步的对应的梯度响应值,通过求解梯度的反解来进行更新x参数,如果偏导数一直很大,那么该方法使得学习率下降的很快,但是由于分母一直在增加后面可能导致学习率为0,到训练后期变不能进行更新参数。

6  RMSProp

    为了解决AdaGrad方法,RMSProp通过引进指数加权移动平均方法,来调节学习率,使得学习率只受到离他距离较近的学习率影响。

。RMSProp算法状态变量是对平方项gt的指数加权移动平均,所以可以看成是最近的个时间步小批量随机梯度平方项的加权平均。

7  Adam

    Adam在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。通过融合动量法以及RMSProp以及

但是(1)中当t较小时,过去的各个时间步小批量随机梯度权值会比较小,因此为了增加过去各时间步小批量随机梯度权值为1,因此做了偏差修正,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值