torch.optim.SGD参数学习率lr、动量momentum、权重衰减weight_decay的解析

torch.optim.SGD(net.parameters(), lr=lr, momentum=0.9,weight_decay=wd)

第一个参数包括权重w,和偏置b等是神经网络中的参数,也是SGD优化的重点

第二个参数lr是学习率。sgd中的学习率lr的作用可以理解为: p ′ = p − l r ∗ d p p^{'} = p - lr*dp p=plrdp 其中p就是模型中的参数比如:权重(w), 偏置(b)。 d p dp dp 就是对p的一阶求导, lr 即学习率, p ′ p^{'} p 为p的另一种形式,即用来替换上一次的p

第三个参数momentum是冲量

“冲量”这个概念源自于物理中的力学,表示力对时间的积累效应。
在普通的梯度下降法x+=v
中,每次x的更新量v为v=−dx∗lr,其中dx为目标函数func(x)对x的一阶导数,。
当使用冲量时,则把每次x的更新量v考虑为本次的梯度下降量−dx∗lr与上次x的更新量v乘上一个介于[0,1][0,1]的因子momentum的和,即
v ′ = − d x ∗ l r + v ∗ m o m e m t u m v^{'}=−dx∗lr+v∗momemtum v=dxlr+vmomemtum
当本次梯度下降- dx * lr的方向与上次更新量v的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。
当本次梯度下降- dx * lr的方向与上次更新量v的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。

第四个参数weight_decay是权重衰减 即L2正则化前面的那个 λ \lambda λ参数, 权重衰减的使用既不是为了提高你所说的收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。

另外可点击参考此链接

  • 37
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值