优化器 Optimizers

Kaleido Lv4

优化器

参考文献:An overview of gradient descent optimization algorithms

优化器在机器学习和深度学习中扮演着核心角色,它们用于调整模型中的参数以最小化损失函数。在监督学习任务中,损失函数衡量的是模型预测与真实值之间的差异。优化器通过迭代地调整模型参数来减小这个差异,从而使模型在训练数据上的表现越来越好。

梯度下降

梯度下降是一种最简单的优化算法。在每次迭代中,它计算整个训练数据集的损失函数关于模型参数的梯度,并沿着梯度的反方向更新参数。更新规则如下:

其中,是模型参数,是学习率,是损失函数,是损失函数关于的梯度。梯度下降简单但计算量大,且可能会陷入局部最小值。

批量梯度下降 BGD

此处的“批量”其实指的就是整个训练集的数据。

随机梯度下降 SGD

随机梯度下降在每次迭代中只随机选择一个样本来计算梯度,然后更新参数。这使得SGD比梯度下降快得多,并且有助于跳出局部最小值。更新规则如下:

其中,和是随机选中的一个样本及其标签。

  • 优点:由于每次更新只使用一个样本,计算速度大大提高。并且由于更新过程中的随机性,SGD有时能够跳出局部最小值,找到更好的解。
  • 缺点:过程带有随机性,可能造成损失函数在收敛过程中严重震荡。

小批量梯度下降 MBGD

小批量梯度下降即BGD和SGD的折中。

Mini-batch gradient descent (MBGD) 虽然结合了批量梯度下降(BGD)和随机梯度下降(SGD)的优点,但仍然存在一些问题:

  • 收敛性:MBGD不能保证总是收敛到全局最小值,特别是对于非凸函数,可能会陷入局部最小值或者鞍点。此外,由于MBGD每次更新使用的是数据的一个小批量,因此即使到达了鞍点或局部最小点,由于批量的随机性,梯度仍然可能不为零,导致算法在这些点附近震荡,而不是稳定下来。

  • 学习率:选择合适的学习率非常关键。学习率过大可能会导致在极小值点附近震荡甚至偏离,而学习率过小则会导致收敛速度变慢。尽管可以通过学习率衰减策略来调整,但这种方法需要预先设定阈值,可能无法适应不同数据集的特点。

  • 参数更新:MBGD对所有的参数使用相同的 learning rate 进行更新,这可能不适合于数据稀疏的情况。在稀疏数据中,我们可能希望对出现频率低的特征进行更大的更新。

在梯度下降公式中,存在两个能够改进的点,一是梯度,二是学习率。两者分别衍生出动量(momentum)方法与自适应(adaptive)学习率方法。

动量优化

动量优化法(Momentum)是一种在梯度下降算法中常用的优化技术,它借鉴了物理学中的动量概念,用于加速学习过程并减少震荡。动量方法通过考虑之前梯度的指数衰减平均值来更新参数,使得参数更新时不仅考虑当前的梯度,还考虑历史梯度的影响。

动量优化法通过引入一个称为“动量”的变量来跟踪过去梯度的累积影响。这个动量变量是梯度的累积加权平均值,其权重随着时间的推移而指数衰减。具体来说,动量算法在每次迭代时,将当前的梯度与之前的动量相加,并使用这个累积梯度来更新参数。更新规则如下:


  1. 计算当前梯度
  2. 更新动量
  3. 应用动量来更新参数

动量因子(通常表示为)的经验值为0.9,意味着在动量优化法中,参数的更新主要依赖于历史累积的下降方向,并略微偏向当前时刻的下降方向。这种设置使得算法在梯度方向发生改变时,能够减少参数的更新速度,从而降低震荡;而当梯度方向保持一致时,动量能够加速参数的更新,加快收敛速度。

自适应学习率优化

AdaGrad(Adaptive Gradient)

AdaGrad是一种自适应学习率优化算法,它通过自动调整每个参数的学习率来解决传统梯度下降中学习率选择困难的问题。AdaGrad的核心思想是对于频繁更新的参数给予较小的学习率,而对于不频繁更新的参数给予较大的学习率。


  • 是在时间步的参数值
  • 是在时间步的参数的梯度
  • 是全局学习率
  • 是从开始到时间步的参数的梯度平方的累加
  • 是一个很小的常数,用于避免除以零

AdaGrad能够为不同的特征提供合适的学习率,提高了算法的效率。但由于梯度平方的累加,学习率会随着时间的推移而不断减小,可能导致训练早期就停止。

AdaDelta

Adadelta通过引入梯度平方的移动平均来调整每个参数的学习率,避免了 AdaGrad算法中学习率不断减小的问题,因为它没有累积全部历史梯度的平方,而是只关注了过去一段时间窗口内的梯度信息。

$$\begin{array}{c}E\left[g^{2}\right]{t}=\gamma E\left[g^{2}\right]{t-1}+(1-\gamma) g_{t}^{2} \ \ \theta_{t+1}=\theta_{t}-\frac{\eta}{\sqrt{E\left[g^{2}\right]{t}+\epsilon}} g{t}\end{array}$$

Adam


$$\begin{aligned} \hat{m}{t} & =\frac{m{t}}{1-\beta_{1}^{t}} \ \hat{v}{t} & =\frac{v{t}}{1-\beta_{2}^{t}}\end{aligned}$$

$$\theta_{t+1}=\theta_{t}-\frac{\eta}{\sqrt{\hat{v}{t}}+\epsilon} \hat{m}{t}$$

  • Title: 优化器 Optimizers
  • Author: Kaleido
  • Created at : 2024-04-10 15:18:53
  • Updated at : 2024-04-11 00:13:59
  • Link: https://redefine.ohevan.com/2024/04/10/ML-优化器/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments