机器学习中的学习率

2025年6月23日 | 阅读 11 分钟

引言

在模型权重更新期间,机器学习需要学习率参数,它控制算法移动的大小,并进行模型权重的更新。学习率可以通过训练数据来调整权重以趋向于最小化误差或损失,并学习训练的速度。在随机梯度下降(SGD)优化函数中,数学符号 η\eta 被用作收敛开始时的关键元素。

它是梯度下降函数的一个决定因素,它决定了朝负梯度方向移动的距离,以找到损失函数的最小值。这样,过程就能足够快地达到学习率水平,但过大的值会导致算法无法达到最小值或停止收敛。

机器学习算法中学习率的作用

  • 指导优化过程:优化器使用学习率值来确定权重修改的程度以最小化误差。该方法驱动优化以发现损失函数的全局最小值点。
  • 平衡速度和准确性:当所选学习率保持在最佳水平时,可以实现训练速度与准确性水平的组织。
  • 防止发散:使用过高的学习率训练模型会导致模型发散,并在训练过程中产生不稳定和震荡的行为。
  • 对泛化能力的影响:模型对新数据条件的泛化能力受学习率功能好坏的影响。不正确的学习率设置可能导致欠拟合,因为数据中的模式未被发现,或者通过完全记忆训练数据导致过拟合。

设置适当学习率的重要性

  • 确保收敛:适当的学习率将有助于模型最有效地达到损失函数的最小值点。该参数可以使训练过程保持高效,并且在训练过程中不会导致不稳定结果。
  • 缩短训练时间:在正确选择的学习率下,训练时间会缩短,因为它允许模型在更少的训练迭代中取得有意义的进展。
  • 提高模型性能:正确的学习率可以阻止优化器超出最小值,并有助于实现模型的准确性能。
  • 适应复杂的损失景观:从复杂的非凸损失景观:如今,神经网络被迫共享复杂的非凸损失表面,该表面具有多个局部最小值和鞍点。学习率的调整有助于机器有效处理各种特定的模型错误。
  • 避免资源浪费:在模型训练中,不当的学习率会导致计算资源和训练时间的浪费。糟糕的学习率需要数千次额外的训练步骤才能与适当设置的学习率的性能相匹配。

学习率如何影响模型训练?

学习率参数对于实现模型正常运行至关重要,因此在很大程度上取决于机器学习模型的性能及其收敛速度。学习率通过所使用的方法进行学习,并且是决定数据模型学习速度和效率的因素。

对收敛速度的影响

高学习率

  • 这意味着在训练时间内,训练时间缩短了,即朝着损失函数的最小值进行了较大的移动。
  • 过高的学习率会使优化器离最优解太远,并在移动太远时错过它。
  • 当学习率较高时,会导致模型出现随机的损失变化,因为它阻止模型达到收敛。

低学习率

  • 如果使用精确的小步,即小学习率,那么训练会更稳定地趋向于收敛。
  • 低学习率存在问题,因为可能会导致训练时间延长,并且在有挑战性的损失区域,有陷入局部最小解的可能。
  • 深度学习模型中的小学习率与大型数据集之间的权衡,因为它们会使训练速度减慢到难以忍受的速度。

对损失函数优化的影响

通过平衡的学习率进行平滑优化

  • 需要正确选择学习率,以便优化器能够通过 successive 迭代以高效的方式降低损失函数的值,从而进行参数更新。

高学习率导致发散

  • 使用高学习率时,你会发现损失函数随机增加,因为优化器失去了看到全局最小值的能力。
  • 这里,损失曲线通过视觉表示进行描绘,并且可以看到它们具有较大的变化和向上的动量。

低学习率导致平台化

  • 对于任何一个学习率极低的学习者,如果它能取得显著进展,损失曲线会持续多个 epoch 保持平坦。
  • 在实验工作中,它们通常会突然暂停训练过程,给研究带来极大的困难。

平衡过拟合和欠拟合

  • 过拟合风险:由于高学习率可以促进损失区域的检测能力,因此可能存在过拟合的风险增加。
  • 学习率过低:在欠拟合风险的情况下,如果学习率过低,模型将需要很长时间才能发现所有数据复杂性。
  • 最佳平衡率:良好的学习率使模型能够发现数据中有意义的模式,并避免过拟合和欠拟合行为。

机器学习中学习率的类型

机器学习模型通过学习率调整来发挥最佳性能,这决定了它们的有效性。学习率类型在特定条件下通过其在不同操作环境下的专业优势来发挥最有益的性能。

固定学习率

在训练期间,学习率在其操作中保持其起始值不变。

优点

  • 这种做法提供了两个主要的好处,因为用户可以轻松理解和操作它。
  • 简单优化问题的可预测行为导致连续步长大小的均匀行为。
  • 该技术在维护问题和数据集方面表现出强大的性能。

局限性

  • 使用慢学习率时,学习过程收敛缓慢;然而,使用高学习率时,过程发散迅速。
  • 在复杂的模型优化过程中,不可适应性会带来问题,因为它不能适应梯度行为的变化。

自适应学习率

学习率中的自适应值校正在梯度修改或优化完成评估后通过自动程序进行。训练操作受益于两种目的的更新方法:方法稳定性和操作性能增强。

自适应学习率技术

AdaGrad(自适应梯度算法)

  • 每个参数的学习率通过基于更新计数值的系统进行修改。
  • 该过程停止了频繁的特征更新,在处理稀有数据实例时取得了成功的结果。
  • 这种方法导致训练学习率下降,尽管其初始行为表明速度较慢。

RMSprop(均方根传播)

  • 该算法通过对梯度平方实现运行平均计算来进行更新归一化。
  • AdaGrad 学习率的衰减得到了该方法的解决,该方法在处理非凸数据集方面也行之有效。
  • 需要仔细的超参数调整。

Adam(自适应矩估计)

  • 该算法通过将动量与自适应学习率相结合来产生有效的结果,这些自适应学习率源自 RMSprop 和 AdaGrad。
  • 该算法因其处理各种问题的能力而成为深度学习应用的优选方案。
  • 该模型需要强大的计算能力,尽管它需要额外的修改才能达到最佳结果。

学习率调度

在学习活动期间,训练率通过预定的规则进行优化的调整。

学习率调度类型

步长衰减

  • 在达到每个预定义的 epoch 阈值后,预定的参数会以定义的因子减小学习率。
  • 受益于较小步长尺寸的模型可以使用此技术,因为它提供了简单的功能和高效的性能。
  • 手动放置分解步骤和因子需要大量的手工劳动,因为它耗时过长。

指数衰减

  • 随着训练过程的继续,学习率以定义的指数速率减小。
  • 该方法通过平滑地减小学习率来维持训练的稳定性。
  • 由于强衰减对模型施加了过大的力,学习率无法达到足够的收敛速率。

周期性学习率

  • 在一个周期内,学习率在最小值和最大值之间波动。
  • 由于这种方法,模型成功地探索了损失表面并逃离了浅的局部最小值。
  • 要达到期望的结果,需要正确调整周期参数。

学习率选择的挑战

使用过高学习率的风险

  • 发散:由于高学习率值,模型在不正确的点达到理想解决方案。当模型无法获得损失函数的良好局部最小值或全局最小值时,会发生权重震荡。损失函数未能减小甚至增加通常是训练期间出现的一种表现。
  • 不稳定的指令:当每次学习周期中的权重更新变得很大时,模型会产生不稳定的行为。与平滑衰减相反,损失曲线由于这种不稳定性而呈现出不稳定的模式,导致不可预测的波动。在严重的情况下,训练失败将使模型完全无法用于预期目的。
  • 泛化能力差:由于其高学习率导致错过精细的数据模式,模型显示出较差的模式识别能力。由于不正确的权重分配导致欠拟合或过拟合条件,模型在未知数据上的有效性会降低。

使用过低学习率的风险

  • 收敛缓慢:对于非常低的学习率,模型权重只能在一次训练迭代中进行一次转换。模型表现出极佳的稳定性,但由于这种情况,其收敛速度非常缓慢。训练需要延长才能找到完美的解决方案,从而增加计算和时间相关的费用。
  • 陷入局部最小值:当学习率设置得非常低时,优化过程会陷入低于最优的损失函数区域,包括鞍点或不良的局部最小值。模型将产生较弱的权重和不准确的预测,因为其不足的参数更新未能避开训练空间中受影响的区域。解决这些挑战。

解决这些挑战

  • 在训练期间,学习率调度器通过指数衰减路径和步长衰减方法帮助调节速率参数。
  • 有几种自适应优化器可用于改变学习率如何为单独的参数调整其值,例如 Adam、RMSprop 和 AdaGrad。
  • 评估损失曲线行为有助于检测任何所需调整的停滞和发散模式。

确定最佳学习率的策略

网格搜索和随机搜索

其中确定最佳学习率的主要方法是网格搜索与随机搜索相结合。

网格搜索

  • 在此方法中,学习率部分被平均分割。从预定义的网格结构中选择多个不同的学习参数来训练过程,并执行多次。

优点

  • 它允许通过对候选网格值进行有序调查来评估每个可能的选择。
  • 通过这种方法,可以评估具有不同学习率值的模型,并给出其性能的实际结果。

缺点

  • 计算成本高,特别是对于大型数据集或深度模型
  • 对于高维超参数空间效率低下。

随机搜索

  • 随机搜索使用一组定义的边界,我们从中抽取学习率评估,而不对网格中的所有可能值进行采样。

优点

  • 比网格搜索更快、计算效率更高。在评估过程中,性能返回的测试次数较少,但结果有效。

缺点

  • 由于它是随机采样过程,可能会错过最优值。

学习率查找器方法

用户采用的方法是通过学习率查找器方法,这是确定最成功的学习率的最简单方法,需要一系列步骤。

  • 训练的开始需要实现 10−6 作为起始学习率。
  • 学习率的增加是逐个训练迭代或批次完成进行的。
  • 应与训练损失一起评估稳步增加的学习率值。
  • 此外,可视化学习率因子与损失值之间的关系,以增强对最合适学习率的理解。

优点

  • 它在测量方面为我们提供了准确的结果,说明学习率的变化将如何影响测量结果。
  • 这种程序的一次单独训练运行相结合使用,使其能够比穷举搜索方法更有效地运行。

缺点

  • 在模型损失数据存在极端变化的情况下,此方法可能无法产生令人满意的结果。
  • 对批次大小和数据集特征敏感。

超参数优化技术

贝叶斯优化

  • 它建立了一个学习率性能的概率代理函数(例如,高斯过程)。
  • 该方法依赖于先前的评估结果来识别可能的高性能学习率区域并指导其探索。
  • 它追求新的潜在解决方案以及现有解决方案的可行性。

优点

  • 网格搜索和随机搜索更有效,尤其是在高维空间中。
  • 它建议有希望的评估区域,因此需要更少的评估即可达到最优解决方案。
  • 可以同时优化多个超参数。

缺点

  • 实现起来计算量大。
  • 这项技术必须由具有复杂优化方法专业知识的技术人员来实现。

可视化和调试学习率问题

损失曲线分析

训练过程的性能很大程度上取决于学习率的值,并且可以通过损失曲线进行评估。

  • 高学习率会导致损失不稳定,因为震荡或增长的变量信号了不稳定的训练过程。
  • 当学习率保持在最低值时,损失函数移动得非常慢,因此学习率会使损失函数呈直线,该线是平坦的。
  • 在学习率设置正确的情况下,损失会适当地降低,并且波动很小。

示例可视化

  • 使用设置良好的学习率,学习损失将逐渐下降并达到其最佳最小值。
  • 因此,糟糕的学习率会导致两种问题:损失在短时间内呈指数增长(损失尖峰)或完全损失平坦化。

梯度爆炸或消失问题

梯度是反向传播中的重要组成部分,它驱动反向传播期间的权重更新。这使我们能够直接根据梯度幅度调整学习率,而错误的设置对性能非常危险。

梯度爆炸

  • 模型中不受控制的权重增长会导致NaN 值以及发散的症状。
  • 梯度幅度图中存在巨大的尖峰,表明了这些现象。

梯度消失

  • 出于某种原因,梯度下降得如此之低,以至于它们实际上不存在,这意味着我们的模型无法再学习。
  • 在监控具有许多层的网络的视觉方法中,可以看到接近零的值,表明存在平坦的梯度区域。

调试技术

  • 为了逐层检查幅度变化,应用梯度范数的视频可视化很有用。
  • 梯度裁剪的方法可以将在允许的梯度大小限制在一定程度。
  • 两个自适应学习率系统很容易解决这些优化问题。

可视化学习率行为的工具

学习率调度器

  • PyTorchTensorFlow通过其集成调度器中的函数来调整学习率。
  • 您可以使用 Matplotlib 可视化工具直观地表示学习率随时间的变化。

TensorBoard

  • 在训练期间,TensorBoard 提供学习率调整、损失曲线和梯度可视化。
  • 该系统对用户有益,因为他们可以将多个图形组合起来进行多维检查。

Weights & Biases (W&B)

  • 用于实验跟踪和可视化的流行工具。
  • 首先,该系统显示损失指标、梯度统计和学习率平滑的实时图。

梯度分析

  • 此外,自定义脚本可以在训练会话期间显示层梯度及其范数值。
  • 此方法可以检测受梯度爆炸或消失影响的层。