【深度学习】学习率介绍(torch.optim.lr_scheduler学习率调度策略介绍)

0.前言

在深度神经网络训练中,学习率(Learning Rate)是一个重要的超参数,它决定了优化算法在每次更新模型参数时的步长大小。学习率对模型的训练过程和最终性能具有深远的影响。

本文主要介绍学习率的基本概念,以及在使用PyTorch训练神经网络模型时常用的学习率调度策略。

1.学习率的概念

学习率是控制每次迭代更新中梯度下降步幅大小的参数。在反向传播过程中,模型通过计算损失函数的梯度来更新参数,而学习率决定了沿梯度方向迈出多大的一步。
数学上,学习率通常用符号 η \eta η表示,更新公式为: θ = θ − η ⋅ ∇ J ( θ ) \theta = \theta - \eta \cdot \nabla J(\theta) θ=θηJ(θ)其中:

  • θ \theta θ是模型参数。
  • ∇ J ( θ ) \nabla J(\theta) J(θ)是损失函数 J J J相对于参数 θ \theta θ的梯度。

2.学习率的作用

  • 收敛速度:
    • 大学习率:能够加快收敛速度,但可能导致错过最优点(overshooting)或震荡。
    • 小学习率:增加了到达最优点的机会,但可能导致收敛过慢并增加训练时间。
  • 优化效果:
    • 适当的学习率有助于更快地达到模型的全局最优解或其附近,从而提升模型的性能。
  • 稳定性:
    • 学习率过大可能导致训练不稳定,模型发散。
    • 学习率过小可能使训练停滞,容易陷入局部最优。

3.学习率调度策略

在PyTorch中,torch.optim.lr_scheduler._LRScheduler是所有学习率调度器的基类。学习率调度器用于在训练过程中动态调整优化器的学习率,以改善模型的训练效果。

3.1. StepLR

逐步衰减学习率

StepLR(Step Learning Rate)是一种用于调节神经网络训练过程中学习率的策略。通过在训练过程中逐步降低学习率,StepLR有助于提高模型的稳定性和最终的收敛效果。

原理

StepLR策略的核心思想是在训练的过程中,每隔一段固定的时期(epoch),将学习率减少一个恒定的比例。这个过程形成了一个阶梯状的变化曲线,故称为“Step”(阶梯)学习率。

参数

  • 初始学习率(initial learning rate):开始训练时的学习率。
  • 步长(step size):每隔多少个epoch降低一次学习率。
  • 下降因子(gamma):每次降低学习率的比例,通常小于1。例如,gamma=0.1意味着每次学习率变为原来的10%。
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1)
# step_size: 每经过多少个epoch调整一次学习率。
# gamma: 学习率调整的比例。新学习率 = 旧学习率 * gamma。

优势

  • 简单明了:StepLR调度策略简单易用,仅需少量参数配置。
  • 稳定收敛:在训练后期降低学习率可以帮助模型更接近全局最优并提升精度。

适用场景

StepLR特别适合于在模型训练后期希望降低步长进行精细调整的场景。不过,由于它是一个非常简单的调度策略,不适用于所有任务,尤其是在一些更复杂的训练需求下,可能需要更自适应的学习率调度策略(例如基于性能监控的ReduceLROnPlateau策略)。
在这里插入图片描述

3.2. MultiStepLR

在预定义的时间点逐步衰减学习率

MultiStepLR是一种学习率调度策略,它是StepLR的推广版本,用于在神经网络训练过程中更灵活地调整学习率。MultiStepLR允许用户在指定的多个epochs上调整学习率,而不是像StepLR那样每隔固定步长调整一次。这在需要对不同训练阶段采取不同学习率时尤其有用。

原理

MultiStepLR的原理与StepLR类似,都是通过在训练过程中降低学习率来帮助模型更稳定地收敛。不同之处在于,MultiStepLR允许用户指定多个epoch,当训练达到这些指定的epochs时,学习率将按照定义的因子进行缩减。

参数

  • 初始学习率(initial learning rate):训练开始时的学习率。
  • 里程碑(milestones):一个列表,包含了在训练过程中学习率要降低的epoch编号。例如,[30, 80]表示在第30和第80个epoch时降低学习率。
  • 下降因子(gamma):学习率减少的比例,通常小于1,例如0.1表示每次减少到原来的10%。
scheduler = torch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸟哥大大

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值