ModelCube阅读列表 | 神经网络优化

文摘   科学   2024-07-29 11:18   浙江  

ModelCube(modelcube.cn)是博雅数智自主研发的一站式人工智能科研平台。为全国高校和科研机构的大数据和人工智能科研团队提供一站式科研服务。基于MLOps的实践和企业核心技术,实现了科研场景中全类型数据管理与标注,实验环境快速获取与灵活定制,模型的全生命周期管理,科研成果的管理与发布,以及 AI驱动的论文检索和学习等功能。

1 神经网络优化介绍

神经网络优化是指通过调整神经网络的参数和结构,以提高其性能和泛化能力的过程。优化的目标是使神经网络能够更好地拟合训练数据,并在未见过的数据上进行准确的预测。

在神经网络中,参数表示网络中的连接权重和偏置。通过优化算法,我们可以调整这些参数的值,使得神经网络在训练数据上的损失函数最小化。优化算法使用训练数据中的输入和相应的目标输出来计算损失,并根据损失来调整参数的值,以使网络的预测结果接近目标输出。

神经网络优化的关键步骤如下:

  1. 定义损失函数:选择适当的损失函数来衡量模型的预测输出与实际目标之间的差异。常见的损失函数包括均方误差(Mean Squared Error,MSE)、交叉熵(Cross Entropy)等。
  2. 选择优化算法:选择合适的优化算法来调整神经网络的参数。常见的优化算法包括梯度下降法(Gradient Descent)及其变体,如随机梯度下降法(Stochastic Gradient Descent,SGD)、动量法(Momentum)、Adam等。
  3. 反向传播:使用反向传播算法计算损失函数对于网络参数的梯度。反向传播通过从输出层向输入层逐层传播梯度,计算每个参数对于损失函数的贡献。
  4. 参数更新:根据梯度信息和优化算法,更新网络参数的值。优化算法根据梯度的方向和大小来确定参数的更新幅度。参数更新可以是按批次更新(如批量梯度下降法)或按样本逐个更新(如随机梯度下降法)。
  5. 迭代优化:重复执行步骤3和步骤4,直到满足停止条件(如达到最大迭代次数或损失函数收敛)为止。每次迭代都会使网络的预测结果逐渐接近目标输出,从而提高网络的性能。

通过不断迭代优化过程,神经网络可以逐渐学习到数据中的模式和规律,并提高其预测能力。优化的目标是找到合适的参数值,使得网络在训练数据和未见过的数据上都能够取得良好的性能。

2 常见名词解释

2.1 损失函数(Loss Function)

损失函数(loss function)是用来度量模型的预测值 与真实值Y的差异程度的运算函数,它是一个非负实值函数,通常使用 来表示,损失函数越小,模型的鲁棒性就越好。

损失函数使用主要是在模型的训练阶段,每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数会计算出预测值和真实值之间的差异值,也就是损失值。得到损失值之后,模型通过反向传播去更新各个参数,来降低真实值与预测值之间的损失,使得模型生成的预测值往真实值方向靠拢,从而达到学习的目的。

常见的损失函数包括均方误差(Mean Squared Error,MSE)、交叉熵(Cross Entropy)等。

均方误差损失函数(MSE):

在回归问题中,均方误差损失函数用于度量样本点到回归曲线的距离,通过最小化平方损失使样本点可以更好地拟合回归曲线。均方误差损失函数(MSE)的值越小,表示预测模型描述的样本数据具有越好的精确度。由于无参数、计算成本低和具有明确物理意义等优点,MSE已成为一种优秀的距离度量方法。尽管MSE在图像和语音处理方面表现较弱,但它仍是评价信号质量的标准,在回归问题中,MSE常被作为模型的经验损失或算法的性能指标。

交叉熵损失(Cross Entropy):

交叉熵是信息论中的一个概念,最初用于估算平均编码长度,引入机器学习后,用于评估当前训练得到的概率分布与真实分布的差异情况。为了使神经网络的每一层输出从线性组合转为非线性逼近,以提高模型的预测精度,在以交叉熵为损失函数的神经网络模型中一般选用Tanh、Sigmoid、Softmax或ReLU作为激活函数。

交叉熵损失函数刻画了实际输出概率与期望输出概率之间的相似度,也就是交叉熵的值越小,两个概率分布就越接近,特别是在正负样本不均衡的分类问题中,常用交叉熵作为损失函数。目前,交叉熵损失函数是卷积神经网络中最常使用的分类损失函数,它可以有效避免梯度消散。在二分类情况下也叫做对数损失函数。

2.2 梯度(Gradient)

梯度是一个向量,用于表示函数在某一点上的变化率和方向。在神经网络优化中,梯度是指损失函数关于参数的偏导数,告诉我们在当前参数取值下,损失函数沿着哪个方向变化最快。

更具体地说,假设有一个函数 ,其中 是函数的自变量(也可以看作是神经网络的参数)。函数 的梯度表示为 ,它是一个向量,每个分量都是函数 关于对应自变量的偏导数。

对于神经网络中的优化,希望最小化损失函数。梯度可以帮助找到使损失函数最小化的方向。具体来说,梯度的方向指示了损失函数下降最快的方向,而梯度的大小表示了下降的速率。

2.3 反向传播(Backpropagation)

反向传播(Backpropagation)是一种用于计算神经网络参数梯度的算法,它在神经网络的训练过程中起着重要的作用。通过反向传播,可以有效地计算损失函数对于网络中各个参数的梯度,从而进行参数的更新和优化。

在神经网络中,反向传播的计算是基于链式法则(Chain Rule)的原理。链式法则指如果一个函数通过多个函数复合而成,那么它的导数可以通过这些函数的导数相乘来计算。

在反向传播算法中,首先根据当前的权重和偏置,将输入样本通过前向传播的方式送入神经网络,得到网络的输出。然后,计算输出与真实标签之间的差异,这个差异被称为损失。

接下来,反向传播算法从输出层开始,逐层向前传播梯度。对于每一层,计算该层中每个节点的梯度,即损失函数对于该节点输出的偏导数。这个计算过程是基于链式法则的应用,将梯度从上一层传递到当前层。

具体地,反向传播算法的计算过程如下:

  1. 计算输出层的梯度:根据损失函数的形式,计算输出层节点的梯度。
  2. 反向传播梯度:从输出层向输入层逐层传播梯度。对于每一层,根据该层节点的输出和梯度,计算该层节点的梯度。这个计算过程由链式法则实现,将上一层节点的梯度与当前层的权重相乘。
  3. 更新参数:根据梯度信息和优化算法,更新网络中的参数。常见的优化算法,如梯度下降法及其变体,利用梯度的方向和大小来决定参数的更新幅度。

通过反向传播算法,可以高效地计算神经网络中各个参数的梯度,从而实现参数的优化和网络训练。

2.4 学习率(Learning Rate)

学习率(Learning Rate)是神经网络优化算法中的一个超参数,用于控制参数更新的步长或速度。学习率决定了每次迭代中参数值的调整幅度。

在优化算法(如梯度下降法)中,参数的更新是根据损失函数的梯度来进行的。学习率乘以梯度可以决定参数在每次迭代中的更新幅度。较大的学习率会导致参数更新较大的步长,从而使模型更快地收敛,但也可能会导致不稳定的更新,甚至导致无法收敛。而较小的学习率会使参数更新更加稳定,但可能会导致收敛速度较慢。

选择合适的学习率是神经网络训练的重要任务之一。如果学习率选择过大,可能会导致损失函数在每次迭代中出现较大的波动,甚至无法收敛。如果学习率选择过小,可能会导致收敛速度非常慢,或者在达到局部最优点之前停止优化。

2.5 批量(Batch)

在神经网络的训练过程中,批量(Batch)是指一次性处理的样本数量。批量大小决定了在每次参数更新时使用的训练样本数量。

在训练神经网络时,通常会将训练数据集划分为多个较小的批量进行处理。每个批量中包含多个样本,可以是几十个、几百个,或者更多,具体取决于数据集的大小和可用内存。

选择合适的批量大小是一个重要的决策。较小的批量大小可以提供更多的随机性和多样性,有助于避免陷入局部最优点,但会增加训练的噪声。较大的批量大小可以提供更稳定的梯度估计,但可能会导致计算和内存需求增加。

在实践中,选择合适的批量大小通常是通过实验和调优来确定的。常见的批量大小选择包括32、64、128等。对于小型数据集,可以选择较大的批量大小,而对于大型数据集,可能需要选择较小的批量大小以适应内存和计算资源的限制。

2.6 过拟合(Overfitting)

过拟合(Overfitting)是指机器学习模型在训练数据上表现很好,但在新的、未见过的数据上表现较差的现象。过拟合发生时,模型过度学习了训练数据中的细节和噪声,导致在未知数据上的泛化能力下降。

过拟合通常是由于模型过于复杂或训练数据的数量不足导致的。以下是过拟合的一些常见特征:

  1. 训练集上表现良好:过拟合的模型在训练集上可以达到很高的准确率或低的损失,因为它完美地记住了训练样本。
  2. 在测试集上表现不佳:过拟合的模型在未见过的测试数据上的表现较差,因为它在训练数据中学到了训练集的噪声和细节,并将其错误地应用于新数据。

过拟合的原因可以是以下几个方面:

  1. 模型复杂度过高:如果模型过于复杂,它可以过度拟合训练数据中的噪声和细节,而无法泛化到新数据。例如,深度神经网络的层数过多或每层的节点数过多。

  2. 数据不足:如果训练数据集太小,模型可能会记住训练数据中的每个样本,从而无法学习到更一般的模式。这使得模型在新数据上的性能下降。

  3. 特征选择不当:如果选择了过多的特征或不相关的特征,模型可能会过度拟合训练数据中的噪声,而无法推广到新数据。

2.7 正则化(Regularization)

正则化(Regularization)是在机器学习和统计模型中使用的一种技术,旨在降低模型的复杂性,防止过拟合,并提高模型在新数据上的泛化能力。正则化通过在损失函数中引入额外的惩罚项,对模型的参数进行约束,以控制参数的大小或复杂度。

在正则化中,通常会在损失函数中添加一个正则化项,该项与模型的参数相关。常见的正则化项包括L1正则化和L2正则化。

  1. L1正则化(L1 Regularization):也称为Lasso正则化,它通过在损失函数中添加参数的绝对值之和来惩罚模型的复杂性。L1正则化可以促使模型的某些参数变为0,从而实现特征选择(Feature Selection)的效果,减少不相关或冗余的特征对模型的影响。
  2. L2正则化(L2 Regularization):也称为Ridge正则化,它通过在损失函数中添加参数的平方和来惩罚模型的复杂性。L2正则化将使得模型的参数趋向于较小的值,但不会将参数完全置为0。L2正则化可以防止参数过大,减少模型对训练数据中噪声的敏感度。

正则化的作用是在优化过程中在模型的拟合能力和泛化能力之间达到平衡。通过增加正则化项,优化算法不仅会尝试减小训练误差,还会尽量保持模型参数较小,从而降低过拟合的风险。正则化可以使模型更简洁、更稳定,并提高模型的泛化能力。

3 神经网络优化方法总结

3.1 Adagrad

Adagrad(Adaptive Gradient)是一种优化算法,用于训练神经网络和其他机器学习模型。它通过自适应地调整学习率来实现参数更新。Adagrad的核心思想是对不同参数的学习率进行适应性调整,使得梯度较大的参数获得较小的学习率,而梯度较小的参数获得较大的学习率。

Adagrad的工作原理如下:

  1. 学习率调整:Adagrad为每个模型参数维护一个学习率系数。初始时,所有学习率系数都被初始化为一个较小的值。
  2. 梯度平方累加:在每次迭代中,对于每个参数,Adagrad会计算该参数的梯度,并将其平方累加到一个累加器中。
  3. 参数更新:通过将学习率系数与参数的梯度相乘,计算参数的更新量。学习率系数中较小的值将导致梯度较大的参数更新较小,而梯度较小的参数更新较大。
  4. 累加器更新:在每次迭代中,累加器会根据参数的梯度平方进行更新。较大的梯度会导致累加器的值增加较快,从而降低学习率系数。相反,较小的梯度会导致累加器的值增加较慢,从而增加学习率系数。

Adagrad的优点是它能够自动调整学习率,适应不同参数的梯度变化。这使得在训练的早期阶段,学习率较大,可以快速收敛;而在训练的后期阶段,学习率较小,可以更加稳定地调整参数。此外,Adagrad不需要手动设置全局学习率,减轻了调参的负担。

然而,Adagrad也存在一些缺点。随着训练的进行,累加器中梯度平方的累积会变得越来越大,导致学习率逐渐减小,可能使得训练过早停止收敛。为了解决这个问题,后续的优化算法(如RMSProp和Adam)进行了改进,引入了衰减因子来控制梯度累积的影响。

Adaptive Subgradient Methods for Online Learning and Stochastic Optimization[1]. John C. Duchi, Elad Hazan, Yoram Singer. JMLR 2011.

3.2 Adadelta

Adadelta是Adagrad算法的改进版本,旨在解决Adagrad算法中学习率逐渐减小的问题。Adadelta通过引入梯度累积的衰减因子来动态地调整学习率,从而更好地适应不同参数的梯度变化。

Adadelta的工作原理如下:

  1. 梯度累积:与Adagrad类似,Adadelta也使用累加器来追踪参数梯度的平方和。在每次迭代中,对于每个参数,Adadelta计算其梯度的平方,并将其累积到一个累加器中。
  2. 移动平均梯度:与Adagrad不同,Adadelta不直接使用梯度的平方和来计算参数更新。相反,Adadelta使用一个移动平均梯度(moving average gradient)来近似梯度的平均值。移动平均梯度通过对梯度累积进行指数加权平均计算得到。
  3. 参数更新:通过将移动平均梯度与参数的更新量相乘,计算参数的更新量。与Adagrad不同,Adadelta引入了一个额外的参数——累积平均值的平方根(RMS)的移动平均值。这个额外的参数用于调整学习率,并且使得学习率随着时间的推移而逐渐减小。
  4. 累加器更新:在每次迭代中,累加器会根据梯度的平方进行更新,同时引入一个衰减因子,控制累加器的更新速度。较大的衰减因子会减少梯度累积的影响,从而增加学习率。相反,较小的衰减因子会增加梯度累积的影响,从而减小学习率。

Adadelta的优点是它能够自适应地调整学习率,并且不需要设置全局学习率或手动调整学习率。它通过使用梯度的平方和的移动平均值来控制学习率,从而在训练的不同阶段提供更稳定的更新。

与Adagrad相比,Adadelta的改进在于引入了衰减因子,使得学习率不会逐渐减小到很小的值。这样可以更好地适应不同参数的梯度变化,并提供更好的收敛性能。

ADADELTA: An Adaptive Learning Rate Method[2]. Matthew D. Zeiler. arXiv 2012.

3.3 Adam

Adam(Adaptive Moment Estimation)是一种常用的优化算法,结合了动量(momentum)和自适应学习率的特性,可以有效地进行参数优化。

Adam算法的工作原理如下:

  1. 动量:Adam算法使用动量的概念来加速参数更新。动量通过引入一个指数加权移动平均来追踪过去梯度的方向。在每次迭代中,当前梯度与过去梯度的加权平均进行组合,以获得参数更新的方向和速度。
  2. 自适应学习率:与Adagrad和Adadelta不同,Adam算法使用自适应学习率。它通过保持每个参数的自适应学习率,对参数的更新量进行缩放。自适应学习率是基于每个参数的梯度的一阶矩估计(即均值)和二阶矩估计(即方差)计算得到的。
  3. 参数更新:在每次迭代中,Adam算法计算每个参数的动量和自适应学习率,并将它们组合起来计算参数的更新量。动量项会增加参数更新的速度,而自适应学习率项会根据参数的梯度的一阶矩估计和二阶矩估计进行缩放。
  4. 偏差校正:为了解决Adam算法在训练初期可能存在的偏差问题,Adam算法引入了偏差校正步骤。偏差校正通过对动量和自适应学习率的估计进行校正,使其更接近它们的真实值。这样可以使得算法在训练初期更加稳定。

Adam算法的优点在于它结合了动量和自适应学习率的特性,具有收敛速度快、稳定性好的特点。它适用于各种类型的模型和数据集,并且在实践中广泛应用。

需要注意的是,Adam算法有一些超参数需要调整,如学习率、动量参数和指数衰减率等,适当调整这些超参数可以提高算法的性能。此外,Adam算法对于小样本数据集可能存在一定的过拟合风险,使用时需要谨慎评估和调整。

Adam: A Method for Stochastic Optimization[3]. Diederik P. Kingma, Jimmy Lei Ba. ICLR 2015.

3.4 Qualitatively Characterizing

Qualitatively Characterizing探讨了神经网络优化问题的定性特征化。论文指出了随机梯度下降(SGD)在各种任务上取得成功的原因,并提供了一种观点来解释神经网络优化的相对容易性。

论文首先指出,相对于在复杂的多个低维子空间中存在复杂障碍的错误曲面导航,高维空间中找到一个良好的方向更容易。因此,成功的神经网络优化问题通常是相对容易进行优化的。

然而,论文也提出了一个潜在的限制,即这些成功的神经网络可能是通过广泛的超参数搜索找到了SGD能够轻松优化的问题。这意味着其他超参数对应的优化问题可能过于困难。特别地,较大的神经网络可能更容易适应特定的任务。

通过对成功神经网络的定性分析,该论文为我们提供了对神经网络优化问题的理解。它提供了一种解释为什么SGD在某些任务上取得成功的观点,并指出了潜在的限制和可能的改进方向,对于进一步改进神经网络的训练和优化方法具有重要意义。

Qualitatively characterizing neural network optimization problems[4]. Ian J. Goodfellow, Oriol Vinyals, Andrew M. Saxe. ICLR 2015.

3.5 E-MSA

E-MSA探讨了大批量训练的经验模型。论文提出了一种观点,即深度学习中的大批量训练可以被视为在连续时间中解决最优控制问题,并将其与深度残差神经网络的连续时间动力系统联系起来。

论文通过修改经典的连续逼近法,将其应用于解决最优控制问题,提出了一种新的算法(E-MSA),该算法采用了扩展的PMP作为充分条件。研究人员证明了该算法的收敛性,并在多个基准问题上进行了测试。

通过实验,论文发现在大批量训练中,E-MSA算法在每次迭代中表现出良好的性能,特别是在训练的早期阶段。与基于梯度的方法(如SGD、Adagrad和Adam)相比,E-MSA算法在处理大规模训练数据时具有优势。

Maximum Principle Based Algorithms for Deep Learning[5]. Qianxiao Li, Long Chen, Cheng Tai, Weinan E. JMLR 2017.

3.6 MarginalValue

MarginalValue讨论了自适应梯度方法在机器学习中的边际价值。论文指出,自适应优化方法在训练深度神经网络时越来越受欢迎,这些方法使用从迭代历史中构建的度量进行局部优化,例如AdaGrad、RMSProp和Adam等。然而,通过实验研究,论文发现自适应方法在某些简单过参数化问题中找到的解与传统的梯度下降(GD)或随机梯度下降(SGD)方法找到的解截然不同。

论文通过构建一个二分类问题的例子来说明这一点,其中数据是线性可分的情况下,GD和SGD可以达到零测试误差,而AdaGrad、Adam和RMSProp的测试误差可以任意接近一半。此外,论文还研究了自适应方法在几个最先进的深度学习模型上的实证泛化能力。令人观察到的是,自适应方法找到的解在泛化能力方面比SGD差(通常明显差),即使在训练性能更好的情况下也是如此。

The Marginal Value of Adaptive Gradient Methods in Machine Learning[6]. Ashia C. Wilson, Rebecca Roelofs, Mitchell Stern, Nathan Srebro, Benjamin Recht. NIPS 2017.

3.7 One Neuron

One Neuron研究神经网络中添加一个神经元消除所有糟糕局部最小值。该论文探讨了神经网络优化中的一个主要困难,即损失函数的非凸性导致存在许多糟糕的局部最小值。

在这篇论文中,研究人员关注的是用于二分类任务的神经网络,并提出了一种解决方案来改善损失函数的局部最小值问题:在网络中添加一个特殊的神经元,并引入相关的正则化器。通过在输出层添加一个具有跳跃连接的特殊神经元,或者在每层添加一个特殊神经元,证明了每个局部最小值都是全局最小值。这意味着通过增加这个特殊神经元,可以消除所有糟糕的局部最小值,从而改善优化过程。此外,论文还证明了在新的损失函数中,每个局部最小值处的指数神经元是非活跃的。这意味着增加的神经元和正则化器可以改善损失曲面的景观,而不会影响原始神经网络的表示能力。

Adding One Neuron Can Eliminate All Bad Local Minima[7]. Shiyu Liang, Ruoyu Sun, Jason D. Lee, R. Srikant. NIPS 2018.

3.8 Large-BatchTraining

Large-BatchTraining探讨了在深度学习中使用大批量进行训练的有效性和可行性。由于在不同领域和任务中,大批量训练的极限存在差异,本文提出一个简单易测量的统计量,称为梯度噪声尺度,可以预测各个领域和应用中的最大有效批量大小。

该论文通过实证研究,验证了梯度噪声尺度与批量大小之间的关系,并发现梯度噪声尺度随着训练过程中损失的减小而增加,主要受到模型大小的影响。此外,研究揭示了计算效率和时间效率之间的权衡,并提供了自适应批量大小训练的收益的粗略模型。

贡献在于为大批量训练提供了一个实证模型,帮助理解和优化深度学习模型的训练过程。通过使用梯度噪声尺度,可以更有效地选择适当的批量大小,并节省计算资源和时间。此外,该论文的研究结果还为深度学习领域的实践者提供了有关批量大小和学习率之间关系的指导。

An Empirical Model of Large-Batch Training[8]. Sam McCandlish, Jared Kaplan, Dario Amodei, OpenAI Dota Team. arXiv 2018.

3.9 LotteryTicketHypothesis

Lottery Ticket Hypothesis是由Jonathan Frankle和Michael Carbin于2018年提出的一种假设,用于解释神经网络中稀疏性和可训练性之间的关系。

该假设的核心观点是,任何一个大型且足够深的神经网络中,都存在一些被称为“中奖彩票”的稀疏子网络。这些中奖彩票具备以下特点:

  1. 初始化:中奖彩票是通过随机初始化网络的参数得到的。在网络的初始参数中,存在一小部分参数的初始值恰好使得子网络能够在训练过程中获得高性能。
  2. 稀疏性:中奖彩票具有稀疏性,即只有很少一部分的权重被激活和更新,而大多数权重保持不变或接近于零。
  3. 可训练性:中奖彩票是可训练的,即可以通过训练过程来发掘并优化它们的性能。

根据Lottery Ticket Hypothesis,通过训练神经网络并找到这些中奖彩票子网络,可以得到与完整网络性能相媲美的、参数更少的稀疏子网络。这意味着在训练过程中,大部分参数是冗余的,不需要进行更新,而只有少数参数对于网络性能至关重要。

这个假设的提出引发了对神经网络中参数稀疏性和可训练性之间关系的深入研究。进一步的研究发现,通过使用剪枝(pruning)技术来移除冗余权重,可以在一定程度上验证Lottery Ticket Hypothesis,并得到更加高效和紧凑的神经网络模型。

The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks[9]. Jonathan Frankle, Michael Carbin. arXiv 2018.

3.10 Visualizing Landscape

Visualizing Landscape介绍了一种方法来可视化神经网络的损失景观,以帮助更好地理解和分析神经网络的优化过程。该方法的核心思想是通过主成分分析(PCA)将高维参数空间转换为低维空间,从而能够可视化神经网络的损失函数曲面。通过可视化损失函数曲面,我们可以观察到损失函数的形状、局部极小值、高原区域等信息。通过可视化工具提供了对神经网络优化过程的直观理解。通过观察可视化的损失景观,可以更好理解为什么某些优化算法可能陷入局部最优解,或者为什么某些初始化条件可能导致更好的全局最优解。

此外,该论文还介绍了一种名为"Path-SGD"的算法。该算法通过在损失函数曲面上选择特定的路径,改进了优化算法的性能。这种方法可用于寻找具有更好优化性质的路径,并指导优化算法的设计。通过可视化损失景观,可以获得对优化算法性能和网络架构设计的洞见,从而改进神经网络的训练和优化方法。

Visualizing the Loss Landscape of Neural Nets[10]. Hao Li, Zheng Xu, Gavin Taylor, Tom Goldstein. NIPS 2018.

3.11 Lookahead

Lookahead是一种优化技术,旨在改进深度学习模型的收敛性和泛化性能。它由2019年的论文《Lookahead Optimizer: k steps forward, 1 step back》中提出。

Lookahead优化器结合了乐观方法的快速进展和悲观方法的稳定性的优点。它使用一个“慢”和一个“快”的权重集合来更新模型参数。

Lookahead的工作原理如下:

  1. 初始化:首先,将模型的参数初始化为一个初始值。
  2. 慢步骤:在每个优化步骤中,使用慢权重集合更新模型参数。这类似于传统的优化算法,如SGD或Adam。
  3. 快步骤:在每k个慢步骤之后,使用快权重集合来更新慢权重集合。而快权重集合是通过对慢权重集合进行指数移动平均得到的。这个更新过程通过引入超参数α来控制快权重集合相对于慢权重集合的更新速度。
  4. 回溯:在每个快步骤之后,将慢权重集合回溯到上一次更新之前的状态。这是为了保留先前的权重信息,以防止快权重集合在错误的方向上更新。

Lookahead的关键思想是通过引入快权重集合来提前预测慢权重集合的方向。这种预测可以帮助优化器在参数空间中更快地找到更好的解,并提高模型的收敛速度和泛化性能。

Lookahead Optimizer: k steps forward, 1 step back[11]. Michael R. Zhang, James Lucas, Geoffrey Hinton, Jimmy Ba. NeurIPS 2019.

3.12 Goldilocks Zone

Goldilocks Zone方法旨在帮助更好地理解神经网络损失函数景观的性质和结构,以及如何选择更有效的优化算法和超参数设置。

该方法的关键思想是通过分析损失函数的曲率、梯度和Hessian矩阵等信息,来识别处于Goldilocks Zone中的参数区域。

Goldilocks Zone通常具有以下特征:

  1. 平滑性:Goldilocks Zone中的损失函数曲面相对平滑,没有太多的尖锐极小值或高原。这使得优化算法能够更容易地在此区域内找到全局最优解。
  2. 适度的曲率:Goldilocks Zone中的损失函数曲面具有适度的曲率,既不太陡峭也不太平坦。适度的曲率有助于优化算法在参数空间中更快地收敛。
  3. 信息丰富:Goldilocks Zone中的损失函数景观提供了丰富的梯度和Hessian矩阵信息。这些信息对于优化算法的决策和参数更新至关重要。

通过识别和定位Goldilocks Zone,可以选择更适合的优化算法,以及更合适的学习率、正则化参数等超参数设置,从而提高神经网络的训练效果和泛化性能。

The Goldilocks zone: Towards better understanding of neural network loss landscapes[12]. Stanislav Fort, Adam Scherlis. AAAI 2019.

3.13 RAdam

RAdam(Rectified Adam)是一种优化算法,在解决Adam算法在训练初期的偏差问题方面进行了改进。

Adam算法在训练初期可能存在偏差问题,即在初始阶段参数更新过程中可能出现较大的偏离。RAdam通过引入自适应修正步骤来解决这个问题,提供了更稳定的参数更新。

RAdam算法的核心改进是对自适应学习率的修正。在Adam算法中,自适应学习率是基于一阶矩估计(即梯度的均值)和二阶矩估计(即梯度的方差)进行计算的。然而,在训练初期,由于梯度的估计可能不准确,这些二阶矩估计可能会存在较大的偏差。

RAdam通过引入修正步骤来解决这个问题。在每次迭代中,RAdam算法会计算自适应学习率的修正因子,将其应用于参数更新的过程中。修正因子根据梯度的二阶矩估计的偏差进行计算,以减小学习率的更新范围,从而提高算法的稳定性。

On the Variance of the Adaptive Learning Rate and Beyond[13]. Liyuan Liu, Haoming Jiang, Pengcheng He, Weizhu Chen, Xiaodong Liu, Jianfeng Gao, Jiawei Han. ICLR 2020.

参考资料
[1]

Adaptive Subgradient Methods for Online Learning and Stochastic Optimization: http://modelcube.cn/paper/detail/2366256

[2]

ADADELTA: An Adaptive Learning Rate Method: http://modelcube.cn/paper/detail/446027

[3]

Adam: A Method for Stochastic Optimization: http://modelcube.cn/paper/detail/2525630

[4]

Qualitatively characterizing neural network optimization problems: http://modelcube.cn/paper/detail/2525621

[5]

Maximum Principle Based Algorithms for Deep Learning: http://modelcube.cn/paper/detail/2365415

[6]

The Marginal Value of Adaptive Gradient Methods in Machine Learning: http://modelcube.cn/paper/detail/2387929

[7]

Adding One Neuron Can Eliminate All Bad Local Minima: http://modelcube.cn/paper/detail/2387237

[8]

An Empirical Model of Large-Batch Training: http://modelcube.cn/paper/detail/91

[9]

The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks: http://modelcube.cn/paper/detail/2520250

[10]

Visualizing the Loss Landscape of Neural Nets: http://modelcube.cn/paper/detail/2387260

[11]

Lookahead Optimizer: k steps forward, 1 step back: http://modelcube.cn/paper/detail/2385968

[12]

The Goldilocks zone: Towards better understanding of neural network loss landscapes: http://modelcube.cn/paper/detail/2400937

[13]

On the Variance of the Adaptive Learning Rate and Beyond: http://modelcube.cn/paper/detail/2520036


阅读原文,了解更多信息:ModelCube一站式人工智能科研平台

http://modelcube.cn/paper/reading-list-detail/33

数据科学人工智能
聚焦数据科学,大数据,人工智能,区块链和云计算等话题。技术资料分享,院士名家观点分享,前沿资讯分享。
 最新文章