pytorch-optimizer原理介绍


前言

在pytorch常用的优化器有:Adam、SGD、Adaw,这里主要介绍Adam的来源


一、常用方法

1.梯度下降法

x += - learning_rate * dx

分为
batch梯度下降:训练样本数量巨大时,单次迭代耗时太长
mini-batch梯度下降:batch_size一般取2的几次方,取64到512
随机梯度下降(batch_size=1):失去所有向量化带给你的加速,一次性只处理一个样本,效率过于低下

2.动量法(Momentum)

v = beta1* v - (1-beta1) * dx  梯度影响速度,dx的移动平均数
x += - learning_rate*v  速度决定位置

可以减小梯度下降的幅度,beta1取0.9

3.RMSprop

以指数式递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。

cache = beta2 * cache + (1 - beta2) * dx**2 # 梯度平方的指数加权平均(EMA)

x += - learning_rate * dx / (np.sqrt(cache) + eps) # 基于梯度更新

指数加权平均的好处是它极少占用内存
当dx较大时,cache较大,除以np.sqrt(cache),减缓该方向的变化
当dx较小时,cache较小,除以np.sqrt(cache),加快该方向的变化
消除梯度下降的摆动
防止np.sqrt(cache)趋于0,加上eps,论文作者取eps=1e-8

4.Adam

Momentum与RMSprop的结合

m = beta1*m + (1-beta1)*dx #动量法
v = beta2*v + (1-beta2)*(dx**2) #RMSprop
x += - learning_rate * m / (np.sqrt(v) + eps) #

吴恩达深度学习中介绍到:beta1默认0.9,beta2默认0.999,eps=1e-8


总结

这里主要介绍深度学习中常用的优化器,后续还有在bert中专门用到的AdamW优化器。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值