本文旨在解决有关学习率的常见问题,学习率也称为步长。大家应该能够了解到有关学习率的多数疑虑解惑,希望对正在阅读的你们有所帮助。
什么是学习率?它的用途是什么?我们知道,神经网络计算其输入的加权总和,并将其通过激活函数传递以获得输出。为了获得准确的预测,一种称为梯度下降(GD)的学习算法会在从输出向输入后退的同时更新权重。当对训练集的每个样本进行更新时,我们就会提到随机梯度下降(SGD)。
梯度下降优化器通过最小化损失函数(L)来估计多次迭代中模型权重的优选值。这就是学习率的作用。它控制模型学习的速度,换句话说,控制权重更新以达到L的最小点的速度。表达了新旧权重值之间的关系。如下:
学习率是否取负值?
梯度∂L/∂w是沿着损耗函数的增加方向的向量。因此,-∂L/∂w是沿L的减小方向的向量。由于η大于0,因此是正值,所以-η∂L/∂w朝着L的减小方向向L减小。最低点。如果η为负值,则正在远离最小值。它正在扭转梯度下降的作用,甚至使神经网络无法学习。如果考虑否定学习率值,则必须对上述方程式进行一个细微但必不可少的更改,以使损失函数保持最小:
学习率的典型值是多少?
学习速率的典型值范围是10 E-6和1。在这里,必须知道已经为GD,具有动量的GD和SGD建立了该速率,对于任何优化问题,梯度下降都收敛到局部极小值如果学习率小于1 / L,则L是损失函数相对于参数的Lipschitz平滑度。
梯度上学习率选择错误的问题是什么?
达到最小梯度所需的步长直接影响模型的性能:
小学习率会消耗大量时间收敛或由于梯度消失而无法收敛,即梯度变为0。较高的学习率会使模型处于过度逼近最小值的风险,因此它将无法收敛:所谓的爆炸梯度。消失和爆炸梯度
因此,我们的目标是调整学习率,以使梯度下降优化器以最少的步数达到L的最小点。通常,应该选择理想的学习速率,该速率应足够低,以使网络收敛到有用的东西而不会导致梯度消失,而应足够高,以便可以在合理的时间内训练模型而不会引起爆炸梯度。
除了选择学习率,损失函数的形状以及选择优化器之外,还要确定要达到目标最小值的速度和收敛速度。
错误的权重学习率有什么问题?
当我们的输入为图像时,学习率设置不当会导致噪声特征,如下图所示。恰恰相反,良好的学习速度是平滑,干净和多样化的功能。正确和不正确设置的学习率将决定模型的预测质量:进行良好的培训还是未融合的网络。
由神经网络的第一层产生的绘图特征:设置学习率不正确(左)和正确(右)的情况
我们可以先预先估算出最佳学习率吗?
对于简单的模型,这是可能的。对于复杂的学习者,从理论推论中计算出导致最准确的预测的最佳学习率是不可行的。为了发现给定数据集上给定模型的最佳学习率值,必须进行观察和体验。
我们如何设置学习率?通过参考文献中的内容,大致区分出4种主要方法,大家可以选择这些方法来调整模型的学习率。
以下是配置η值所需了解的所有内容。
使用固定的学习率:
确定将在所有学习过程中使用的学习率值。在这里,两种方式是可能的。第一种是由实践中常用的常用值组成,即0.1或0.01。第二种方法更为相关,因为必须寻找适合特定问题和神经网络架构的正确学习率。如前所述,学习率的典型值范围是10 E-6和1。因此,我们可以在这个范围内以10的不同数量级进行粗略搜索,以找到学习率的最佳的子范围。然后,我们就可以在粗略搜索所找到的子范围内以较小的增量细化搜索。在实践中,可能会发现一种启发式方法是在训练中观察损失,以找到最佳的学习率。
使用学习率表:
与固定学习率不同,此替代方法需要根据计划在训练时期内改变η值。在这里,我们将从较高的学习率开始,然后在模型训练期间逐渐降低学习率。这是合乎逻辑的!在学习过程的开始,权重是随机初始化的,并且距离优化还很遥远,因此较大的更改步骤就足够了。在学习过程即将结束时,需要更精确的权重更新。通常每隔几个步骤减少一次学习步骤。学习率也可以在固定数量的训练时期内衰减,然后对于其余的训练时期保持较小的恒定值。
在第一种方案中,对于固定数量的训练时期,每次损失平稳(即停滞)时,学习率都会降低。关于第二种方案,减小学习率直到达到接近0的小值。在这里,我区分了三种降低学习率的方法,即步长衰减,指数衰减和1 / t衰减。
为SGD增加动力:
它包括在经典SGD方程中添加一个术语:
由于Vt-1,这个附加项考虑了权重更新的历史,这是过去梯度的指数移动平均值的累积。这可以平滑SGD的进程,减少其振荡,从而加速收敛。但是,这需要设置新的超参数γ。除了学习速率η的挑战性调整外,还必须考虑动量γ的选择。γ设置为大于0且小于1的值。其常用值为0.5、0.9和0.99。我不会详细说明动量。将在旁边的文章中进行处理。
自适应学习率的使用:
与上述方法不同,不需要手动调整学习速度。根据权重的重要性,优化器可以调整η来执行更大或更小的更新。此外,确保了模型中每个权重的学习率。自适应梯度下降变体的示例包括:自适应梯度(Adagrad),Adadelta,均方根传播(RMSProp)和自适应矩估计(Adam)。在这里我们应该知道,没有哪个算法可以完美地解决所有问题。
这是用于学习率配置的主要方法的概述。它提供了一个简洁的图形表示形式:
学习率的实际经验法则是什么?学习率是模型所依赖的最重要的超参数。因此,如果不得不设置一个且只有一个超参数,则必须优先考虑学习率。这里可以了解一下另一个重要的神经网络超参数:激活函数。模型学习速率的调整非常耗时。因此,不必执行网格搜索来找到最佳学习率。为了获得成功的模型,找到足够大的学习速率以使梯度下降有效收敛就足够了,但又没有太大的学习速率就不可能收敛。如果选择一种非自适应学习率设置方法,则应注意该模型将具有数百个权重,而不是数千个权重,每个权重都有自己的损失曲线。因此,必须设置适合所有学员的学习率。此外,损失函数实际上并不具有清晰的U形。它们往往具有一些局部最小值的更复杂形状。 自适应方法极大地减轻了适当学习率配置的挑战性任务,这使得它们变得更加常用。此外,它的收敛速度通常更快,并且优于通过非自适应方法无法正确调整学习率的模型。具有动量的SGD,RMSProp和Adam是最常用的算法,这是由于它们在几种神经网络体系结构和问题类型上的鲁棒性。感谢阅读!希望对你有用!