随机梯度下降法

    θtθt1αgt

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001)

权重衰减

    θt(1β)θt1αgt
  其中 gt 为第 t 步更新时的梯度, α 为学习率, β 为权重衰减系数,一般取值比较 小,比如 0.0005。

  

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,weight_decay=0.0005)

动量法 

  动量(Momentum)是模拟物理中的概念.一个物体的动量指的是该物体 在它运动方向上保持运动的趋势,是该物体的质量和速度的乘积.动量法(Momentum Method)是用之前积累动量来替代真正的梯度.每次迭代的梯度可以 看作加速度. 在第 t 次迭代时,计算负梯度的“加权移动平均”作为参数的更新方向,

    Δθt=ρΔθt1αgt=ατ=1tρtτgτ

  

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,momentum =0.001,dampening=0.001)

Nesterov加速梯度

   Nesterov 加速梯度(Nesterov Accelerated Gradient,NAG)是一种对动量 法的改进[Nesterov, 2013; Sutskever et al., 2013],也称为Nesterov动量法(Nesterov Momentum)

  在动量法中, 实际的参数更新方向  Δθt  为上一步的参数更新方向  Δθt1  和当 前梯度的反方向 gt  的叠加. 这样,  Δθt  可以被拆分为两步进行, 先根据  Δθt1  更 新一次得到参数 θ^ , 再用 gt  进行更新.

  这样,合并后的更新方向为

    Δθt=ρΔθt1αgt(θt1+ρΔθt1)

  其中 gt(θt1+ρΔθt1)  表示损失函数在点 θ^=θt1+ρΔθt1 上的偏导数. 

  

  

Code:

optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,momentum =0.001,nesterov=0.01)

 

posted @   别关注我了,私信我吧  阅读(2103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
Live2D
点击右上角即可分享
微信分享提示