机器学习第六周周报

引言

通过本周学习的新的优化器,旨在改进传统优化算法在训练神经网络时的性能和收敛速度。这些新的优化器通过引入新的策略和技巧,提供了更强大和高效的参数优化方法。优化器在深度学习中起着至关重要的作用,它们负责根据训练数据和损失函数的梯度信息,更新神经网络中的参数,使模型能够更好地拟合训练数据并提高在未见数据上的泛化能力。传统的优化算法例如随机梯度下降(SGD)和动量法(Momentum)在深度学习中广泛使用,但它们存在一些限制和挑战。随着深度学习模型的复杂性和数据集的增大,传统优化算法可能陷入局部最优解、收敛速度慢以及对超参数敏感等问题。为了解决这些问题,提出了一系列新的优化器。选择合适的优化器对于深度学习任务的成功至关重要。新的深度学习优化器为我们提供了更多的选择和机会,能够改善模型的训练效果和性能。

Abstract

The new optimizer learned this week aims to improve the performance and convergence speed of traditional optimization algorithms in training neural networks. These new optimizers provide more powerful and efficient parameter optimization methods by introducing new strategies and techniques. Optimizers play a crucial role in deep learning, responsible for updating parameters in neural networks based on training data and gradient information of loss functions, enabling the model to better fit training data and improve generalization ability on unseen data. Traditional optimization algorithms such as Random Gradient Descent (SGD) and Momentum (Momentum) are widely used in deep learning, but they have some limitations and challenges. With the complexity of deep learning models and the increase of datasets, traditional optimization algorithms may fall into problems such as local optima, slow convergence speed, and sensitivity to hyperparameters. To address these issues, a series of new optimizers have been proposed. Choosing the appropriate optimizer is crucial for the success of deep learning tasks. The new deep learning optimizer provides us with more choices and opportunities to improve the training effectiveness and performance of the model.

深度学习新的优化器

优化的算法

1、SGD

SGD(Stochastic Gradient Descent,随机梯度下降)是最经典和最常用的优化算法之一。

SGD是一种基于梯度的优化算法,用于训练机器学习模型。它的核心思想是通过迭代地更新模型参数来最小化损失函数。与传统的梯度下降算法不同,SGD每次迭代只使用训练集中的一个样本(随机选择),称为随机梯度。这使得SGD更具效率和可扩展性,尤其在大规模数据集上。

下面是SGD的一般步骤:

  1. 初始化参数:初始化模型的权重和偏置。
  2. 随机选择样本:从训练集中随机选择一个样本。
  3. 前向传播:使用选定的样本将输入数据通过模型进行前向传播,计算预测值。
  4. 计算损失:将预测值与实际标签进行比较,计算损失函数的值。
  5. 反向传播:计算损失函数对模型参数的梯度,即计算模型中每个参数对损失的贡献。
  6. 更新参数:根据梯度信息以及学习率(learning rate),使用参数更新规则来更新模型的权重和偏置。
  7. 重复步骤2-6:重复随机选择样本、前向传播、计算损失、反向传播和参数更新的过程,直到达到停止条件(如达到最大迭代次数或损失函数收敛)。

SGD的优点是简单易实现且计算开销较小,尤其适用于大规模数据集和高维特征空间。然而,SGD也存在一些缺点,如收敛速度较慢、可能陷入局部最优等。

  

2、SGD with momentum

SGDM(Stochastic Gradient Descent with Momentum)是一种基于动量法的优化算法,是对SGD的改进。SGDM结合了随机梯度下降(SGD)和动量的概念,以加速模型训练过程并提高收敛性能。

在SGD中,每次迭代只使用单个样本的梯度来更新参数,这可能导致参数更新的方向不稳定,并且容易在参数空间中震荡。而动量是一种储存先前梯度信息以平滑参数更新的方法,它引入了一个动量项来决定参数更新的方向和速度。这样可以在更新过程中对梯度方向进行平滑,减少噪声的影响,从而提高参数更新的稳定性。

以下是SGDM的基本步骤:

  1. 初始化参数:初始化模型的权重和偏置。
  2. 初始化动量:设置初始动量为0,动量范围通常在0到1之间。
  3. 随机选择样本:从训练集中随机选择一个样本。
  4. 前向传播:使用选定的样本将输入数据通过模型进行前向传播,计算预测值。
  5. 计算损失:将预测值与实际标签进行比较,计算损失函数的值。
  6. 反向传播:计算损失函数对模型参数的梯度,即计算模型中每个参数对损失的贡献。
  7. 更新动量:根据当前梯度和先前动量的加权和来更新动量。
  8. 更新参数:使用动量更新规则来调整模型的权重和偏置。
  9. 重复步骤3-8:重复随机选择样本、前向传播、计算损失、反向传播、更新动量和参数的过程,直到达到停止条件。

SGDM的优点是在参数更新过程中引入了动量,可以加速收敛速度并降低震荡问题。动量可以帮助模型在梯度方向上前进,并在更新时继续保持一定的惯性。这对于具有复杂损失函数和高维参数空间的问题尤为有益。

  

3、Adagrad

Adagrad(Adaptive Subgradient Methods)是一种自适应学习率的优化算法,广泛应用于机器学习和深度学习中。它针对每个模型参数调整学习率,使得参数更新在训练过程中能够更好地适应不同特征的需求。

Adagrad的基本思想是根据参数在更新过程中的历史梯度大小来自适应地调整学习率。具体来说,Adagrad会为每个参数维护一个累积的梯度平方项,并将其用作学习率的分母。这样,梯度较大的参数在更新时会有较小的学习率,而梯度较小的参数会有较大的学习率。这种自适应性使得Adagrad能够有效地处理稀疏梯度和非平稳问题。

以下是Adagrad的基本步骤:

  1. 初始化参数:初始化模型的权重和偏置。
  2. 初始化累积梯度平方项:为每个参数维护一个累积梯度平方项,并初始化为0。
  3. 前向传播:使用当前参数将输入数据通过模型进行前向传播,计算预测值。
  4. 计算梯度:计算模型预测值与实际标签之间的误差,并计算参数的梯度。
  5. 更新累积梯度平方项:将当前梯度的平方值累加到对应的累积梯度平方项中。
  6.  更新参数:使用累积梯度平方项来调整学习率,并使用学习率和梯度更新参数。
  7. 重复步骤3-6,直到达到停止条件(如达到最大迭代次数或损失函数收敛)。

Adagrad的优点是能够自适应地调整学习率,对于梯度较稀疏的问题表现出色。它可以在训练初期使用较大的学习率快速前进,然后随着训练的进行逐渐减小学习率,使得参数在后期能够更精细地调整。此外,Adagrad不需要手动设置学习率和学习率衰减参数,减轻了超参数调整的负担。

然而,Adagrad也存在一些限制。由于累积梯度平方项在训练过程中不断累加,学习率会趋于零,造成训练过程过早停止。为了解决这个问题,后续的优化算法如RMSprop和Adam引入了梯度平方的指数加权平均,从而平衡了学习率的衰减和梯度平方项的积累。

 

4、RMSProp

RMSProp(Root Mean Square Propagation)是一种优化算法,用于调整神经网络训练中的学习率。它是在Adagrad算法的基础上进行改进的,旨在解决Adagrad算法中学习率过早衰减的问题。

RMSProp使用指数加权平均来计算梯度平方的移动平均值,并将其作为调整学习率的因子。具体来说,RMSProp维护一个用于每个参数的累积梯度平方项的指数加权平均,然后使用该平均梯度平方项来调整每个参数的学习率。

以下是RMSProp的基本步骤:

  1. 初始化参数:初始化模型的权重和偏置。
  2. 初始化累积梯度平方项:为每个参数维护一个累积梯度平方项,并初始化为0。
  3. 前向传播:使用当前参数将输入数据通过模型进行前向传播,计算预测值。
  4. 计算梯度:计算模型预测值与实际标签之间的误差,并计算参数的梯度。
  5. 更新累积梯度平方项:使用指数加权平均计算梯度平方的移动平均值,将其累积到对应的累积梯度平方项中。
  6. 更新参数:使用调整后的学习率(即学习率除以平方根梯度平方项的均值)和梯度更新参数。
  7. 重复步骤3-6,直到达到停止条件(如达到最大迭代次数或损失函数收敛)。

RMSProp的改进之处在于引入了指数加权平均,相对于Adagrad,它对梯度平方项的累积进行了衰减,使得学习率不会过早地衰减。这样做的好处是,在训练的后期阶段依然能够保持较大的学习率,有利于快速收敛。

 

5、Adam

Adam(Adaptive Moment Estimation)是一种优化算法,结合了动量优化和自适应学习率的特性,被广泛应用于深度学习中。

Adam算法的核心思想是使用动量来跟踪过去梯度的指数加权平均,并使用自适应学习率来调整参数的更新步长。它综合了RMSProp和动量优化算法的优点,并通过偏差校正机制来纠正梯度估计的偏差。

以下是Adam算法的基本步骤:

  1. 初始化参数:初始化模型的权重和偏置。
  2. 初始化动量变量和累积梯度平方项:初始化动量变量为0,并为每个参数维护一个累积梯度平方项,并初始化为0。
  3. 前向传播:使用当前参数将输入数据通过模型进行前向传播,计算预测值。
  4. 计算梯度:计算模型预测值与实际标签之间的误差,并计算参数的梯度。
  5. 更新动量变量:使用动量系数β1对梯度的指数加权平均,得到动量变量(m)。
  6. 更新累积梯度平方项:使用RMSProp算法中的指数加权平均计算梯度平方的移动平均值,得到累积梯度平方项(v)。
  7. 偏差校正:对动量变量和累积梯度平方项进行偏差校正,以纠正初期训练时的偏差。
  8. 更新参数:使用偏差校正后的动量变量和累积梯度平方项,以及学习率进行参数的更新。
  9. 重复步骤3-8,直到达到停止条件(如达到最大迭代次数或损失函数收敛)。

Adam算法通过使用动量和自适应学习率的特性,在训练中既能快速收敛又能保持稳定性。动量的引入可以加速收敛过程,并平滑梯度更新的方向;而自适应学习率可以根据每个参数的历史平方梯度动态地调整学习率,适应不同参数的特点。

 Adam和SGDM的对比

1、自适应学习率:

  • Adam: Adam根据梯度的一阶矩估计(均值)和二阶矩估计(方差),为每个参数动态调整学习率。
  • SGDM: SGDM在整个训练过程中使用固定的学习率,并通过动量来加速沿最陡梯度方向的收敛。

2、动量:

  • Adam: Adam通过使用动量项β1来维护过去梯度的指数衰减平均值,从而实现了一种形式的动量。它有助于平滑更新过程,并提高了优化的稳定性。
  • SGDM: SGDM使用传统的动量方法,通过使用动量项β来累积前一次更新方向的一部分。这有助于优化器更快地逃离浅局部最优解,并在更平缓的区域内导航。

3、偏差校正:

  • Adam: Adam应用偏差校正机制,以补偿第一和第二阶矩估计的初始偏差。这种偏差校正在训练的早期迭代中是必要的,以对低统计量进行修正。
  • SGDM: SGDM不需要额外的偏差校正步骤。

4、超参数:

  • Adam: Adam有额外的超参数,如β1(控制过去梯度的平均),β2(控制过去平方梯度的平均)和ε(防止除以零的小常数)。这些超参数需要适当调整以获得良好的性能。
  • SGDM: SGDM的主要超参数是动量项β和学习率α。

在实践中,Adam被广泛使用,通常具有良好的收敛性能,并且对超参数的敏感性较低,相较于SGDM更容易调优。它在需要针对不同的模型参数进行自适应调整学习率的情况下特别有效。而SGDM则是一种更简单和计算效率更高的变体,在某些情况下表现良好,但可能需要更仔细地调整超参数。

Towards Improving Adam

1、AMSGrad

AMSGrad是一种基于Adam优化算法的改进版本。Adam(Adaptive Moment Estimation)是一种常用的优化算法,结合了动量法和自适应学习率的特点,可以有效地优化深度学习模型的参数。

然而,Adam算法在某些情况下可能存在问题,尤其是对于非凸优化问题。在某些情况下,Adam算法可能会导致学习率的过度下降,从而陷入局部最优解或震荡。AMSGrad的提出旨在解决这个问题。

AMSGrad(Accelerated Method with Adaptive Learning Rates)在Adam算法的基础上对梯度的一阶矩估计进行了修正,使得学习率的更新更加平稳和稳定。具体而言,AMSGrad保留了Adam算法中的动量调整项和梯度的二阶矩估计,但对于梯度的一阶矩估计进行了修正。

在AMSGrad中,二阶矩估计的计算方式与Adam算法相同,而一阶矩估计则采用了类似于RMSprop算法的方式进行计算。一阶矩估计的修正使得AMSGrad算法在某些情况下更加平稳和可靠,能够防止学习率的过度下降。

 

2、AdaBound

AdaBound是一种基于自适应学习率的优化算法,它可以用于训练深度学习模型。AdaBound是对自适应优化算法Adam的改进,旨在克服Adam算法中学习率下降过快的问题,并提供更加稳定的收敛性能。

在AdaBound算法中,学习率的更新规则结合了动量法和自适应学习率的机制。与Adam相似,AdaBound也使用了梯度的一阶矩和二阶矩估计,但是它引入了两个重要的增强策略:边界(bounds)和自适应学习率。

在边界方面,AdaBound通过引入边界范围来控制学习率的变化速度。学习率会被限制在一个较大的上界和较小的下界之间,避免了学习率过快地下降,从而更加稳定地进行模型训练。

另一个关键的改进是自适应学习率。AdaBound通过引入一个超参数来控制学习率的自适应性,可以在训练的早期使用较大的学习率以加快收敛速度,而在训练的后期则逐渐减小学习率以细致调整模型参数。这种自适应学习率的策略有助于平衡模型的快速收敛和稳定性之间的关系。

综合而言,AdaBound算法的目标是通过限制学习率的范围和引入自适应学习率的机制,提供更加稳定和可靠的优化效果。

 Towards Improving SGDM

1、Cyclical LR

循环学习率(Cyclical Learning Rate,CLR)是一种训练深度学习模型时使用的学习率调度策略。与传统的固定学习率不同,循环学习率允许学习率在一定的范围内波动,以改进优化算法的性能。

循环学习率的基本思想是在训练过程中周期性地调整学习率以促进模型的探索和收敛能力。这种学习率的调整方式让训练过程更加动态,有助于跳出局部最优解并在参数空间中进行更广泛的搜索。

CLR通常由两个重要的超参数组成:

  1. 基本学习率(base learning rate):表示学习率的起始值,通常选取在合理范围内的一个较小值。
  2. 最大学习率(max learning rate):表示学习率的最大值,通常设置为较大的值,使得学习率能够在一定范围内波动。

CLR的调度策略通常有三种类型:

  1. 三角形策略(Triangular Policy):学习率线性地在最小值和最大值之间进行波动,如逐步增加或逐步减小。
  2. 三角形2策略(Triangular2 Policy):学习率在一个完整的周期内逐渐变化,并且在每个周期中逐步缩小学习率的变化范围。
  3. 三角形循环策略(Exp Range Policy):学习率在一个完整的周期内逐渐变化,并且通过指数衰减将学习率的变化范围逐渐缩小。

在实践中,CLR可以提供一种更灵活的学习率调整方式,可以在相对较短的时间内寻找到更优的模型参数设置。然而,CLR并不是适用于所有问题和模型的通用策略,其使用效果也会受到具体情况的影响。

2、SGDR

SGDR(Stochastic Gradient Descent with Warm Restarts)是一种优化算法,它结合了随机梯度下降(Stochastic Gradient Descent,SGD)和温和重启(Warm Restarts)的思想。

SGDR的基本思想是通过在训练过程中周期性地进行学习率重启,以改善模型的收敛性和探索能力。具体来说,SGDR通过在固定的训练周期内逐渐减小学习率,然后将学习率重置为初始值,从而形成周期性的学习率变化。

SGDR的实现步骤如下:

  1. 设置训练参数:
  • 初始学习率(initial learning rate):设定一个较大的学习率作为初始值。
  • 循环周期数(cycle length):确定训练周期的长度,即学习率减小的阶段。
  • 学习率下降幅度(scaling factor):确定学习率在每个周期中下降的比例。

     2.训练过程:

  • 在每个周期的开始,将学习率重置为初始学习率。
  • 在每个周期内,根据已设定的学习率变化规则,逐渐降低学习率。
  • 完成一个周期后,将学习率重置为初始学习率,并开始下一个周期。

通过周期性地调整学习率,SGDR可以帮助模型在训练过程中避免陷入局部最优解,并增加在参数空间中进行更广泛搜索的机会。周期性的学习率重启也可以帮助模型跳出局部鞍点,并更快地收敛到全局最优解。

3、One-cycle LR

One-cycle learning rate (LR)是一种学习率调度策略,用于训练神经网络模型。它是由Leslie N. Smith在2018年提出的,旨在在较短的时间内实现更快的收敛和更好的模型性能。

One-cycle LR的基本思想是设置一个学习率变化的单周期,其中学习率首先快速上升,然后再逐渐下降。这种学习率变化模式旨在在训练的早期加快收敛速度,同时避免过拟合,并在训练的后期进行更小的学习率调整以微调模型。

One-cycle LR策略通常包含以下关键组件:

  1. 最大学习率(maximum learning rate):确定学习率的上界,即学习率增加的最大值。它通常被设置为较高的值,以使模型能够进行更广泛的参数搜索。
  2. 学习率变化策略:指定学习率在训练周期内如何变化。一种常见的模式是先从初始学习率线性上升到最大学习率(上升阶段),然后再从最大学习率线性下降到极小学习率(下降阶段)。
  3. 学习率调整时间:根据数据集大小和模型复杂性等因素确定训练周期的长度和学习率调整的时间点。这通常需要进行一些实验和调整以找到最佳的设置。

使用One-cycle LR策略的优点之一是能够在较短的训练时间内实现较好的模型性能。通过快速上升的学习率阶段,模型能够快速收敛并找到一个较好的参数区域。随后,逐渐降低的学习率有助于进一步微调参数并提高模型的泛化能力。

总结

本周学习的这些新的优化器旨在解决传统优化算法在深度学习中的一些限制和挑战,提供更好的优化性能和训练效果。然而,选用优化器时需要根据具体问题和数据集进行实验,因为不同优化器在不同的场景下可能表现出不同的效果。一般而言,选择合适的优化器应该考虑模型的复杂性、数据集的大小、收敛速度和泛化能力等方面的因素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值