【八股文-机器学习】梯度下降策略

综述

对于深度学习模型算法,一般采用梯度下降算法进行迭代优化。对于损失函数图片说明 ,其梯度代表着该函数上升速度最快方向,所以我们为了使损失函数最低,则对于所有参数图片说明 需要沿着其负方向进行优化,而每次优化的步长图片说明 叫做学习率,通常是一个很小的正数,所以t+1时的参数更新公式就可以写为图片说明

其中图片说明 代表函数梯度,也就是导数。

指数加权移动平均数

图片说明
其中图片说明 代表瞬时值,所以当前的移动平均等于上一个时刻的移动平均和当前值的加权和。
通过等价替换,上式还可以化简为:
图片说明
通过上式我们可以发现,对于每个瞬时值,其权重是不一样的,并且越靠近当前值,权重越高。因为图片说明 小于1.同时,通过这个式子,我们可以近似看作只计算了图片说明 个时刻内的数据,因为再往前,系数图片说明 会缩小很多可以忽略不计。

冲量梯度下降算法

其更新方程为:
图片说明
图片说明
从式子中可以看出,更新梯度时,还会考虑一个冲量的累计值图片说明 。而这个冲量就是之前梯度的指数加权移动平均值。

冲量梯度算法改进(NAG)

相比于冲量梯度下降更新算法,它的速度会更加快,核心就是将冲量变为指数加权移动平均值。
图片说明
图片说明
如下图所示,普通冲量梯度下降策略,方向加的是当前的梯度方向,但是优化后的加的是当前再往累计梯度更新方向上的梯度,所以降落的点会更靠近底部,收敛的会更快。
图片说明

自适应梯度下降算法(AdaGrad)

说明一下,同或运算符代表两个相同则为真,在这里则表示(a+b)*(a+b) = a^2 + b^2,即我们只考虑相同对应参数的梯度的累乘操作,其结果代表同一个参数,梯度的累积。

图片说明
图片说明
其中,加了参数是防止除0,另外由于分母是逐渐增大的,所以衰减速率是逐渐变慢的。对于陡坡,梯度很大,对与坡底,由于其梯度接近0,梯度很小。所以我们希望在陡坡能以较大步长移动,在坡底以较小步长移动,所以自适应梯度下降策略可以很好的实现这一点,因为在陡坡的时候s很大,步长衰减的很快。这也导致一个问题,就是步长衰减太快,训练会很快就结束了。

自适应梯度下降优化(RMSprop)

核心是对s加入了一个超参来控制
图片说明
图片说明

此时,s就是梯度积的指数加权移动平均值,当超参取0.9时,s会很平稳,一定程度上将峰值的可能性缓和到一定区间,也可以避免学习率下降很快的问题(主要是避免突然一次梯度平方异常的高)

自适应冲量梯度算法(Adam)

它结合了冲量算法和自适应算法的优点,所以既有冲量项,又有自适应系数项。
对于冲量项:
图片说明
对于自适应项:
图片说明
同时为了防止初始时刻,对于加权和小于1的情况需要适当放大结果(因为两个项都是移动加权,都会存在这个问题)
图片说明
图片说明
综上,最后的参数更新公式为:
图片说明

局部最优和鞍点

深度学习模型是一个庞大的非线性结构,这样其一般是非凸函,存在很多局部最优点(local optimum),一旦梯度下降算法跳进局部陷阱,可以想象其很难走出来。
图片说明

首先,局部最优点起码在“局部”是最优的,可能效果不好,但仍然比鞍点处的参数效果好。其次,局部最优点的数量远远少于鞍点。因为在一个高维空间中,假设10000个方向,想要局部最优点,起码这100000个方向都要是向下的。这个条件达成的概率远小于鞍点达成的概率。所以,鞍点比局部最优更严重。

鞍点和局部最优点的梯度都为0,不同的是,这个点在某些方向上其实是最高点。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务