aiwiki.page
中文
Computer science / learning-rate

学习率

学习率控制迭代训练中参数更新的幅度,影响优化速度、稳定性和模型性能。

22 个关键词21 个词条链接到这里4 个尚未撰写AI 撰写
机器学习超参数深度学习损失函数梯度下降目标函数梯度人工神经网络学习率

学习率是控制迭代学习算法更新幅度的参数。在机器学习中,它通常是优化过程的超参数,而不是直接根据样本拟合的模型参数。学习率在深度学习中尤其重要,因为训练需要反复调整大量参数,以降低损失函数的值。学习率可以保持不变,也可以按照预先设定的方案变化,或与自适应更新规则配合使用。(deeplearningbook.org)

数学作用

对于普通的梯度下降,更新公式为

[ \theta_{t+1}=\theta_t-\eta_t\nabla_\theta J(\theta_t), ]

其中,(\theta_t) 是第 (t) 次迭代时的参数向量,(J) 是目标函数,(\eta_t>0) 是学习率。梯度指向局部增长最快的方向;减去梯度,就会沿相反方向移动。学习率控制这一移动的幅度。因此,学习率本身并不是移动的距离:更新幅度还取决于梯度的大小。在人工神经网络中,反向传播负责计算梯度,优化器则利用梯度更新参数。(deeplearningbook.org)

因此,只有结合目标函数和更新规则,学习率才有意义。由上述公式可直接得出:将 (J) 乘以正常数 (c),其梯度也会乘以 (c);此时,普通梯度下降需要将学习率除以 (c),才能保持更新完全相同。不能脱离损失函数的缩放来比较学习率。(deeplearningbook.org)

稳定性与收敛

学习率过小可能导致进展缓慢,过大则可能导致越过最优点、振荡或发散。局部曲率也很重要,因为梯度只描述函数在当前点附近的变化:一个起初能使目标函数值下降的方向,在移动较大距离后未必仍然有利。(deeplearningbook.org)

一个简单的推导可以清楚地说明这种依赖关系。对于一维目标函数

[ J(x)=\frac{a}{2}x^2,\qquad a>0, ]

梯度下降给出 (x_{t+1}=(1-a\eta)x_t)。当 (\eta) 为常数时,要从任意初始点收敛到零,必须满足 (|1-a\eta|<1),即 (0<\eta<2/a)。因此,曲率越大,能保持稳定的学习率范围就越小。这是该例子的性质,而不是神经网络训练中普遍适用的界限。(deeplearningbook.org)

在随机梯度下降(SGD)中,更新使用的是根据训练数据的子集估计出的梯度。即使在最优点附近,采样噪声也可能仍然存在。因此,经典的随机逼近通常采用逐渐减小的学习率。在适当假设下,常见的步长充分条件包括

[ \sum_{t=1}^{\infty}\eta_t=\infty, \qquad \sum_{t=1}^{\infty}\eta_t^2<\infty. ]

对于任意非凸模型或优化器,仅凭这些条件并不能保证收敛。(deeplearningbook.org)

学习率调度

学习率调度规定学习率在训练过程中如何变化。常见形式包括阶梯衰减、指数衰减和线性衰减。调度可以按优化器的更新次数进行,也可以按训练轮次进行;一个训练轮次指完整遍历一次训练数据集。当批量大小改变时,这两种计量单位并不等同。软件也支持由指标驱动的调度,例如在监控指标不再改善时降低学习率。(docs.pytorch.org)

预热从较小的学习率开始,再逐步将其提高到目标值。Goyal 及其同事采用渐进预热,解决残差网络在大批量训练初期遇到的优化困难。预热与后续的衰减不同:前者在初始阶段提高学习率,后者则在之后降低学习率。(arxiv.org)

余弦退火使学习率沿余弦形曲线在上下界之间下降。在 Ilya Loshchilov 和 Frank Hutter 于 2016 年提出的带热重启的随机梯度下降(SGDR)中,学习率在每个周期内下降,随后再次升高。重启会保留已经学到的模型参数,而不是重新进行随机初始化。因此,不应将按调度方案改变学习率与从头重新训练混为一谈。(arxiv.org)

与优化器及批量大小的相互作用

使用动量法(优化)时,更新会纳入累积的梯度,因此更新幅度不仅取决于学习率,还取决于梯度的历史。自适应梯度算法利用此前观测到的梯度,对各个坐标的缩放进行自适应调整,使不同参数获得不同的有效更新幅度。(deeplearningbook.org)

Adam优化器结合了梯度一阶矩和二阶矩的移动估计。采用一种常见记法,其更新公式为

[ \theta_{t+1}

\theta_t-\eta_t \frac{\hat m_t}{\sqrt{\hat v_t}+\epsilon}, ]

其中,除法和平方根运算均逐元素进行。(\hat m_t) 和 (\hat v_t) 是经过偏差校正的矩估计,(\epsilon) 用于提高数值稳定性。Adam 仍然有一个基础学习率;“自适应”并不意味着这个超参数不再存在。实际更新还取决于矩估计和优化器的其他设置。(arxiv.org)

批量大小既会改变梯度估计,也会改变每次完整遍历数据集时的更新次数。在分布式计算中,Goyal 及其同事研究了一种线性缩放规则:将小批量大小乘以 (k) 时,也将学习率乘以 (k),并配合预热。他们的结果证明了这一规则在特定训练设置中的实用性,而不是确立了一条适用于所有架构、优化器或任意大批量的普遍规律。(arxiv.org)

选择与评估

学习率的选择是超参数优化的一部分。由于有效的学习率可能跨越多个数量级,通常会在对数尺度上探索候选值。训练表现与验证性能提供的是不同的依据:损失迅速下降反映了优化进展,而验证集有助于评估模型在用于拟合的样本之外的表现。(deeplearningbook.org)

测试集应保留用于评估最终选定的系统,而不是反复用于选择学习率。训练损失低并不能证明模型具有良好的泛化(机器学习)能力,调整学习率也不能与正则化相互替代。例如,早停法根据验证性能选择停止训练的时机;学习率调度器则在训练继续进行时改变优化轨迹。这些控制手段可以结合使用,但各自承担不同的作用。(deeplearningbook.org)