机器学习中常见的优化方法:
梯度下降法、牛顿法拟牛顿法、共轭梯度法、拉格朗日乘数法
- 主要内容
- 梯度下降法
- 牛顿法拟牛顿法
- 共轭梯度法
- 拉格朗日乘数法
许多机器学习算法,往往建立目标函数(损失函数+正则项),通过优化方法进行优化,根据训练样本训练出满足要求的模型。常见的优化方法有梯度下降法、牛顿法拟牛顿法、共轭梯度法、拉格朗日乘数法等等。
一、梯度下降法
梯度下降法(Gradient Descent)是一种常用的一阶优化方法,是求解无约束优化问题的经典方法。通过反复迭代,沿目标函数梯度的反方向逼近目标函数的最优解(当目标函数为凸函数时,才能得到全局最优)。目标函数极值点附近,收敛速度变慢。
梯度下降方法包括批量梯度下降法(Batch Gradient Descent,BGD)以及随机梯度下降法(Stochastic Gradient Descent,SGD)。
假设目标函数为均方误差损失函数:
J(θ)=12N∑i=1N(yi−yiˆ)2 J ( θ ) = 1 2 N ∑ i = 1 N ( y i − y i ^ ) 2
其中,
N N 表示训练样本个数,
θ θ 为模型参数集合,即需要梯度下降求解的参数。
假设需要拟合的函数模型为:
yi=f(xi)=∑j=1Dθjxij y i = f ( x i ) = ∑ j = 1 D θ j x i j
即线性回归模型,其中
D D 表示样本特征的个数。
1、批量梯度下降法
批量梯度下降法,每一次迭代,需要用到所有训练样本。
目标函数
J J 关于参数
θj θ j 求偏导:
∂J∂θj=∂J∂yiˆ∂yiˆ∂θj=−∑i=1N(yi−yiˆ)xij ∂ J ∂ θ j = ∂ J ∂ y i ^ ∂ y i ^ ∂ θ j = − ∑ i = 1 N ( y i − y i ^ ) x i j
根据所有训练样本,更新参数
θj θ j 取值(梯度的负方向):
θ∗j=θj−∂J∂θj θ j ∗ = θ j − ∂ J ∂ θ j
由于批量梯度下降法,每一次迭代需要用到所有训练样本,因此如果训练样本数量很大,则迭代速度变得非常缓慢。但是,由于最小化所有训练样本的目标函数,因此最终求解的是全局最优解。
2、随机梯度下降法
随机梯度下降法,每一次迭代,仅仅需要一个训练样本。
目标函数
J J 可以写成:
J(θ)=12N∑i=1N(yi−yiˆ)2=1N∑i=1Ncost(θ,(xi,yi)) J ( θ ) = 1 2 N ∑ i = 1 N ( y i − y i ^ ) 2 = 1 N ∑ i = 1 N c o s t ( θ , ( x i , y i ) )
其中,
cost(θ,(xi,yi))=12(yi−yiˆ)2 c o s t ( θ , ( x i , y i ) ) = 1 2 ( y i − y i ^ ) 2 ,即目标函数的所有误差为每个样本的误差之和。
cost c o s t 关于参数
θj θ j 求偏导:
∂cost∂θj=∂cost∂yiˆ∂yiˆ∂θj=−(yi−yiˆ)xij ∂ c o s t ∂ θ j = ∂ c o s t ∂ y i ^ ∂ y i ^ ∂ θ j = − ( y i − y i ^ ) x i j
根据每一个训练样本,更新参数
θj θ j 取值(梯度的负方向):
θ∗j=θj−∂cost∂θj θ j ∗ = θ j − ∂ c o s t ∂ θ j
由于随机梯度下降法,每一次迭代仅仅需要一个训练样本,因此迭代的速度非常快,可以通过增加迭代次数,逼近全局最优解。最小化每一个训练样本的目标函数,虽然不是每次迭代得到的参数取值都朝着全局最优方向,但是通过增加迭代次数,整体的趋势是朝着全局最优方向,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。随机梯度下降法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体优化效率的提升。增加的迭代次数远远小于训练样本的数量。
二、牛顿法拟牛顿法
牛顿法(Newton Method)、拟牛顿法(Quasi Newton Method)是常用的二阶优化方法,是求解无约束优化问题的经典方法。由于用到了二阶导数信息,因此相比梯度下降法收敛速度更快。牛顿法也是通过反复迭代,求解目标函数的最优解。但是,牛顿法每次迭代需要求解目标函数的海塞矩阵的逆矩阵,因此计算相对复杂。拟牛顿法通过正定矩阵近似海塞矩阵的逆矩阵或者海塞矩阵,简化了计算过程。
1、牛顿法
无约束条件的最优化问题,假设目标函数 J(θ) J ( θ ) 具有二阶连续偏导数,若第 k k 次迭代值为 θ(k) θ ( k ) ,则可将 J(θ(k+1)) J ( θ ( k + 1 ) ) 在 θ(k) θ ( k ) 附近进行二阶泰勒展开:
J(θ(k+1))=J(θ(k))+J′(θ(k))(θ(k+1)−θ(k))+12J′′(θ(k))(θ(k+1)−θ(k))2 J ( θ ( k + 1 ) ) = J ( θ ( k ) ) + J ′ ( θ ( k ) ) ( θ ( k + 1 ) − θ ( k ) ) + 1 2 J ″ ( θ ( k ) ) ( θ ( k + 1 ) − θ ( k ) ) 2
如果
θ(k+1) θ ( k + 1 ) 趋近于
θ(k) θ ( k ) 时,
limθ(k+1)−θ(k)→0J(θ(k+1))−J(θ(k))=0 l i m θ ( k + 1 ) − θ ( k ) → 0 J ( θ ( k + 1 ) ) − J ( θ ( k ) ) = 0 ,带入上式,可以得到更新参数集合
θ θ 的迭代公式:
θ(k+1)=θ(k)−J′(θ(k))J′′(θ(k)) θ ( k + 1 ) = θ ( k ) − J ′ ( θ ( k ) ) J ″ ( θ ( k ) )
其中,
J′′(θ(k)) J ″ ( θ ( k ) ) 为
J(θ(k)) J ( θ ( k ) ) 的海塞矩阵(Hesse Matrix),上式中
[J′′(θ(k))]−1 [ J ″ ( θ ( k ) ) ] − 1 即为海塞矩阵的逆矩阵。由于海塞矩阵或者海塞矩阵的逆矩阵计算相对复杂,拟牛顿法对此进行了改进。
2、拟牛顿法
由于牛顿法中海塞矩阵的逆矩阵计算相对复杂,拟牛顿法通过一个
n n 阶矩阵
G(θ(k)) G ( θ ( k ) ) 来近似代替
[J′′(θ(k))]−1 [ J ″ ( θ ( k ) ) ] − 1 。
牛顿法中,海塞矩阵需要满足条件:
J′(θ(k+1))−J′(θ(k))=J′′(θ(k))(θ(k+1)−θ(k)) J ′ ( θ ( k + 1 ) ) − J ′ ( θ ( k ) ) = J ″ ( θ ( k ) ) ( θ ( k + 1 ) − θ ( k ) )
上式变形,得到拟牛顿条件:
[J′′(θ(k))]−1(J′(θ(k+1))−J′(θ(k)))=θ(k+1)−θ(k) [ J ″ ( θ ( k ) ) ] − 1 ( J ′ ( θ ( k + 1 ) ) − J ′ ( θ ( k ) ) ) = θ ( k + 1 ) − θ ( k )
拟牛顿法将
G(θ(k)) G ( θ ( k ) ) 作为
[J′′(θ(k))]−1 [ J ″ ( θ ( k ) ) ] − 1 的近似,则
G(θ(k)) G ( θ ( k ) ) 需要满足如下条件:
1)每次迭代矩阵
G(θ(k)) G ( θ ( k ) ) 为正定矩阵;
2)
G(θ(k)) G ( θ ( k ) ) 满足拟牛顿条件,即
G(θ(k))(J′(θ(k+1))−J′(θ(k)))=θ(k+1)−θ(k) G ( θ ( k ) ) ( J ′ ( θ ( k + 1 ) ) − J ′ ( θ ( k ) ) ) = θ ( k + 1 ) − θ ( k ) 。
目前,常见的拟牛顿算法包括DFP(Davidon-Fletcher-Powell)算法以及BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法,感兴趣的小伙伴可以参考李航《统计学习方法》中的相关介绍。
三、共轭梯度法
共轭梯度法(Conjugate Gradient)是介于梯度下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了梯度下降法收敛速度慢的缺点,又避免了牛顿法需要存储和计算海塞矩阵并求逆的缺点。共轭梯度法优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。详细讲解可以参考wiki百科共轭梯度法。
四、 拉格朗日乘数法——解决含有约束条件的优化问题
拉格朗日乘数法(Lagrange Multipliers)是一种寻找多元函数在一组约束条件下的极值的方法。通过引入拉格朗日乘子,将含有 d d 个变量与 k k 个约束条件的最优化问题转化为具有 d+k d + k 个变量的无约束优化问题的求解。详细讲解可以参考周志华《机器学习》中的相关介绍。
五、总结
非线性最优化问题:函数值搜索(零阶法)——变量轮换法、单纯形法;梯度信息搜索(一阶法)——梯度下降法、共轭梯度法;二阶近似值搜索(二阶法)——牛顿法、拟牛顿法。主体思想:有约束条件的最优化问题转换成无约束条件的最优化问题,多变量函数的优化转换成单变量函数的优化。