时间:2024-05-04
王昕
摘要:梯度下降法是机器学习算法中广泛使用的方法,特别是在神经网络中。本文首先概述了梯度下降法和其三种实现框架,描述其优缺点。针对算法训练时间缓慢的缺陷,首先从最经典且主流的梯度下降优化算法开始介绍,阐述研究动机、基本思想、其解决的问题,最后对比流行的梯度下降优化算法进行实验分析。
关键词:梯度下降法;机器学习;优化算法;发展方向
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2022)08-0071-03
引言
在机器学习领域中,因为有些目标模型的损失函数非常复杂,不能有效得到参数估计值的表达式。对此针对模型的损失函数优化问题,实际应用中,通常采用梯度下降法来对目标进行训练,使其训练的结果趋势会降至最小值,但是梯度下降法训练的过程极其缓慢,也对学习率和权重衰减等超参数极其敏感。至此,学者对这两方面因素做了调整,通过动量加速平衡权重衰减和在自适应学习率的大小带来的影响,极大改进了收敛速度和训练消耗时长。
最新的研究进展方向表明,为了更好应对该算法下模型训练产生的大量计算成本,第一种方法是在梯度下降法的基础上展现了一种混合策略,如SWATS、Lookahead、AdaSVRG等算法,將动量加速思想[1]和自适应学习率方法相结合,旨在在大多非凸优化问题上,可通过很少的计算和训练的内存成本,来提高训练稳定性,表现出很好的泛化能力。第二种方法采用分布式训练的策略,将模型或数据部署在不同设备上,如dbs-sgd[2]等算法,在数据较多或者模型较大时使用,可以有效地提高机器学习模型训练的效率。
根据已有的知识,本文简单介绍梯度下降原理思想,实验对比经典的梯度下降优化算法,和介绍其最新领域的研究进展。
1梯度下降法
相比于最新的深度学习优化算法,梯度下降算法可以说是最初的起点。要实现梯度下降法的思想是需要不停地进行迭代,当损失函数的值小于一超参数阈值后,结束算法,这个时候梯度下降达到了最优值,由以下算法给出:
其中,[θt+1]表示第t+1时间步的参数值,[θt]表示第t时间步的参数值,[gt]表示第t时间步的梯度,[η]表示学习率。
1.1梯度下降法框架
梯度下降法由更新训练样本数据的规模展现了三种不同的形式:批量梯度下降法(batch gradient decent,BGD)、随机梯度下降法(Stochastic gradient descent,SGD)、小批量随机梯度下降法(Mini-batch gradient descent,MBGD):
针对批量梯度下降法,思想是将该整批训练数据用于迭代计算,虽然最终会缓慢训练至最小值,但是每次训练都会产生大量冗余计算。对比这个不足,随机梯度下降法通过一次执行一次更新的策略进行了改进。但是由于随机梯度下降法抽取数据中的样本的随机性,导致每次更新方向的不确定,执行频繁更新会产生振荡。但从全局来看,随着迭代次数的增加,还是会接近最小值。小批量梯度下降采取了BGD和SGD的优点,没有用整批训练数据或随机抽取的单个样本,而是通过每次小部分的随机样本来执行迭代的策略。
1.2梯度下降法带来的问题
虽然随机梯度下降法是一种能力很强的算法,但面对各种应用场景,仍需要进一步地扩展和增强。主要表现在以下4个方面:
(1)选择一个合适的学习率对训练过程有非常大的影响。学习率太小训练会减慢收敛速度,增加消耗时长;学习率太高在训练趋于平缓时难以收敛至最优值,会导致过大的振荡性;
(2)每次模型参数更新使用相同的学习率。若数据样本表现出不同频率的特征,不希望将所有特征更新到相同的程度;
(3)学习率调整策略受限于预先指定的调整规则;
(4)高度非凸的损失函数的优化过程,训练会陷入众多次优的局部最小值或鞍点。
针对这4个方面的问题,国内外许多学者做了大量的改进和扩展,取得了比较好的成果。
2梯度下降优化算法研究进展
对不同的梯度下降优化算法而言,研究的核心差异在于确立寻优的下降方向和学习率调整策略。D. Im等由严密的实验论证表明,不同的优化算法会选择不同的寻优下降方向,最终达到了完全不同的局部次优。至此围绕第一节中分析的SGD算法存在的一些问题,研究者提供了许多方案,尝试从不同的方面对SGD进行改造,归结起来改进方向主要分为以下两个方面。
2.1基于动量和方差缩减
为了解决SGD在局部最优解的振荡性,代表性的算法有带动量的随机梯度下降法(SGD with momentum,SGDM)等。特点是在取最小值过程中,动量加速思想能快速收敛。不仅在目标参数在局部最小值来回振荡的时候,使得更新幅度变大,跳出鞍点,也能在梯度改变方向的时候,能够减少更新,抑制振荡从而加快收敛。由以下算法给出:
其中,β表示动量因子,[νt]表示第t时间步的动量,[νt-1]表示第t-1时间步的动量。涅斯捷罗夫梯度加速(Nesterov Accelerated Gradient,NAG)是对动量机制的改进,用目标函数二阶导数的梯度近似值更新参数,有着更快的收敛速度,刘宇翔[3]等设计了一种基于NAG算法的投影次梯度方法,可以在保持收敛性的同时较快地达到稳定学习的精度。实验验证了理论分析的正确性及非精确方法的性能。
由于SGD每次随机更新参数来估计梯度,虽然大大减少了计算代价,但也正是如此,在训练后期对梯度估计的噪声让它无法进一步收敛。为此解决的代表性算法有随机方差缩减梯度法(Stochastic Variance Reduction Gradient,SVRG)等,谢涛[4]等在方差消减思想的基础上,设计了分布式实现算法DisSAGD:采用自适应采样策略和动量加速思想,加快了收敛速度,在分布式集群中可以获得近线性的加速。宋杰[5]等在训练过程中使用小批量样本代替全部样本,进行平均梯度计算的同时批量减数更新,得到了基于方差缩减的BSUG算法, 通过对各算法的实验对比,算法表现出了良好的稳定性。下表1对基于动量和方差缩减的随机梯度下降优化算法进行归纳整理。
2.2基于自适应学习率
为了解决非凸目标函数陷入局部次优的问题和进一步提高了算法的收敛速度。代表性的算法有AdaGrad、Adadetla、RMSprop、Adam等。自适应学习率的优化方法在训练较深复杂的神经网络上,会得到更好的收敛性。
与自适应学习方法相比,SGD的一个缺点是,我们在所有参数中使用单一的学习率,并且该学习率在整个培训过程中是固定的。理想情况下,更新频率越高的参数学习率越低,更新频率越低的参数学习率越高。至此,Dean et al.提出了AdaGrad算法,算法由下:
其中,[θt+1,i]表示第i个参数在第t+1时间步的参数值,[θt,i]表示第i个参数在第t时间步的参数值,[ε]表示避免被零除的平滑项。
不同于AdaGrad不断的累加梯度的平方,产生训练中后期使得学习率在达到最小值前就变得太小而梯度消失的问题。Adadelta和RMSProp另辟蹊径。其中,Adadelta算法只累加固定大小的项,对其进行衰减平均递归计算,大大避免AdaGrad后期更新系数过小的问题。而RMSprop可以算作Adadelta的一个特例,引入了泄露机制,使得保留的历史梯度信息每次都损失一部分,从而使得更新步长不再是单调递减。
Adam算法有着所需要训练占用的内存少,收敛快速等特点,集齐了上述自適应学习方法的优点,是主流的自适应优化方法。这类经典的自适应学习率算法在实验中训练效果优异,但与带动量的随机梯度下降相比,Adam、Adadelta、RMSprop 等自适应性优化算法的推广效果不佳。这是因为自适应学习方法有两个缺点:泛化性能差于SGDM和非收敛性的问题。最新研究进展以Adam算法为例,以这两个方面学者提出了很多变体优化算法:
(1)为了解决Adam的收敛性在简单凸优化上的不稳定的问题,Sashank J. Reddi提出了AMSGrad算法,此算法对过去梯度的“长期记忆”,经过实验论证可以修复收敛问题。Liyuan Liu等提出了Radam算法,通过在训练的前几个阶段使用较小的学习率,可以减少算法的不稳定,在经过图像分类等大量实验结果验证了该Radam算法的有效性和鲁棒性。
(2)为了增强Adam的泛化能力,Liangchen Luo等提出了AdaBound,该算法将利用学习率的动态边界来实现从自适应方法到SGD的逐渐平滑过渡。大量实验结果表明,AdaBound可以消除自适应方法和SGD之间的泛化差距,同时在训练初期保持较高的学习速度。特别是在复杂的深层网络上改进显著。Ilya Loshchilov提出了AdamW算法,通过从梯度更新中将权重衰减分离出来,修改Adam中权重衰减的特有实现方法。实验证明,该算法大幅提高了Adam的泛化性能,可以与SGDM在图像分类数据集上竞争。
下表2是对基于自适应学习率的随机梯度下降优化算法归纳整理:
3优化算法实验对比
实验评估了Adagrad、Adadelta、RMSprop、Adam、Adamax、NAdam自适应学习算法。学习率调整0.01,以32的批量进行训练,以训练10轮为标准,使用了MNIST-MLP、cifar10-VGG16的设置,在训练前期内,在两个模型架构的性能上对训练集和测试集的损失值、精度值和运行时间进行对比。
3.1实验设置
MNIST-MLP:MNIST包含训练集为 60000 张 28×28 像素灰度图像,测试集为 10000 同规格图像,有10 类数字标签。MLP神经网络包括三层:输入层、隐含层和输出层,MLP神经网络不同层之间是全连接的。
Cifar10-VGG16:CIFAR10包含60000个32×32×3图像,带有50000个训练集和10000个测试集图像,有10类数字标签。VGG16是一个16层深的卷积神经网络,广泛使用3×3卷积滤波器。
3.2实验结果对比
下面的两种实验设置表3和表4显示中,Adamax算法的检测性能最优。虽然Adam是最流行的自适应学习率算法,但很明显,在这种经典的图像分类识别实验的训练前期对比中,不管在简单的MLP网络还是在较深层网络VGG16中,Adam的性能并不是最好的,虽然消耗的训练时长占优,但是训练集和验证集的精度值落后于Adagrad、Adamax、NAdam算法。Adagrad训练前期检测精度增长迅速,随着训练次数的增加会趋于平缓甚至梯度消失;NAdam在Adam算法基础上使用了动量加速思想,其收敛速度略优于Adam算法,但是两种主干网络下的运行时间却是最长的。而Adamax显然是在对比实验里性能最好的,尤其在深层的神经网络里,表现出有良好的运行时长消耗和较快的收敛速度。
4 结论
本文对梯度下降算法做了简单的描述,介绍了其3种变体框架,并分析和总结了经典的梯度下降优化算法的优缺点。其中为代表的是SGDM和Adam算法,它们算法的缺陷成了后续研究者的研究动机,因此,在这两个算法的基础上,又出现了优秀的改进算法,并对现有的改进优化算法进行了概述。阐述了各种SGD改进算法解决的问题以及他们各自的优缺点。最后把六种典型的SGD改进算法实验对比进行验证。未来优化算法的研究方向我觉得仍然是在学习率这个超参数上做文章,用来提高算法的收敛速度,跳过局部次优和鞍点,因此如何自适应选择合适的学习率仍是一大热点研究方向;其次是在提升算法的泛化能力,在真实的数据集上仍表现出良好的性能。
参考文献:
[1] Qian N.On the momentum term in gradient descent learning algorithms[J].Neural Networks,1999,12(1):145-151.
[2] 纪泽宇,张兴军,付哲,等.分布式深度学习框架下基于性能感知的DBS-SGD算法[J].计算机研究与发展,2019,56(11):2396-2409.
[3] 刘宇翔,程禹嘉,陶卿.梯度有偏情形非光滑问题NAG的个体收敛性[J].软件学报,2020,31(4):1051-1062.
[4] 谢涛,张春炯,徐永健.基于历史梯度平均方差缩减的协同参数更新方法[J].电子与信息学报,2021,43(4):956-964.
[5] 宋杰,朱勇,许冰.批量减数更新方差缩减梯度下降算法BSUG[J].计算机工程与应用,2020,56(22):117-123.
【通联编辑:闻翔军】
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!