机器学习中的随机优化算法253Word文件下载.docx
- 文档编号:17364884
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:33
- 大小:1.20MB
机器学习中的随机优化算法253Word文件下载.docx
《机器学习中的随机优化算法253Word文件下载.docx》由会员分享,可在线阅读,更多相关《机器学习中的随机优化算法253Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。
2一阶方法4
2.1梯度下降法(GradientDescent)4
2.2随机梯度方法(StochasticGradientMethod)6
2.3方差减小方法(VarianceReductionMethod)8
2.3.1随机平均梯度方法(StochasticAverageGradient)9
2.3.2随机方差减小梯度方法(StochasticVarianceReductionGradient)10
2.3.3SAGA11
2.4随机对偶坐标上升法(StochasticDualCoordinateAscent)12
2.5随机原始对偶坐标法(StochasticPrimalDualCoordinate)14
2.6加速方法Catalyst17
2.7Katyusha18
3二阶方法19
3.1牛顿法与拟牛顿法19
3.1.1SR119
3.1.2BFGS、DFP20
3.2Limited-memory-BFGS20
3.3随机牛顿方法22
4数值实验23
参考文献25
致谢27
引言
近些年来,随着科学技术不断地进步发展,尤其是在计算机、通信等领域的进步以及互联网不断的普及。
人们产生数据速率大大提高的同时又能够容易廉价地获取和存储数据。
数据中蕴含是大量信息,但是如何在大量数据中发掘出有效的信息是一个很困难的问题。
为了解决该问题,人们尝试采用各种方式。
其中,比较好的处理方式是使用机器学习、数理统计的方法。
机器学习利用数据建立模型来进行预测,其中常见的方法是将问题转化成一个优化模型,进而求解一个目标函数来。
然而在大数据时代,数据的数量和数据的维数都比较高,如何更有效的处理和挖掘大数据,不仅要不断的改进和发展计算机硬件,也要不断的去改进机器学习算法的效率。
提高机器学习算方法的效率更多的依赖于对数值优化算法的改进,因此有必要对大规模机器学习中的优化算法进行总结。
本文力求详细全面地对现有的机器学习中的优化方法做一概述,也是对自己最近学习的一个总结。
给定一个训练数据集T={(x1,y1),(x2,y2),...,(xN,yN)},机器学习的策略是求经验风险最小损失的模型,常见的经验风险损失模型为
其中,fi(x):
ℜd→ℜ是一个凸的光滑损失函数,fi与样本密切相关,n代表着样本的个数。
然而,当样本容量很小时,容易产生“过拟合”现象,为了防止过拟合。
常在经验风险上加上表示模型复杂度的正则化项或惩罚项,称为结构风险损失函数。
g(x):
ℜd→ℜ是正则化函数,通常也是一个凸函数。
这种形式的问题在机器学习中有着很广的应用,许多机器学习方法可以归结成求如上形式的优化问题:
线性支持向量机可以转化成求一些的优化问题[1][2][3]:
其中,[a]+=max{0,a}
逻辑回归是归结为解决下述的优化问题[2][3]:
LASSO可以转化成求解以下优化问题[2][3]:
解决这一问题的难点在于,当优化变量的维数d和样本的个数n比较大时,求解这一问题需要非常大的计算量和存储内存。
对于这种大规模的优化问题,比较常见的方法可以分为批处理方法和随机算法。
批处理方法主要包括全梯度下降方法和拟牛顿L-BFGS方法,随机方法主要有随机梯度下降法(SGD)以及这种算法的改进,比如随机方差下降梯度方法(SVRG)、随机平均梯度方法(SAG);
随机对偶坐标上升法(SDCA),随机原始对偶坐标方法(SPDC)。
梯度下降法是一种线搜索方法[4],每一次迭代选择该点的负梯度方向作为搜索方向,因为负梯度方向是最快的下降方向,因此亦被称为最速下降法,它仅利用了函数的梯度信息,因此也被称为一阶方法。
梯度方法每次迭代的方向为其负梯度方向,
它的收敛速度为O(1/n),是一种次线性的迭代算法。
一种加速的梯度算法AGD[4][5]形如:
它的收敛速度为O(1/n2),但当目标函数是强凸函数时,其收敛速度为线性收敛速度。
梯度下降方法需要需要计算n个梯度,这一计算量为O(nd),当n和d很大时,这一计算量和存储空间是很大的。
一个更实用的改进是每一次迭代时,随机选择一个点计算梯度来进行更新,SGD形式如[6][7]:
并且需要满足
这一改进的好处是,每一个次迭代其计算量是标准梯度下降法的
。
对于随机梯度下降法(SGD),其随机向量g(xk,εk)是函数全梯度的无偏估计,因此其满足
上式不等号右边的第二项是我们预期的误差,第三项我们称之为方差,因为方差的存在,所以SGD也需要采用变步长的方式才能保证算法的收敛。
方差的存在导致了算法性能上的不足,因此如果我们能够改进算法使得方差不断的减小直至零。
比较有代表性的方差减小方法有三种,分别称为SVRG[8],SAG[9][10],SAGA[11],这三种方法的更新方式如下:
SAG[9]是最早提出的具有线性收敛速度的随机梯度方法,其每次更新不依赖于n。
SAGA可以看成是结合SAG和SVRG两种方法的技巧提出的新的算法,它与SVRG的收敛速度相近,并适用于非强凸的问题。
SVRG有着良好的性质,并且适用于非凸函数。
另外一类比较实用的方法是随机对偶方法,主要有SDCA[12]和SPDC[13],SDCA是将原始问题转化为其对偶形式,采用随机坐标的思想,随机选择对偶坐标不断求极大直到最优值,SPDC是将其原问题转化为鞍点问题,通过交替最小化原始变量和最大化对偶变量来求鞍点,在正文中将继续介绍着两种方法。
牛顿方法[14]是利用函数二阶信息的一种优化方法,现实中我们常常使用一种近似的牛顿方法,拟牛顿法,在机器学习领域中,比较常用的是L-BFGS拟牛顿方法,这一方法在最优值附近可以达到次线性的收敛速度。
其迭代格式为:
其中,αk是步长,Hk是Hessian阵的逆的一种近似。
更新的方式为:
其中
因为二阶方法在计算中复杂度比较高,对二阶方法的改进存在一定的难度,因此关于二阶的随机方法的工作还比较有限,我们将在正文介绍几种改进的算法。
接下来第一章我将介绍相关的数学知识背景,第二章我将分别对一阶算法进行介绍,第三章我将对二阶算法的做一介绍,第四章我将通过一些实验来对比不同的优化算法。
1基础知识
定义1L-Lipshistz连续称函数f:
ℜd→ℜ为L-Lipschitz连续函数,L>
0,如果对于∀a,b∈ℜd,均有
|f(a)−f(b)|≤L|a−b|
定义2γ光滑称函数f:
ℜd→ℜ为γ−光滑函数,γ>
0,如果对于任意∀a,b∈ℜd,均有
f(b)≤f(a)+⟨∂f(a),T(b−a)⟩+
‖b−a‖2
定义3凸函数称函数f:
ℜd→ℜ为凸函数,如果对于任意∀a,b∈ℜd,均有
f(b)≥f(a)+⟨∂f(a),T(b−a)⟩
定义4µ
−强凸函数称连续可微的函数f:
ℜd→ℜ为µ
−强凸函数,µ
>
f(b)≥f(a)+⟨∂f(a),T(b−a)⟩+
定义5条件数如果连续可微的函数f:
ℜd→ℜ为γ−光滑函数,µ
−强凸函数,记
κ=
称κ为原函数的条件数。
定义6最小值点
∙点x*称之为局部最小值点,如果存在x*的领域N,使得对任意x∈N均有f(x)≥f(x*)
∙点x*称之为严格最小值点(强最小值点),如果存在x*的领域N,使得对任意x∈
N且x≠x*,均有f(x)>
f(x*)
定理1一阶必要性条件如果x*是最小值点,并且函数f在x*的一个开领域是连续可微的,
那么有∇f(x*)=0。
定理2如果函数f是凸函数,那么任意局部最小值点均为全局最小值点。
此外,当函数是可微时,任何x满足∇f(x)=0的点均为全局最小值点。
2一阶方法
2.1梯度下降法(GradientDescent)
梯度下降法是一种线搜索方法,每一次迭代选择该点的负梯度方向作为搜索方向,因为负梯度方向是最快的下降方向,因此亦被称为最速下降法,它仅利用了函数的梯度信息,因此也被称为一阶方法。
它的形式非常的直观简单,在每一次迭代选择负梯度方向作为其下降方向,其更新形式如下:
其中,αk是步长或学习率,它可由一些准则确定,比如Wolfe准则、Armijo准则等。
L
当函数F是凸函数,并且其梯度是L−Lipshitz函数时,取α=1时,它的收敛速度可以达到O(1/k)[5],
进一步,当F是µ
−强凸,并且其梯度是L−lipshitz函数时,其收敛速度为线性收敛[5]:
Nesterov证明了一阶方法的理论最优下界[4][5],并且采用了一种加速的方法对梯度下降算法进行了改进,称之为Nesterov加速,称这一算法为加速梯度下降算法(AGD)。
一种常用的AGD迭代方式如下:
当函数F是凸函数,并且其梯度是L−Lipshitz函数时,如果
速度为
上述收敛速度对于非强凸函数和强凸函数都是适合的,当函数为非强凸时,取µ
=0。
通过迭代格式,可以看出,在其迭代时,仅涉及到向量的加减以及数乘运算,因此其每一次迭代的计算复杂度为O(nd)。
然而,在每一步,梯度下降方法需要计算n个梯度,其计算量为O(nd),当n和d很大时,这一计算量和存储空间是很大的。
因此,如何改进梯度算法,使得其适用于大规模的机器学习优化问题,特别是在数据爆炸的今天,成为一个很有意义的问题。
然而,在每一步,梯度下降方法需要计算n个梯度,其计算量为O(nd),当n和d很大时,这一计算量和存储空间是很大的。
一种比较常见的方法是确定性提升梯度方法(deterministicincrementalgradientmethod)[15],称之为IG。
IG方法和标准的梯度下降方法非常相似,对于n个函数和的形式的目标函数,其主要区别是IG方法使变量沿着其中一个函数的梯度方向循环更新。
具体的可以看成是一个有着两层循环的算法,每一次外层迭代可以看成是一个m次内层迭代的循环。
令初始点为
∈ℜn,对于任意k>
0,更新方式为
其中αk>
0,代表着步长,
=
。
IG方法的性能取决于内循环中迭代顺序,如果对于某些具体问题,如果存在一些已知的信息,并能确定出一个迭代顺序σ(1,...,n的一个排列),那么IG方法则有很好的性能。
然而,在现实当中先验信息是很难获得的,我们更倾向于采用随机采样的方法来更新。
这一方法被称为随机梯度方法(stochasticgradientmethod),或者称为Robbins-Monro[7]算法。
2.2随机梯度方法(StochasticGradientMethod)
随机梯度方法(SG)迭代的过程并不由目标函数,初始点,步长等因素唯一决定,其过程也是随机的,这不同于标准的梯度方法,每一次迭代,其根据某分布ε随机选择一个样本点来更新目标变量。
其中一种SG方法为随机梯度下降算法(stochasticgradientdescent),SGD并不能保证目标函数在每相邻两次迭代都一定下降,只是期望意义上的
下降算法[6][7]:
且满足Eε[∇fik(x(k))]=
∇fi(x(k))=∇F(x(k))。
每一轮迭代的计算量是标准梯度法的
,仅为O(d),但是其步长要不断的减小才能保证目标函数能收敛到最优值点。
我们将从理论对SG做进一步认识,这是一些已知的结论[16],我们考虑更一般的形式(SG),如算法1。
引理1如果函数F(x)是L-光滑函数,那么算法1满足如下的不等式,对于任意的k∈N:
假设1目标函数和SG(算法1)满足如下条件:
(1)函数F是下有界的,并且序列{xk}在一个开集中
(2)存在µ
G≥µ
0,使得对于任意k∈N
(3)存在M≥0和Mv≥0,使得对于任意k∈N
引理2如果函数F(x)是L-Lipschitz函数并且满足假设1,那么对任意k∈N满足如下不等
式:
定理3如果函数F是L-Lipschitz连续函数,µ
−强凸函数,假设算法1中步长固定,即对任
意k∈N均有αk=
且
则对任意k∈N有如下的不等式:
由上述定理可以得知,如果步长是固定时,那么算法最终仅能收敛到最优值点的邻域附近的次优点,因此可以通过不断减小步长来保证算法收敛到最优值点,这可有以下定理在理论上得以保证。
定理4如果函数F是L-Lipschitz连续函数,µ
−强凸函数,假设算法1中步长采用如下序列更新:
其中β>
并且γ>
0使得
则对任意k∈N有:
对于随机梯度下降法(SGD),其随机向量g(xk,εk)是函数全梯度的无偏估计,也即满足
F(xk)=E[g(xk,εk)]。
因此其满足
方差的存在导致了算法性能上的欠缺,如果我们能够改进算法使得方差不断的减小直至零,便能够提升算法的性能,在下一节中我们将介绍三种这样的方法。
随机梯度方法相比于标准梯度方法更加有效地利用了数据,标准梯度方法每一次更新目标变量需要用到所有的样本,但是在实际问题中,数据会存在这一定的冗余,因此,每次用到全体数据的一部分也能产生很好的效果,并且其效率会更高。
通过实验可以得知,随机梯度方法在刚开始下降的比较剧烈,会很快达到一定精度的次优解。
再者,如果忽略通信时间,标准梯度方法的收敛速度为O(nlog(1/s))(因为每次迭代需要计算n个梯度),而虽然SGD的收敛速度为O(1/T),但是其每次只计算一个梯度,因此其收敛速度为1/s,当n很大时,并且在实际中计算时间和精度要求有限时,SGD并不比标准梯度的效果差。
2.3方差减小方法(VarianceReductionMethod)
方差的存在是使得随机梯度方法性能欠缺的一个主要原因,通过减小方差来提升算法的性能是一个很好的想法。
首先给出一种方差减小的观点[11],假设用蒙特卡洛采样的方法去更新EX,如果能够高效的计算出EY,并且Y与X有着密切的关系,那么可以不断用θγ来不断逼近Y。
其中θγ=γ(X−Y)+EY,那么Eθγ是EX和EY的凸组合,θγ的方差为Var(θγ)=γ2[Var(X)+Var(Y)−2Cov(X,Y)]。
如果取γ=1,那么θγ是X的无偏估计。
有三种比较经典的方法可以看成是采用这一思想来改进SGD,分别是SAG(随机平均梯度方法),SVRG(随机方差减小方法)和SAGA。
对于SAGA[11]和SAG[9][10],X是随机梯度方法(SGD)的方向采样
(xk),γ可以看做是
(
)。
在SAGA中,γ=1,而在SAG中γ=1,SAG的方差是SAGA的
,但是SAGA的估计是无偏估计。
SVRG[8]采用的是Y=
),并且它分为了内外两层循环。
这三种方法的更新方式如下:
SAGA可以看成是结合SAG和SVRG两种方法的技巧提出的新的算法,它与SVRG的收敛速度相近,并适用于非强凸的问题。
SVRG有着良好的性质,并且适用于非凸函数,近几年来,关于SVRG的研究不断进行,得到不断发展。
接下来将分别介绍三种方法。
2.3.1随机平均梯度方法(StochasticAverageGradient)
SAG[9][10]可以看成是IAG[17]的一种随机版本,类似于是随机梯度方法,每一次迭代仅需要一个样本点来计算方向向量,并且每次迭代的向量方向是全梯度的有偏估计,但是它的收敛速度是线性的。
SAG的迭代格式如下:
=
(xk)如果i=ik,ik是随机选取的指标,否则
保持不变。
SAG方法相比于SGD有着很明显的优点,它可以采用固定步长进行更新,并且有着更快的收敛性质,线性收敛速度。
但是它需要存储n个梯度,当n和d很大时,其存储量为O(nd),其存储量是十分巨大的,但是对于某些特殊的函数,比如带有线性预测形式的函数fi(
x),其存储量大大减小,只需要O(d)。
如果初始梯度选择的是零向量,也即yi=0,那么在算法迭代的初始可以将步长调为
直至更新此处k=n,这样的调整可以提高收敛的速度。
SAG的算法如下[10]:
当取合适的步长时,SAG是一种线性收敛的算法,其收敛速度为O(n+κ)log(1/∈),
有如下定理[9]:
定理5如果函数f是L-Lipschitz连续,µ
−强凸函数,如果固定步长αk=
,这有如下的关系式:
进一步,如果n≤
,步长为αk=frac12nµ
,SAG迭代满足对于k≥n:
上式的结果是当k≥n时,在前n步使用SG方法,然后以前n步迭代的均值作为SAG的初始值,同时yi=0,虽然SAG有着同样的收敛速度,但是更加难分析,在实验中可以直接使用SAG方法,这里仅仅为了给出一个理论上更好的界。
SAG方法是一种线性收敛的随机梯度算法,其收敛速度为O(n+κ)log(1/s)。
SAG方法可以使用采用定步长,在实际中可取αk=
,由于L通常未知,常采用线搜索的方式确定[9]。
但是每次迭代其存储量为O(nd),计算量为O(d),当n和d都比较大时,这会影响到算法的实际使用效率。
2.3.2随机方差减小梯度方法(StochasticVarianceReductionGradient)
SAG是第一个取得线性收敛效果的随机梯度方法,此后,对随机算法的研究不断深入,随机方差下降梯度方法(SVRG)是其中最重要的算法之一。
这是由[8]等人在2013年提出的方法,是一种具有线性收敛的算法。
它适用的范围极其广泛,不仅适用于强凸的函数,非强凸,非凸的情况也同样有着很好的收敛性质。
这种方法不需要有存储整个梯度并且在迭代过程中并不需要改变每一步的步长,在实际操作中更加的方便。
这一方法分为两层循环,每m次在一个点x计算一次全梯度吗,然后在该点计算一个方向向量,并且这一向量是全梯度的一个无偏估计,然后做一次梯度”下降“。
算法的主要思想如下:
其中it是随机的从{1,...,n}选择,因此我们有E[xt|xt−1]=xt−1−αt∇F(xt−1)
SVRG是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器 学习 中的 随机 优化 算法 253