欢迎您访问 广东某某电缆桥架有限公司官方网站

亿兆简介 APP下载 网站地图

欢迎来电咨询

13988888888

新闻资讯

全国服务热线

13988888888

技术过硬,据实报价

新闻动态

当前位置: 主页 > 新闻资讯 > 新闻动态

优化算法(1):SGD + Momentum

2024-04-29 03:28 已有人浏览 佚名

不妨设神经网络的优化目标为:

l=\\mathop{\\arg \\min}\\limits_\\bm{W}\\frac{1}{N}\\sum_i\\mathrm{L}(\\bm{y}_i, \\mathrm{f}(\\bm{x}_i; \\bm{W}))\\\\

那么,优化算法SGD可以写成:

\\bm{W}_{t + 1}=\\bm{W}_t - \\eta \
abla_{\\bm{W}_t}l\\\\

SGD +Momentum(动量)可以写成:

\\begin{align}&\\bm{V}_t=\\beta\\bm{V}_{t - 1}+ (1 - \\beta)\
abla_{\\bm{W}_t}l \\\\ &\\bm{W}_{t + 1}=\\bm{W}_t - \\eta \\bm{V}_t \\end{align}\\\\

这里, \\eta 经验值为 0.9

首先,分析 \\bm{V}_t

\\begin{align}&\\bm{V}_0=\
abla_{\\bm{W}_0}l=\\bm{0}\\\\ &\\bm{V}_1=\\beta \\bm{V}_0 + (1 - \\beta)\
abla_{\\bm{W}_1}l=\\beta \
abla_{\\bm{W}_0}l + (1 - \\beta)\
abla_{\\bm{W}_1}l\\\\ &\\bm{V}_2=\\beta \\bm{V}_1 + (1 - \\beta)\
abla_{\\bm{W}_2}l=\\beta^2 \
abla_{\\bm{W}_0}l + (1 - \\beta)\\beta\
abla_{\\bm{W}_1}l + (1 - \\beta)\
abla_{\\bm{W}_2}l\\\\ &\\dots\\dots\\\\ &\\bm{V}_t=\\beta^{t - 0}\
abla_{\\bm{W}_0}l + (1 - \\beta)\\sum_{i=1}^{i=t}\\beta^{t - i}\
abla_{\\bm{W}_i}l=E[\
abla_{\\bm{W}_i}l]\\end{align}\\\\

\\bm{V}_t 中所有权重梯度矩阵 \
abla_{\\bm{W}_i}l 的系数相加,由数学归纳法易得:

1=\\beta^{t - 0}+ (1- \\beta)\\sum_{i=1}^{i=t}\\beta^{t - i}\\\\

所以,SGD + Momentum可以理解为,利用历史权重梯度矩阵 \\bm{{W}_i}l (i < t) 和当前权重梯度矩阵 \\bm{{W}_t}l 的加权平均和,来更新权重矩阵 \\bm{W} 。由于 \\beta \\in (0, 1) ,所以随着 t 的增大和 i 的减小, \\beta^{t - i} 会减小,历史权重梯度矩阵 \\bm{{W}_i}l (i < t) 会逐渐减小。通俗来讲,会逐渐遗忘越旧的权重梯度矩阵。

由于 \
abla_{\\bm{W}_0}l=0 ,所以当 t 较小时, \\bm{V}_t 会与当前权重梯度矩阵 \
abla_{\\bm{W}_t}l 有较大的偏差,所以会通过如下公式修正:

\\bm{V}_t=\\frac{1}{1 - \\beta^t}\\bm{V}_t\\\\

随着 t 的增大, \\frac{1}{1 - \\beta^t} 会逐渐减小,所以该偏差修正对前期更新影响大,后期影响逐渐减小。但该方法用得较少。

还是由于 \
abla_{\\bm{W}_0}l=0 ,那么当 t 较小时, \\bm{V}_t 会与当前权重梯度矩阵 \
abla_{\\bm{W}_t}l 有较大的偏差,以及更加凸显当前权重梯度矩阵的重要性,所以SGD +Momentum往往写成:

\\begin{align}&\\bm{V}_t^{\\prime}=\\beta\\bm{V}_{t - 1}^{\\prime}+ \
abla_{\\bm{W}_t}l \\\\ &\\bm{W}_{t + 1}=\\bm{W}_t - \\eta^\\prime\\bm{V}_t^{\\prime}\\end{align}\\\\

同样,可得:

\\bm{V}_t^{\\prime}=\\sum_{i=0}^{i=t}\\beta^{t - i}\
abla_{\\bm{W}_i}l\\\\

由于 \
abla_{\\bm{W}_0}l=0 ,所以有 \\bm{V}_t^{\\prime}=\\frac{1}{1 - \\beta}\\bm{V}_t ,所以学习率 \\eta^\\prime 有时也会进行修正,即 \\eta^\\prime=(1 - \\beta)\\eta

为了更加直观地理解,不妨设优化函数为:

y=\\mathop{\\arg \\min}\\limits_{\\bm{x}}\\mathrm{f}(\\bm{x})\\\\

其中, y \\in R, \\bm{x}\\in R^N 。那么有:

\\bm{v}_t^{\\prime}=\\sum_{i=0}^{i=t}\\beta^{t - i}\
abla_{\\bm{x}_i}y\\\\

取一个很小区域 \\bm{x}\\in (\\bm{x}_i, \\bm{x}_i + \\mathrm{d}\\bm{x}) ,假设优化函数 y 在这个定义域可以看成单调的,因此有:

\\begin{align}&\\bm{X}\	ext{ 为定义在}R^N\	ext{ 内积空间中的一个子集}\\\\ &\\forall \
abla_{\\bm{x}_i}y, \
abla_{\\bm{x}_j}y \\in \\bm{X}, \	ext{ 它们的夹角一定小于}\\frac{\\pi}{2}\\end{align}\\\\

易证:

\\begin{align}&||\
abla_{\\bm{x}_i}y + \
abla_{\\bm{x}_j}y|| > ||\
abla_{\\bm{x}_i}y||, ||\
abla_{\\bm{x}_j}y||\	ext{ (三角形内,大角对大边)}\\\\ &\
abla_{\\bm{x}_i}y + \
abla_{\\bm{x}_j}y \\in X \	ext{ (多个向量的合成是一个递归解法)}\\end{align}\\\\

推出:

||\\bm{v}_t^\\prime|| > ||\
abla_{\\bm{x}_t}y||\\\\

推导穷:

在相同学习率 \\eta^\\prime ,使用Momentum加速的SGD优化算法能以更大步长进行更新。

在相同学习率 \\eta^\\prime相同更新时间内,Momentum加速能行驶更多路程,为越过不那么好的极小值点提供可能性。

当然,这是非常感性的分析了,严谨的数学证明,远不是笔者能胜任的。

与优化算法(1):SGD + Momentum相关的其他内容

平台注册入口