NLP高频面(54)深度学习优化器详解
NLP高频面(54)深度学习优化器详解¶
本文讨论了深度学习优化器的相关内容,包括梯度下降法的思想、各类优化器的原理及特点,以及不同梯度下降方式的区别。关键要点包括:
梯度下降法思想:是一阶迭代优化算法,沿损失函数负梯度方向更新参数逼近最小值点,常用损失函数可微分,能用于训练模型。
随机梯度下降(SGD):每次随机抽样本近似算梯度,降低计算开销,但更新噪声大、易陷鞍点或局部最优、学习率调参复杂。
Momentum 动量法:在参数更新中引入“惯性”,对历史梯度指数加权累积,加速更新、抑制振荡。
Adagrad:为每个参数维护累积的梯度平方和,动态调整学习率。
RMSProp:在 Adagrad 基础上引入衰减因子,自适应调整学习率,克服学习率过度衰减问题。
Adam:结合动量法和 RMSProp 优点,对梯度和梯度平方进行一、二阶矩估计,鲁棒性好,常用于深层神经网络训练。
不同梯度下降方式区别:批量梯度下降(BGD)适用于小规模数据;随机梯度下降(SGD)节省计算资源但易抖动;小批量随机梯度下降(Mini-Batch GD)综合两者优势,常用批次大小为32、64、128等。
在深度学习的训练过程中,各种基于梯度的优化器肩负着寻找损失函数最优解的重任。最基础的梯度下降法通过沿着损失函数负梯度方向迭代更新参数,实现对模型参数的优化;而随机梯度下降
(SGD)则以更高的计算效率和内存利用率在大规模数据集上大放异彩,但也因更新噪声大、易陷入鞍点或局部最优而存在局限。为克服这些问题,Momentum、Adagrad、RMSProp、Adam等优化器相继提出,分别通过动量项、参数自适应学习率或两者结合,有效提高了收敛速度与稳定性。最后,批量梯度下降(BGD)、随机梯度下降(SGD)和小批量梯度下降(Mini-Batch GD)在计算精度和效率之间各有取舍,成为不同场景下的常用方案。
梯度下降法的思想¶
基本概念¶
梯度下降法是一种一阶迭代优化算法,通过计算 $ \underline{\text{损失函数}} $关于模型参数的梯度,并沿梯度的负方向更新参数,逐步逼近最小值点。在机器学习和深度学习中,常用的损失函数如均方误差或交叉熵均满足可微分条件,因而可应用梯度下降法来训练模型。
数学原理¶
设损失函数为 $ J(\theta) $,参数向量为 $ \theta $,学习率为 $ \alpha $,则每次迭代的更新公式为:
$$ \theta\gets\theta-\alpha\nabla_{\theta}J(\theta) $$
此处 $ \nabla_{\theta}J(\theta) $ 表示损失函数在当前参数处的梯度,选择合适的学习率能够保证算法收敛至局部或全局最优点。
随机梯度下降(SGD)¶
SGD 是如何实现的?¶
随机梯度下降不再对整个训练集求梯度,而是每次随机抽取一个样本(或少量样本)来近似计算梯度,从而大幅降低单次更新的计算开销。具体过程为:
-
随机打乱训练集;
-
对于每个样本 $ (x_i, y_i) $,计算梯度 $ \nabla_\theta \ell(\theta; x_i, y_i) $;
-
按照 $ \theta \leftarrow \theta - \alpha \nabla_\theta \ell(\theta; x_i, y_i) $ 更新参数;
-
重复直至满足停止条件。
SGD 有什么缺点?¶
更新噪声大:单样本计算导致梯度估计方差高,更新方向不稳定,收敛轨迹会呈现较大抖动;
易陷入鞍点或局部最优:由于噪声大,可能反复在鞍点附近徘徊,难以逃逸;
学习率调参复杂:需设计合适的学习率衰减策略,否则可能早期振荡或后期收敛过慢。
Momentum 是什么?¶
动量法在参数更新中引入“惯性”概念,通过对历史梯度进行指数加权累积,加速在相关方向上的更新,抑制噪声带来的振荡。具体公式为:
$$ v_{t}=\beta v_{t-1}+(1-\beta)\nabla_{\theta}J(\theta_{t-1}), $$
$$ \theta_{t}=\theta_{t-1}-\alpha v_{t}, $$
其中 $ v_{t} $ 为动量变量, $ \beta $ 为动量系数(通常取 0.9 左右)。动量法既能加速收敛,又能帮助算法越过局部鞍点。
Adagrad 是什么?¶
Adagrad(Adaptive Gradient Algorithm)针对每个参数维护一个累积的梯度平方和,并据此动态调整学习率:
图片占位,没找到img
RMSProp 是什么?¶
RMSProp(Root Mean Square Propagation)在 Adagrad 的基础上引入了衰减因子,对历史梯度平方和进行指数加权平均:
$$ \begin{array}{r}{\boldsymbol{E}[g^{2}]{t}=\rho\boldsymbol{E}[g^{2}] $$ }+(1-\rho)\left(\nabla_{\theta}J(\theta_{t-1})\right)^{2},}\end{array
$$ \theta_{t}=\theta_{t-1}-\frac{\alpha}{\sqrt{E[g^{2}]{t}+\epsilon}}\nabla), $$ }J(\theta_{t-1
其中 $ \rho $为衰减率(一般取0.9左右)。RMSProp能够自适应调整学习率,克服Adagrad学习率过度衰减的问题,提高了收敛速度和稳定性。
Adam 是什么?¶
Adam(Adaptive Moment Estimation)结合了动量法和 RMSProp 的优点,同时对梯度和梯度平方进行一阶和二阶矩估计:
$$ m_{t}=\beta_{1}m_{t-1}+(1-\beta_{1})\nabla_{\theta}J(\theta_{t-1}), $$
$$ v_{t}=\beta_{2}v_{t-1}+(1-\beta_{2})(\nabla_{\theta}J(\theta_{t-1}))^{2}, $$
$$ \hat{m}{t}=\frac{m}}{1-\beta_{1}^{t}},\quad\hat{v{t}=\frac{v, $$ }}{1-\beta_{2}^{t}
$$ \theta_{t}=\theta_{t-1}-\alpha\frac{\tilde{m}{t}}{\sqrt{\hat{v}. $$ }}+\epsilon
Adam 对稀疏梯度和非平稳目标都有良好鲁棒性,通常在深层神经网络训练中表现优异,并已成为默认优化器之一。
批量梯度下降(BGD)、随机梯度下降(SGD)与小批量随机梯度下降(Mini-Batch GD)的区别
| 方法 | 梯度计算 | 计算效率 | 收敛特性 |
| BGD | 全量数据 | 慢,内存开销大 | 收敛稳定,但计算开销高 |
| SGD | 单样本 | 快,内存需求低 | 更新噪声大,收敛抖动 |
| Mini-Batch GD | 小批量样本 | 兼顾效率与稳定 | 平衡收敛速度与稳定性 |
BGD 适用于小规模数据,能够准确地向全局最优逼近,但对大规模数据集并不现实。
SGD 通过单样本更新大幅节省计算资源,但易产生抖动且不易并行。
Mini-Batch GD 综合了两者优势,常用批次大小为 32、64、128 等,既能利用向量化计算,又能保持一定的更新平滑性。