咨询热线

18888889999

notice  网站公告

诚信为本:市场永远在变,诚信永远不变。
NEWS CENTER

杏彩体育资讯

service phone 18888889999

优化器:从SGD到 Adam

发布时间:2024-03-12 11:47:11  点击量:
更多

总结学习视频 https://www.bilibili.com/video/av94067702/

所有的优化器都是可以套进这个基本框架的。
在这里插入图片描述

这里的E指的是单位矩阵。SGD 没有动量概念,因为一阶动量就是当前梯度,二阶梯度就是单位矩阵。
在这里插入图片描述
缺点:容易陷入局部最优。由于SGD只考虑当前时刻的梯度,在局部最优点的当前梯度为0。由计算公式可知,此时参数不再进行更新,故陷入局部最优的状态。

显而易见,引入历史梯度值,引入动量(momentum)的概念可以帮助我们跳出鞍点。

咱比如要算 θ t heta_t θt? 的平均,一般大家就用相加求和/总数的方法。
而EMA(指数滑动平均)是指数式的平均。

第一行最重要,方便理解。
当前时刻 v t v_t vt? 等于 衰减因子 β \beta β 与上一个时刻的值 v t ? 1 v_{t-1} vt?1? 的乘积 加上 ( 1 ? β ) × θ t (1-\beta) imes heta_t (1?β)×θt?。这个式子可以递归化简为第二行,也就是把 θ t heta_t θt?的历史做一个指数的求和,所以很形象的称为滑动平均。
在这里插入图片描述
而对于那些权重小于 1 e \frac{1}{e} e1?的项,我们可以忽略不记。然后可以数学推导(极限),指数滑动平均肯定有个范围啊,就是到底与多宽的历史时刻有关,答案是 1 1 ? β \frac{1}{1-\beta} 1?β1?,所以一般 β = 0.999 \beta=0.999 β=0.999的时候,就是1000个时刻取指数平均。

此时,我们知道了EMA,就可以把 θ t heta_t θt?换成 g t g_t gt?,目的是引入梯度的历史值,进而可以计算出梯度的动量(momentum)。

当t比较小的时候,EMA会把平均值拉的很小。
在这里插入图片描述
所以这里大家一般都会引入一个修正因子 1 ? β t 1-\beta^t 1?βt,我们可以分析,
在这里插入图片描述

在SGD上,加入一阶动量,还是没有引入二阶动量。
在这里插入图片描述
这里没有严格使用EMA,具体为,没有使用 1 ? β t 1-\beta^t 1?βt,而是使用了 η \eta η,无伤大雅,原理上一致。

同样使用了一阶动量而没有使用二阶动量。没有使用 ( 1 ? β ) × g t (1-\beta) imes g_t (1?β)×gt?,而是预测t-1时刻下一时刻梯度,没有引入当前的观测值,可以理解为跟着惯性走了一步。
在这里插入图片描述


加下来的都是引入二阶后的方法。二阶动量出现,才说明了自适应学习率的优化算法时代到来。

如图,我们希望经常被刺激到的神经元参数更新幅度小一些,那些不经常被用到的神经元更新的慢一点。
在这里插入图片描述

有一种归一化的感觉。对于那些更新幅度很大的参数,通常历史累计梯度的平方和会很大(可以理解为能量很大),所以希望能量大的更新慢一点,能量小的更新快一点。

在这里插入图片描述
所以,如图式一,计算以往梯度的平方和作为二阶动量,梯度本身作为一阶动量,就可以得到第二行的式子。此时,二阶动量大的参数就会更新的小一点啦。

缺点:随着时间步的拉长,历史累计梯度平方和会越来越大,这样会使得所有维度参数的学习率都不断减小(单调递减),无论更新幅度如何。

显然,一直累计肯定不好,这里可以想到momentum,利用EMA不就好了吗?

Delta 就是一个小范围嘛,就是使用了历史一部分梯度。

  • RMSProp 就是在AdaGrad 基础上将普通的历史累计梯度平方和换成了历史累计梯度平方和的EMA
    在这里插入图片描述

  • AdaDelta
    在 RMSProp上进行,改的分子(忽略)

Momentum 在SGD 基础上增加了一阶动量,AdaGrad 在SGD 基础上增加了二阶动量, 把一阶和二阶动量都使用了就是Adam。

在这里插入图片描述
在这里插入图片描述


有什么问题请反馈给我们!


如有需求请您联系我们!

地址:海南省海口市58号
电话:18888889999
手机:海南省海口市58号

Copyright © 2012-2018 首页-杏彩体育中国官方网站 版权所有 ICP备案编:琼ICP备88889999号

平台注册入口