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)
相关文章
- Java集合中List,Set以及Map等集合体系详解
- 深入PHP中慎用双等于(==)的详解
- Java虚拟机详解03----常用JVM配置参数
- Hadoop 三台主机 集群搭建 详解(测试)
- Linux下套接字详解(四)----简单的TCP套接字应用(迭代型)
- Spring Boot POM 详解
- Java 序列化详解
- MFS详解(五)——MFS元数据日志服务器安装与配置
- ELK详解(二十五)——elastalert配置参数详解
- MySQL优化详解(三)——MySQL慢查询与内参数优化
- ASM冗余详解
- ThreadPoolExecutor的七个参数详解
- RabbitMQ声明队列参数作用详解
- Git远程操作详解
- android 启动阶段init.rc 参数详解
- Python之pandas:pandas中to_csv()、read_csv()函数的index、index_col(不将索引列写入)参数详解之详细攻略
- WebRTC-Android硬编码流程详解
- 详解数仓的锁相关参数及视图
- 详解智能建筑消防预警系统设计与实现
- 一文详解java线程池 详解Java线程池的七个参数 详解池化技术 java如何选择核心线程数 详解Java线程池的拒绝策略
- B树和B+树的插入、删除图文详解
- logback 常用参数配置详解
- sudoer visudo命令详解
- PyTorch常用参数初始化方法详解
- Python开发之Python导包的几种方法,自定义包的生成以及导入详解
- 【OpenCV 例程300篇】214. 绘制椭圆的参数详解
- tensor详解
- PPOCR 检测器配置文件参数详解
- super和this关键字详解
- Python异步并发机制详解,让你的代码运行效率就像搭上了火箭!!!
- Logstash数据处理服务的输出插件Output配置参数详解