warm-up of the learning rate (预热学习率)

1. 什么是warmup

最近在看论文的时候看到了一个专业术语,如下所示:

Furthermore, we used a linear warm-up of the learning rate[12] in the first five epochs.

然后网上查了资料,称这个叫做: 预热学习率

📝 名词解释

warm-up是针对学习率learning rate优化的一种策略,主要过程是:在预热期间,学习率从0线性(也可非线性)增加到优化器中的初始预设lr,

之后使其学习率从优化器中的初始lr线性降低到0。

如下图所示:
在这里插入图片描述

2. warmup的作用

由于刚开始训练时,模型的权重(weights)是随机初始化的,此时若选择一个较大的学习率,可能带来模型的不稳 

定(振荡),选择Warmup预热学习率的方式,可以使得开始训练的几个epoch或者一些step内学习率较小,在预热的

小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变 得更快,模型效果更佳。

下面是自己看论文里面别人使用这个预热学习率的代码:

def warmup_learning_rate(args, epoch, batch_id, total_batches, optimizer):
    if args.warm and epoch <= args.warm_epochs:
        p = (batch_id + (epoch - 1) * total_batches) / \
            (args.warm_epochs * total_batches)
        lr = args.warmup_from + p * (args.warmup_to - args.warmup_from)

        for param_group in optimizer.param_groups:
            param_group['lr'] = lr

🔗 参考链接: SupContrast: Supervised Contrastive Learning

3. 为什么warmup有效

为什么warm-up 有效这点我没有深究,但是从使用它的效果来看可以得到如下结论:

有助于减缓模型在初始阶段对mini-batch的提前过拟合现象,保持分布的平稳

有助于保持模型深层的稳定性

从训练效果可以体现为:

一开始神经网络输出比较random,loss比较大,容易不收敛,因此用小点的学习率, 学一丢丢,慢慢涨上去。

梯度偏离真正较优的方向可能性比较大,那就走短一点错了还可以掰回来。

这里有一篇文章关于解释为什么warm-up有效,但是还是没有完全说清楚:

🔗 参考链接: 神经网络中 warmup 策略为什么有效;有什么理论解释么?

4. 参考文献

1. 聊一聊学习率预热linear warm-up

5. 📞 联系 👨

在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值