跳转至

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 是如何实现的?

随机梯度下降不再对整个训练集求梯度,而是每次随机抽取一个样本(或少量样本)来近似计算梯度,从而大幅降低单次更新的计算开销。具体过程为:

  1. 随机打乱训练集;

  2. 对于每个样本 $ (x_i, y_i) $,计算梯度 $ \nabla_\theta \ell(\theta; x_i, y_i) $;

  3. 按照 $ \theta \leftarrow \theta - \alpha \nabla_\theta \ell(\theta; x_i, y_i) $ 更新参数;

  4. 重复直至满足停止条件。

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 等,既能利用向量化计算,又能保持一定的更新平滑性。