赞
踩
前言
在学习卷积神经网络的时候,会遇见一个优化器SGD算法,对于全梯度下降、随机梯度下降、minibatch梯度下降学习了之后,写代码的时候发现有一个momentum的参数,如下所示:
optimizer = optim.SGD(model.parameters(), lr=(0.1), momentum=0.9)
其中momentum为冲量。具体是什么意思呢?
给出某地区的一年全部气温:
1.第一天气温:40
2.第二天气温:49
3.第三天气温:45
4. …
5. 第一百八十天气温:56
则给出下列公式:
去β=0.9
将数据带入公式之中得到:
其中v是移动指数加权平均,所对应的是右图红色的线条。从上式可以看出指数加权平均是有记忆的,每一个v都包含了之前所有数据的信息。
公式中的β就是所谓的冲量,我们可以看出,冲量的取值可以有效修改曲线的平滑程度,若冲量取得太大,所抑制曲线波动能力太强,则会导致曲线整体偏移,所以选取β=0.9为最佳。
在实践中,在衰减初期我们需要对偏差进行修正:
带有动量的SGD本质:使用指数加权平均之后的梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名。
在进行反向传播的时候,我们会对每一个权重进行更新,每一个权重就像气温一样是参数,我们需要对每一个权重进行动量优化,利用一下公式:
利用指数加权平均的思想,平滑梯度的计算,进而加快模型的收敛速度。
数据来源:
BV1nd4y1X7KN
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。