momentum动量算法详解

本文深入解析momentum动量算法,通过原理分析揭示其如何减少梯度震荡并加速模型训练。对比SGD,动量算法在面对Hessian矩阵病态情况时能更稳定地向最小值前进,利用历史梯度信息调整当前梯度的影响。同时,介绍了在PyTorch中SGD+Momentum的实现。
摘要由CSDN通过智能技术生成

momentum动量算法详解

1.原理

先看作用:

保留历史梯度对现有梯度的影响,具有减小梯度震荡,加速模型训练的作用。

再看解释:
在这里插入图片描述
如图所示,红色为SGD+Momentum。黑色为SGD。可以看到黑色为典型Hessian矩阵病态的情况,相当于大幅度的徘徊着向最低点前进。

而由于动量积攒了历史的梯度,如点P前一刻的梯度与当前的梯度方向几乎相反。因此原本在P点原本要大幅徘徊的梯度,主要受到前一时刻的影响,而导致在当前时刻的梯度幅度减小。

直观上讲就是,要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻的梯度方向减弱。

2.算法实现

算法原理:

在这里插入图片描述

pytorch-SGD+Momentum源码:

class SGD(Optimizer):
    .... #函数注释

    def __init__(self, params, lr=required, momentum=0, dampening=0,
                 weight_decay=0, neste
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值