神经网络调参技巧:warmup策略

本文探讨了神经网络训练中的warmup策略,特别是在Transformer架构中的应用。该策略通过初始阶段较小的学习率逐渐增大到预设最大值,能有效提升模型稳定性。尽管实践效果显著,其理论依据仍有待深入研究。实验表明,warmup对于SGD优化器尤其关键,且Rectified Adam优化器在解决warmup初期数据样本不足导致的问题上展现出优势。
摘要由CSDN通过智能技术生成

有一些论文对warmup进行了讨论,使用 SGD 训练神经网络时,在初始使用较大学习率而后期改为较小学习率在各种任务场景下都是一种广为使用的做法,在实践中效果好且最近也有若干文章尝试对其进行了理论解释。例如《On Layer Normalization in the Transformer Architecture》等,论文中作者发现Post-LN Transformer在训练的初始阶段,输出层附近的期望梯度非常大,所以没有warm-up的话模型优化过程就会非常不稳定。

虽然在实践中效果好且最近也有若干文章尝试对其进行了理论解释,但到底为何有效,目前还没有被充分证明。

12db74c4c0bbb5f283ceac62eba064f4.png

Transformer中的warm-up可以看作学习率 lr 随迭代数 t 的函数:

d040dcdbe99e16674043dc71c27fa3e1.png

学习率 lr 会以某种方式递减,学习率从0开始增长,经过 Twarmup 次迭代达到最大。论文中对Adam,SGD等有无warmup做了实验,

2833102c466021b03267c44589baf1c6.png

可以看到,warmup增加了训练时间,同时在最初阶段使用较大的学习率会导致Loss偏大,对模型的训练的影响是巨大的。warmup在这里对SGD是非常重要的。

943ebd14b6d3baaae970af4e7810cfbb.png

929ae329223c380797de566ec8546d96.png

Rectified Adam针对warmup前期数据样本不足导致的biased variance的问题提出了解决方案,论文中实验结果看到还是有一定效果的。RAdam 由随机初始化带来的 Variance 比较小。即使隔离掉 warmup 部分的影响后Variance 也是要比 Adam 小的。

27339a00e36628cb8e6e08b0aa425dbf.png

07e282bc60ad65469c56a5e84bfb42b7.png

2f78e203d113c7ea8066849bb9d1a6a2.png
class AdamWarmup(Optimizer):
    # DOTA
    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0, warmup = 0):
        if not 0.0 <= lr:
            raise ValueError("Invalid learning rate: {}".format(lr))
        if not 0.0 <= eps:
            raise ValueError("Invalid epsilon value: {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值