学习率是一个超参数,用于控制机器学习模型在优化算法的每一步中调整参数的程度。学习率可决定模型在训练过程中是否能提供最佳性能或无法学习。
优化算法的目标是最小化度量模型预测与实际数据之间差距的损失函数。每次模型运行其优化算法时,它都会根据结果更新其参数。学习率或步长由希腊字母 η 表示,并确定允许模型进行的更改的大小。
学习率有助于确保模型从训练中学习到足够的知识,从而对其参数进行有意义的调整,同时又不会过度修正。想象一下下山的情景。要想安全到达山底,速度必须足够快,才能取得有意义的进展,但又不能太快,以免失去控制,跌跌撞撞。最佳学习率设定了安全的下山速度。
每一步训练都代表着模型推翻了之前对数据集的理解。神经网络每通过一次优化算法,就能“学习 ”更多关于训练数据的知识。
学习率很重要,因为它可以指导 AI 模型从训练数据中有效地学习。
低学习率无法让模型在每一步都有足够的“学习”。模型更新参数的速度太慢,需要太长时间才能达到收敛。但这并不意味着高学习率就是答案。
如果学习率过高,算法就会出现“过冲”现象:即在纠正错误时走得太远。在这种情况下,算法需要较小的学习率,但也不能太小,以免学习效率低下。
举个例子,想象一个外星人来了解地球上的生命。外星人看到了猫、狗、马、猪和牛,并得出结论:所有动物都有四条腿。然后,外星人看到了一只鸡。这种生物也是动物吗?根据外星人的学习速度,他们会得出三种结论之一:
在最佳学习率下,外星人会得出结论,鸡也是动物。如果是这样的话,这一定意味着腿的数量不是决定某物是否是动物的关键因素。
如果外星人的学习率低,就无法从它这只鸡身上获得足够的洞察分析。外星人会得出结论,鸡不是动物,因为它们没有四条腿。外星人的学习能力很弱,在看到更多的鸡之前,它无法更新自己的思维。
在高学习率下,外星人会过度纠正。现在,它会得出这样的结论:因为鸡是一种动物,而且鸡有两条腿,所以所有动物都必须有两条腿。高学习率意味着模型一次学习的东西“太多”。
不同的学习率会导致不同的学习结果。最佳学习率是指能够让算法及时调整模型参数,同时又不会超过收敛点的学习率。
参数是管理深度学习模型工作方式的配置变量。参数类似于模型的设置,它们决定了模型的行为,可以通过调整参数来提高模型的性能。
模型学习参数或模型权重是模型的内部参数,在训练过程中学习。在每个训练步骤中,模型都会改变其内部参数,以提高性能。型变模化的大小由学习率决定。模型参数的配置直接影响其性能。
对模型进行微调时,由于模型已经过训练,因此只需进行较小程度的调整。微调通常需要比最初训练模型时更低的学习率。
超参数是塑造模型结构和训练过程的外部规则。它们由负责训练模型的人员配置。学习率就是这样一个超参数,其值通常在 0.0 和 1.0 之间。
另外两个基本超参数是:
历元:整个训练数据集在训练过程中通过模型的次数。当模型处理训练数据中的每个样本一次时,即完成一个历元。历元超参数设置了训练过程中的历元数。
批次大小:训练历元可以分解为称为“批次”的更小块。每个训练批次结束后,模型都会更新权重。
历元设置了训练过程的持续时间,而批次大小则决定了模型更新权重的频率。学习率则告诉模型在每批训练后要学习多少内容。
梯度下降是一种用于训练机器学习模型的优化算法。梯度下降算法使用损失函数来描绘机器学习算法的预测值与实际值之间的差异。梯度是函数的斜率,代表其潜在值。
优化算法的目标是将梯度降到局部最小值,即函数产生最低输出的地方。但局部最小值并不一定是函数的奇异全局最小值,或其整体最小值。数据科学家使用其他算法和正则化等辅助方法,使模型不会随着损失函数输出的减少而陷入局部最小值的次优状态。
通过最小化损失函数来更新模型权重的过程称为反向传播。梯度下降法是一种常用的反向传播技术。
每次算法更新模型参数以减少损失函数并降低梯度时,模型就会更接近收敛。学习率通过限制算法更新模型权重的速度来控制这种下降。
梯度下降有三种类型:
批量梯度下降在计算数据集中所有样本的损失后进行迭代。它具有很高的稳定性,但在达到最佳收敛性方面并不是最好的选择。
随机梯度下降 (SGD) 在每次迭代中随机选择一个数据点,从而大大提高了速度,改善了细微差别。但其较高的更新频率会降低稳定性。SGD 有很多变体,包括 Adam、AdaGrad 和 RMSProp。
小批量梯度下降是一种折中方法,每次迭代只选择一小组数据点。它提供了良好的更新频率和速度,同时又不牺牲稳定性。
确定合适的学习率在很大程度上是一个试错过程。目前还没有一种万无一失的数据科学技术,可以在不评估训练进度的情况下保证最佳的初始学习率。
确定学习率的常用方法包括:
网格搜索
学习率计划
自适应学习率
超参数优化
学习率优化在很大程度上依赖于衰减和动量的核心原理。许多深度学习库都会代表用户计算衰减和动量。用 Python 编写的开源 Keras API 就是这样一个库,它支持 TensorFlow、JAX 和 PyTorch。
随着训练的进行,衰减会减慢学习率。有效地使用衰减可以使模型在开始时快速学习,然后循序渐进,以避免过度收敛。
动量是优化算法的惯性。当梯度沿同一方向变化时(这意味着算法尚未达到收敛),它能提高学习率,同时绕过局部极小值继续向下推进。增加动量可以加快收敛速度。低动量会使训练停滞在较小的局部极小值上,而高动量则会意外跳过较大的局部极小值。
网格搜索是一种确定学习率的粗暴方法。数据科学家组装一个包含所有潜在学习率的网格。然后,测试和验证每个学习率。验证在一组新数据上测试训练好的模型,并进一步更新其超参数。
虽然网格搜索有助于实现详尽的学习率评估过程,但它既耗时又需要大量计算。
学习率计划在训练过程中根据几个预定计划之一更新学习率。常见的学习率计划包括:
固定学习率
基于时间的衰减
步长衰减
指数式衰减
多项式衰减
固定学习率或恒定学习率在训练过程中不会发生变化。在固定学习率的情况下,动量和衰减在训练期间保持不变。固定学习率为测试其他学习率策略提供了一个基准或参考点。
基于时间的学习计划会在预定的训练历元后或指定的历元触发学习率衰减。学习率的衰减量基于上一周期的学习率。典型的基于时间的学习计划将衰减建立在与训练历元数成反比的系数上。
步长衰减会在设定的历元次数后,将学习率降低一个预定系数,例如减半。
指数式衰减学习率在设定的历元次数后以指数形式递减。否则,指数衰减学习计划与步长衰减计划类似。
在多项式学习计划中,衰减是由当前历元的多项式函数决定的。用更大的指数乘以当前时间会增加衰减率,而用更小的幂则会保持更稳定的衰减率。
循环学习计划定义了最小和最大学习率,然后在两者之间跳动学习率。三角形学习计划从最小值到最大值,再按设定的常数线性递增。其他计划使用余弦函数、正弦函数或抛物线函数。
自适应学习算法会根据当前条件或之前的迭代进行动态调整。相比之下,计划学习率全部取决于预定义的超参数。
许多自适应学习方法都是 SGD 的变体。知名的自适应学习算法包括:
AdaGrad:AdaGrad(自适应梯度)算法系列于 2011 年推出,可单独更新每个参数的学习率。它通常在学习率和特征频率之间设置反比关系。这种方法持续关注数据集更相关的特征。
RMSProp:RMSProp (均方根传播) 根据每个梯度平方的移动平均值调整每个参数的学习权重。它通过忽略远期梯度来改进 AdaGrad,从而提高了稳定性并加快了收敛速度。
Adam:2014 年推出的 Adam(自适应矩阵估计)将动量与 RMSProp 相结合,可根据每个参数之前的梯度来调整其学习率。Adam 的后期版本添加了热启动,在开始训练时逐步提高学习率。
超参数优化或超参数调整是确定所有超参数(包括学习率)的最佳配置的做法。超参数微调算法可自动执行最佳超参数的配置过程,每种算法都偏向某些超参数而非其他超参数。
搜索整体最优超参数配置可以考虑每个超参数对其他参数的影响。不过,这种方法的计算成本会变得很高,尤其是在超参数数量较多的情况下。
我们对 2,000 家组织进行了调查,旨在了解他们的 AI 计划,以发现哪些方法有效、哪些方法无效,以及如何才能取得领先。
IBM Granite 是我们开放式、性能优异、值得信赖的 AI 模型系列,专门为企业量身定制,并经过优化,可以帮助您扩展 AI 应用程序。深入了解语言、代码、时间序列和护栏选项。
立即购买单用户或多用户订阅,即可访问我们完整的包含 100 多个在线课程的目录,以低廉的价格扩展您的技能。
本课程由 IBM 资深思想领袖带领,旨在帮助企业领导者获得所需的知识,以便划分可以推动增长的 AI 投资的优先级。
想要从 AI 投资中获得更好的回报吗?了解如何通过帮助您最优秀的人才构建和提供创新的新解决方案,在关键领域扩展生成式人工智能来推动变革。
了解如何自信地将生成式 AI 和机器学习融入您的业务中。
深入了解强大 AI 战略的 3 个关键要素:创造竞争优势、在整个企业中扩展 AI 以及推进值得信赖的 AI。