torch.optim.SGD参数详解
随机梯度下降法
$\theta_{t} \leftarrow \theta_{t-1}-\alpha g_{t}$
Code:
optimzer = torch.optim.SGD(model.parameters(),lr = 0.001)
权重衰减
$\theta_{t} \leftarrow(1-\beta) \theta_{t-1}-\alpha \mathbf{g}_{t}$
其中 $\mathrm{g}_{t}$ 为第 $t$ 步更新时的梯度, $\alpha$ 为学习率, $\beta$ 为权重衰减系数,一般取值比较 小,比如 0.0005。
Code:
optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,weight_decay=0.0005)
动量法
动量(Momentum)是模拟物理中的概念.一个物体的动量指的是该物体 在它运动方向上保持运动的趋势,是该物体的质量和速度的乘积.动量法(Momentum Method)是用之前积累动量来替代真正的梯度.每次迭代的梯度可以 看作加速度. 在第 $t$ 次迭代时,计算负梯度的“加权移动平均”作为参数的更新方向,
$\Delta \theta_{t}=\rho \Delta \theta_{t-1}-\alpha g_{t}=-\alpha \sum\limits_{\tau=1}^{t} \rho^{t-\tau} g_{\tau}$
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)
在动量法中, 实际的参数更新方向 $\Delta \theta_{t}$ 为上一步的参数更新方向 $\Delta \theta_{t-1}$ 和当 前梯度的反方向 $ -g_{t}$ 的叠加. 这样, $\Delta \theta_{t}$ 可以被拆分为两步进行, 先根据 $\Delta \theta_{t-1}$ 更 新一次得到参数 $ \hat{\theta}$ , 再用 $ -g_{t}$ 进行更新.
这样,合并后的更新方向为
$\Delta \theta_{t}=\rho \Delta \theta_{t-1}-\alpha \mathfrak{g}_{t}\left(\theta_{t-1}+\rho \Delta \theta_{t-1}\right)$
其中 $\mathfrak{g}_{t}\left(\theta_{t-1}+\rho \Delta \theta_{t-1}\right)$ 表示损失函数在点 $\hat{\theta}=\theta_{t-1}+\rho \Delta \theta_{t-1}$ 上的偏导数.
Code:
optimzer = torch.optim.SGD(model.parameters(),lr = 0.001,momentum =0.001,nesterov=0.01)
相关文章
- Kotlin学习快速入门(12)—— 位运算符
- Spring Boot命令指定环境启动jar包
- Window系统的mysql数据库定时备份
- 【开源库推荐】#4 Poi-办公文档处理库
- Kotlin学习快速入门(11)—— 枚举类的使用
- TornadoFx的TableView组件使用
- Mp3文件标签信息读取和写入(Kotlin)
- Maven项目不同jar包相同类名的引用问题
- Libgdx游戏开发(2)——接水滴游戏实现
- Libgdx游戏开发(1)——环境配置及demo运行
- Jetpack架构组件学习(4)——APP Startup库的使用
- Kotlin学习快速入门(10)—— 重载运算符使用
- Kotlin学习快速入门(9)—— 密封类的使用
- Jetpack Compose学习(9)——Compose中的列表控件(LazyRow和LazyColumn)
- Jetpack Compose学习(8)——State及remeber
- Kotlin学习快速入门(8)—— 委托
- Kotlin学习快速入门(7)——扩展的妙用
- Jetpack架构组件学习(3)——Activity Results API使用
- TornadoFx实现侧边栏菜单效果
- TornadoFx中的css美化