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

目录

  • 1. 什么是warmup
  • 2. warmup的作用
  • 3. 为什么warmup有效
  • 4. 参考文献
  • 5. 联系

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。

如下图所示:
warm-up of the learning rate (预热学习率)_第1张图片

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

warm-up of the learning rate (预热学习率)_第2张图片

你可能感兴趣的:(论文笔记,计算机视觉,人工智能,神经网络,机器学习,深度学习)