凯发娱乐全屋家具定制公司

NEWS新闻中心

您当前所在位置: 主页 > 新闻中心 > 公司新闻

浅谈优化器和学习率预热warmup

发布日期:2024-05-06 05:46  浏览次数:

优化器用在模型训练过程中来更新模型参数,最小化(或最大化)损失函数,以提升模型效果,常见的优化器基本原理可以参考之前的文章深度学习常用优化算法原理解析

关于优化器的使用,TensorFlow或pytorch都有相关的实现,直接拿来用即可,如TensorFlow的优化器在tf.keras.optimizers包下提供,pytorch的优化器在torch.optim包下提供。

优化器更新参数的方法可以用以下公式表示:

α是学习率,与α相乘的部分是梯度

可以看到变化量主要依据两个条件确定,一个是学习率另一个是梯度,常用的优化器也是根据这两方面来调整的,一些好的优化器本身的设计就可以做到动态的调整学习率和梯度,就学习率来说,优化器本身是根据梯度来调整学习率的,一般刚开始训练时梯度很大(误差大)所以学习率也较大,这样的设计符合让模型尽快收敛的需求,但是在有些情况下,尤其是使用了预训练模型进行下游任务时,学习率太大会带来不稳定问题,使模型发生振荡,所以需要让刚开始训练时有一个较小的学习率,确保模型能够有良好的收敛性,因此就有了学习率预热学习率衰减这样的策略来辅助调整学习率。

比如预热策略warmup,就是使学习率从0开始增加,增加到warmup设定值时再逐渐减小,当然增加和减小的过程可以是线性的也可以是非线性的(实现类中提供了不同的实现方法)。

Pytorch和Transformer中都提供了warmup实现,在代码中使用warmup的示例如下:

1.先定义好优化器optimizer和学习率预热策略scheduler

2.然后在训练过程中同时对两者执行step即可

实现学习率衰减策略的函数是StepLR(),它使用与warmup类似,这里不再过多介绍。

warmup等优化策略作为一种炼丹技巧可以在不同任务中结合实际情况选择是否采用该技巧,有时会取得很好的训练效果,如下图,可以看到,warmup增加了训练时间,同时在最初阶段使用较大的学习率会导致Loss偏大,对模型的训练的影响是巨大的。

以上就是关于优化器和优化策略warmup的一些介绍,欢迎关注本公众号

标签:学习优化
在线客服
服务热线

服务热线

020-88888888

微信咨询
凯发娱乐全屋家具定制公司
返回顶部
X凯发娱乐全屋家具定制公司

截屏,微信识别二维码

微信号:wixin888

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!

平台注册入口