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

本文探讨了warmup策略在深度学习中的关键作用,如何通过线性或非线性方式逐步增加学习率,避免初期训练不稳定,提高模型收敛效率。通过实例和理论解释,揭示了warmup有效的原因,并提供了参考文献。
部署运行你感兴趣的模型镜像

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. 📞 联系 👨

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值