APP下载

梯度下降算法研究综述

2020-03-23李兴怡岳洋

软件工程 2020年2期
关键词:优化算法机器学习

李兴怡 岳洋

摘  要:在机器学习领域中,梯度下降算法是一种广泛用于求解线性和非线性模型最优解的迭代算法,它的中心思想在于通过迭代次数的递增,调整使得损失函数最小化的权重。本文首先概述了基于多元线性模型的梯度下降算法;其次介绍了梯度下降算法三种框架,使用Python实现了自主停止训练的BGD算法;针对梯度下降算法存在的不足,综述了近三年算法优化的研究成果。最后,总结了本文的主要研究工作,对梯度下降优化算法的研究趋势进行了展望。

关键词:机器学习;多元线性模型;梯度下降算法;算法实现;优化算法

中图分类号:TP181     文献标识码:A

1   引言(Introduction)

在求解机器学习中无约束优化问题的方法中,优化方法是必不可少的一环。传统的方法是使用最小二乘法计算解析解,但有时面临着模型更复杂且样本量庞大的问题,当样本个数大于特征个数时,问题便转换为求解超定方程组的问题,相比使用最小二乘法求解大维数逆矩阵的方法,采用梯度迭代的梯度下降算法[1]更具备优势。本文阐述了梯度下降算法在步进迭代过程中,梯度下降方向与学习率对算法的收敛起着至关重要的作用,前者确定了寻找最优解的方向,后者它决定了算法达到最优解所采取的每一步的大小。

考虑到存在非线性数据的可能,因此采用多项式模型更具备泛化能力。在实际应用中,可以将多项式中每个特征的幂次方定义为新特征,转换为多元线性模型。为了简化模型,本文将基于多元线性模型对梯度下降算法进行展开。

2  梯度下降算法原理与实现(Basic theory and implementation of gradient descent algorithm)

2.1   梯度下降算法概念

假设多元线性回归模型:

其中,是因变量(预测值),是特征的数量,是第个自变量(特征值),是第个模型参数(包括偏置与特征参数),是组合的转置向量,是由()组成的特征列向量。

针对实例,训练模型(1)的过程就是求解直至模型(1)对训练数据的拟合程度最佳的过程,每一次训练都会得到拟合值和真实值的差值,即损失值,这个值用于评估模型拟合程度,值越小表示拟合程度越好。

在多元线性回归中,将均方误差(Mean Square Error,MSE)作为损失函数:

其中,为学习率,也称为寻优步长。通过公式(4)求得下一次迭代的模型参数,将结果带入公式(1)求得下一次的预测值,这就是梯度下降算法的迭代过程。

2.2   梯度下降算法框架

根据每次更新模型参数使用的样本数量大小,梯度下降算法有三种实现框架:批量梯度下降算法、随机梯度下降算法和小批量梯度下降算法。

批量梯度下降算法(Batch Gradient Descent, BGD)基于整批训练数据计算每一步损失函数,相当于对公式(3)做一次性计算,记作:

相比于BGD的损失函数总是缓慢降低至最小值,SGD的梯度方向是反复振荡的,从全局上看,随着迭代次数的增加,它还是会接近最小值。

小批量梯度下降(Mini-Batch Gradient Descent, MBGD)既不是基于完整的训练集也不是基于单个实例,它则是折中于BGD和SGD,对于每一次迭代基于小部分随机的实例来计算梯度:

公式(7)表示每一次迭代随机从第个样本开始,选取个小批量样本计算梯度。

BGD尽管会耗费大量的时间来计算每一步,但是在模型参数空间里,它最终会停在最小值上。与之相反的是SGD,训练速度极快,并且能迅速到达最小值附近,但却不是最优解。如果不设置迭代次数,SGD会不停游走于最小值附近。正因为SGD随机的性质,因此它可用于海量的训练数据且有利于跳出局部最优,搜索全局最优。MBGD则综合了BGD和SGD的优点,当训练数据较大时,它不像SGD那么不稳定,会比SGD更接近最小值。

2.3   梯度下降算法实现

要实现梯度下降算法,迭代次数往往很难把握,对此解决的方法是:暂且不设置迭代次数,当损失函数的改变量(即梯度的模)小于容差时中断算法,这时梯度下降几乎到达了最小值。相应算法流程如下:

(1)初始化模型参数,步长,容差;

(2)计算当前位置的损失函数的梯度,

(3)若,算法终止,当前为最终结果。否则转4);

(4)根据更新模型参数,转(2)。

根据算法流程,使用Python编写BGD算法如图1所示。

为了证明所设计的算法能够在正确的维度关系基础上任意初始化模型特征個数、参数个数和训练数据的维度,算法开始前导入了numpy,用于初始化模型参数theta和训练集(x,y_real),步长alpha和容差e可根据情况自行设置。算法最后五次迭代结果如图2所示。

3  梯度下降算法研究进展(Research advances of gradient descent algorithm)

确定学习率和选择寻优方向是梯度下降算法研究的核心。经过近三年的相关研究,国内外已经取得大量研究成果,研究主要涵盖以下两个方面:(1)梯度下降算法的学习率相关研究提高了算法的收敛速度,解决了非凸目标函数陷入局部次优的问题;(2)基于动量和方差缩减的SGD相关研究解决了SGD的不稳定性。

3.1   模型的目标函数问题

由于多元线性模型的损失函数是一个凸函数,不存在波峰与波谷,意味着只存在一个全局最小值,不存在局部最小值,虽然这可以解决算法容易陷入局部最小值的问题,但是机器学习中的模型种类繁多,目标函数复杂,使用梯度下降法的效果并不是很好。

在目标函数非凸的情况下,Huo,Z.等[2]首次基于非凸优化方差约简的异步小批量梯度下降算法的收敛速度进行了理论分析。异步随机梯度下降法(AsySGD)已广泛应用于深度学习优化问题,并证明了其在非凸优化问题中的收敛速度为。结果表明,当问题为强凸时,采用变约简技术的异步SGD方法具有线性收敛速度。但是,对于非凸问题,近年来对该方法的收敛速度还没有进行分析。Huo,Z.等考虑了两种具有变异减少的小批量梯度下降法的异步并行实现:一种是分布式内存架构,另一种是共享内存架构,并且证明了对于非凸优化问题,两种方法均能以的速度收敛。

在模型非线性的情况下,Simon S.Du等[3]证明了训练深度神经网络模型能够得到全局最小值。研究表明了对于具有残差关联的超参数深度神经网络,梯度下降在多项式时间内达到零训练损失,这依赖于由神经网络结构所诱导出的Gram矩阵的特殊结构。这种结构证明Gram矩阵在整个训练过程中是稳定的,这种稳定性意味着梯度下降算法的全局最优性。研究进一步将分析扩展到残差深度卷积神经网络,并且得到了相似的收敛结果。

此外,J.Flieg等[4]提出了一些一阶光滑多目标优化方法,并证明了这些方法在某种形式上具有一阶临界全局收敛性。分析了光滑无约束多目标优化问题的梯度下降收敛速度,并用于非凸、凸、强凸向量函数。这些全局速率与单目标优化中的梯度下降率相同,并且适用于最坏复杂度界限的情况。

3.2   学习率问题

从前面算法的介绍可以得知:如果学习率太低,算法需要经过大量的迭代后才能收敛,这将会耗费大量的时间;反之,算法可能会陷入局部而无法搜索到全局最小值,甚至搜索结果会大于初始值,必然导致算法发散。另外,模型参数的每个更新都设置同一个学习率也不利于搜索全局最优。当前的解决思路之一通过制定学习率规划(Learning Rate Schedules):算法开始的学习率较大,这有助于跳出局部最优,后来在每次迭代中逐渐减小,慢慢搜索全局最小值。但是更多的研究聚焦在学习率自适应性的问题上。

王功鹏等[5]在解决CNN中学习率设置不恰当对SGD算法的影响,提出了一种学习率自适应SGD的优化算法,该算法随着迭代使得学习率呈现周期性的改变。研究结果表明,通过将这种自适应学习率优化算法与所选择的激活函数相结合,可以加快神经网络模型收敛速度,提升CNN的学习准确率。

严晓明[6]在使用梯度下降解决logistic回归模型分类问题时,提出一种自适应学习率的调整方法:在不引入新模型参数的同时,根据样本数据集分类准确率的变化对学习率进行更新。在梯度下降稍快时,增大学习率以加快收敛速率,反之则减小学习率以减少算法最优解附近的振荡。

相比于使用固定学习率的神经网络,朱振国等[7]提出基于权重变化的自适应学习率更新方法,改进了传统BP神经网络受人为因素限制的缺陷,证明了改进的神经网络具有更快的收敛速度和更高的误差精度。

3.3   基于动量和方差缩减的SGD优化

由于SGD的振荡性,因此目标参数会在目标函数的最小值附近游走,这样的情况下,动量(Momentum)在随机梯度下降距離中加入上一次迭代动量更新项,将它作为更新模型参数的下降距离,即:

其中,为动量超参数。这意味着在更新模型参数累积了前面所有的动量,对于当前梯度方向与上一次梯度方向一致的参数,下降速度越来越快,反之则速度减慢,因此动量可以加快收敛速度并减少振荡。对于目标函数非光滑优化问题,程禹嘉等[8]通过灵活设置步长,证明了由Polyak提出的Heavy-ball型动量方法具有最优的单个收敛速率,从而证明了Heavy-ball型动量方法可以将投影子梯度方法的个体收敛速率提高至最优。

由于每一次迭代的梯度下降非常快,在损失函数由凸转为凹时会迅速选择凹的路段,因此涅斯捷罗夫梯度加速(Nesterov Accelerated Gradient,NAG)在此基础上进行了优化,它在计算模型参数梯度时,在损失函数中减去了动量项,估计了下一次参数的所在位置:

针对BP神经网络存在的问题,景立森等[9]在NAG动量更新的基础上,建立了一种基于黄金比例动量确定隐层神经元的加速梯度策略,并应用于MNIST手写字体识别,取得了较好的收敛速度和预测评估结果。

改进的随机方差消减梯度法(Stochastic Variance Reduction Gradient,SVRG)可以解决SGD因受到噪声干扰只能达到次线性收敛率问题,王建飞等[10]设计了一种基于SVRG算法思想的分布式实现算法topkSVRG:在每次迭代时,收敛速率随着参数k的递增而增加,k的减小可以保证算法收敛。研究理论分析了算法的线性收敛性,并通过实验对相关算法的进行比较,证明topkSVRG算法有良好的高精度收敛性。张晋晶[11]提出了移动随机方差消减算法,将梯度移动的平均值作为平均梯度,该算法在学习率很大的情况下,依然能够保证分类的准确率。

4   结论(Conclusion)

本文采用多元线性模型对梯度下降算法的原理进行了简要的概括,对三种不同的框架设计了算法实现流程,使用Python实现了可以自主停止训练的BGD算法。本文的重点在于分别从梯度下降算法的非凸目标函数问题、学习率问题、SGD的游走问题三个方面对梯度下降算法近三年的研究进行了综述。最后总结了SGD优化算法的特点,可以根据模型特点参考对应的算法。由于SGD的训练速度非常快,因此SGD改进算法是当前十分热门的梯度下降算法优化方向,具有广阔的研究前景。

参考文献(References)

[1] Sebastian Ruder.An overview of gradient descent optimization algorithms[EB/OL].http://128.84.21.199/pdf/1609.04747.pdf,2017-6-15.

[2] Huo,Z.,Huang,H.Asynchronous mini-batch gradient descent with variance reduction for non-convex optimization[J].USA:THIRTY-FIRST AAAI CONFERENCE ON ARTIFICIAL INTELLIGENCE,2017:2043-2049.

[3] Simon S.Du,Jason D.Lee,Haochuan Li,et al.Gradient Descent Finds Global Minima of Deep Neural Networks[EB/OL].http://arxiv.org/pdf/1811.03804.pdf,2019-3-28.

[4] J.Fliege,A.I.F.Vaz,L.N.Vicente(2019)Complexity of gradient descent for multiobjective optimization[J].Optimization Method and Software,2019,34(5):949-959.

[5] 王功鹏,段萌,牛常勇.基于卷积神经网络的随机梯度下降算法[J].计算机工程于设计,2018,39(2):441-445.

[6] 嚴晓明.一种逻辑回归学习率自适应调整方法[J].福建师范大学学报(自然科学版),2019,35(3):24-28.

[7] 朱振国,田松禄.基于权值变化的BP神经网络自适应学习率改进研究[J].计算机系统应用,2018,27(7):205-210.

[8] 程禹嘉,陶蔚,刘宇翔,等.Heavy-Ball型动量方法的最优个体收敛速率[J].计算机研究与发展,2019,56(8):1686-1694.

[9] 景立森,丁志刚,郑树泉,等.基于NAG的BP神经网络的研究与改进[J].计算机应用与软件,2018,35(11):272-277.

[10] 王建飞,亢良伊,刘杰,等.分布式随机方差消减梯度下降算法topkSVRG[J].计算机科学与探索,2018,12(07):1047-1054.

[11] 张晋晶.基于随机梯度下降的神经网络权重优化算法[D].西南大学,2018:1-59.

作者简介:

李兴怡(1993-),男,硕士生.研究领域:机器学习.

岳    洋(1992-),女,硕士生.研究领域:优化方法.

猜你喜欢

优化算法机器学习
原子干涉磁力仪信号鉴频优化算法设计
故障树计算机辅助分析优化算法研究与应用
基于词典与机器学习的中文微博情感分析
混沌优化算法在TSP问题的应用
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
基于支持向量机的金融数据分析研究
再制造闭环供应链研究现状分析
机器学习理论在高中自主学习中的应用
故障树计算机辅助分析优化算法的实践应用