学习速率搜索

学习速率是训练DNN模型的一个关键参数。过大的学习速率设置会导致训练过程不收敛,过小的学习速率会导致收敛速度缓慢。本篇博客将介绍一种现有论文中的学习速率的选取方法。

这种方法作为一种最佳实践,也被Fast AI库所采纳。博主的初衷是使用Fast AI所提供的API,便捷地实现这种搜索方法。但在实践过程中却发现Fast AI已经从1.0版本升级到了2.0版本,其很多功能的实现方式发生了变化。之前博主基于Fast AI 1.0所探讨的一些扩展技能都不再适用。有鉴于此,为避免Fast AI版本变更导致的技能点失效,本篇博文不但将介绍基于Fast AI的懒人方法,还将介绍其具体步骤。如此,基于naivepytorch的实现也很easy

博文主要内容如下:第一部分将给出学习速率选取方法的流程图,并论述实现过程中所需注意的要点。第二部分将介绍如何在自定义的应用场景中使用Fast AI的相关方法。第三部分给出了不同实现方式的结果。最后将给出相关的参考链接。

一、学习速率搜索方法

方法流程图及注意要点如下图所示,其基本流程是设置不同的学习速率,每个学习速率训练一个batch,由loss值的变化趋势来选取合适的学习速率。

图 1. 学习速率搜索流程

二、Fast AI中的lr_find()

Fast AI中的lr_find()的方法,是关联于Learner对象的。为在自定义应用场景中使用lr_find()方法,我们需要将自定义的datamodelloss functionoptimizer等深度学习所需要素封装为Learner对象。

1. 将pytorchDataset转换为Fast AIDataloaders
data = DataLoaders.from_dsets(train_ds, valid_ds, bs=128).cuda()

注意:batch_size参数的默认值为64

2. 将pytorchoptim实例转换为Fast AIloss_func
# ps: param_set.
def opt_func(ps, lr): return OptimWrapper(optim.SGD(ps, lr=lr, momentum=0.9, weight_decay=1E-4))
3. 构建Fast AILearner对象
# criterion is same as the conventional loss functions in pytorch
learn = Learner(data, model, loss_func=criterion, opt_func=opt_func, metrics=accuracy)

注意:opt_func默认选择Adam优化器。

然后就可使用learn.lr_find()函数了,所需参数均有默认值。

三、在MNIST数据上的结果

相关结果如下,每种实现都会依据loss最小以及loss下降最速的准则给出两个建议值。其中基于pytorch的方法给出的建议值分别为0.0630.302,基于Fast AI的方法给出的建议值分别为0.1580.251

图 2. 在MNIST数据上的结果:左—pytorch,右—Fast AI

参考

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习中,学习率衰减(Learning Rate Scheduler, LRF)是一个关键的超参数调优策略,用于控制模型在训练过程中学习速度的降低,以帮助防止过拟合并提高模型的收敛性能。LRF通常有几种常见的策略: 1. **固定学习率**:在整个训练过程中保持一个恒定的学习率,是最简单的设置,但可能不适合复杂的任务或模型结构。 2. **线性衰减(Step Decay)**:随着训练迭代增加,每经过一定周期(如每个epoch或固定的步数),学习率线性减少。 3. **指数衰减(Exponential Decay)**:学习率按照指数公式(通常是e的幂次)逐渐降低。 4. **余弦退火(Cosine Annealing)**:学习率随训练进度在一个余弦波形中变化,从最大值逐渐减小到最小值再逐渐提升,形成一个周期性的规律。 5. **阶梯式学习率(Multi-Step Decay)**:在训练过程中设定多个特定的里程碑,每当达到这些里程碑,学习率会下降到一个新的更低水平。 6. **学习率warm-up**:在开始阶段使用较小的学习率,然后逐渐增加到预设值,帮助模型更快地找到有效的梯度方向。 选择哪种策略取决于具体任务、模型复杂度和数据集大小。在实际应用中,你可能会结合交叉验证、网格搜索或随机搜索等方法来调整学习率衰减策略以及其相关的超参数,如衰减速率、衰减周期等。有时候,动态调整学习率(例如通过回调函数或自适应优化器如Adam、Adagrad等)也是常见的做法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值