機器學習中常見的優化方法:
梯度下降法、牛頓法擬牛頓法、共軛梯度法、拉格朗日乘數法
- 主要內容
- 梯度下降法
- 牛頓法擬牛頓法
- 共軛梯度法
- 拉格朗日乘數法
許多機器學習算法,往往建立目標函數(損失函數+正則項),通過優化方法進行優化,根據訓練樣本訓練出滿足要求的模型。常見的優化方法有梯度下降法、牛頓法擬牛頓法、共軛梯度法、拉格朗日乘數法等等。
一、梯度下降法
梯度下降法(Gradient Descent)是一種常用的一階優化方法,是求解無約束優化問題的經典方法。通過反覆迭代,沿目標函數梯度的反方向逼近目標函數的最優解(當目標函數爲凸函數時,才能得到全局最優)。目標函數極值點附近,收斂速度變慢。
梯度下降方法包括批量梯度下降法(Batch Gradient Descent,BGD)以及隨機梯度下降法(Stochastic Gradient Descent,SGD)。
假設目標函數爲均方誤差損失函數:
假設需要擬合的函數模型爲:
1、批量梯度下降法
批量梯度下降法,每一次迭代,需要用到所有訓練樣本。
目標函數 關於參數 求偏導:
根據所有訓練樣本,更新參數 取值(梯度的負方向):
由於批量梯度下降法,每一次迭代需要用到所有訓練樣本,因此如果訓練樣本數量很大,則迭代速度變得非常緩慢。但是,由於最小化所有訓練樣本的目標函數,因此最終求解的是全局最優解。
2、隨機梯度下降法
隨機梯度下降法,每一次迭代,僅僅需要一個訓練樣本。
目標函數 可以寫成:
關於參數 求偏導:
根據每一個訓練樣本,更新參數 取值(梯度的負方向):
由於隨機梯度下降法,每一次迭代僅僅需要一個訓練樣本,因此迭代的速度非常快,可以通過增加迭代次數,逼近全局最優解。最小化每一個訓練樣本的目標函數,雖然不是每次迭代得到的參數取值都朝着全局最優方向,但是通過增加迭代次數,整體的趨勢是朝着全局最優方向,最終的結果往往是在全局最優解附近,適用於大規模訓練樣本情況。隨機梯度下降法以損失很小的一部分精確度和增加一定數量的迭代次數爲代價,換取了總體優化效率的提升。增加的迭代次數遠遠小於訓練樣本的數量。
二、牛頓法擬牛頓法
牛頓法(Newton Method)、擬牛頓法(Quasi Newton Method)是常用的二階優化方法,是求解無約束優化問題的經典方法。由於用到了二階導數信息,因此相比梯度下降法收斂速度更快。牛頓法也是通過反覆迭代,求解目標函數的最優解。但是,牛頓法每次迭代需要求解目標函數的海塞矩陣的逆矩陣,因此計算相對複雜。擬牛頓法通過正定矩陣近似海塞矩陣的逆矩陣或者海塞矩陣,簡化了計算過程。
1、牛頓法
無約束條件的最優化問題,假設目標函數 具有二階連續偏導數,若第 次迭代值爲 ,則可將 在 附近進行二階泰勒展開:
如果 趨近於 時, ,帶入上式,可以得到更新參數集合 的迭代公式:
2、擬牛頓法
由於牛頓法中海塞矩陣的逆矩陣計算相對複雜,擬牛頓法通過一個 階矩陣 來近似代替 。
牛頓法中,海塞矩陣需要滿足條件:
上式變形,得到擬牛頓條件:
擬牛頓法將 作爲 的近似,則 需要滿足如下條件:
1)每次迭代矩陣 爲正定矩陣;
2) 滿足擬牛頓條件,即 。
目前,常見的擬牛頓算法包括DFP(Davidon-Fletcher-Powell)算法以及BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法,感興趣的小夥伴可以參考李航《統計學習方法》中的相關介紹。
三、共軛梯度法
共軛梯度法(Conjugate Gradient)是介於梯度下降法與牛頓法之間的一個方法,它僅需利用一階導數信息,但克服了梯度下降法收斂速度慢的缺點,又避免了牛頓法需要存儲和計算海塞矩陣並求逆的缺點。共軛梯度法優點是所需存儲量小,具有步收斂性,穩定性高,而且不需要任何外來參數。詳細講解可以參考wiki百科共軛梯度法。
四、 拉格朗日乘數法——解決含有約束條件的優化問題
拉格朗日乘數法(Lagrange Multipliers)是一種尋找多元函數在一組約束條件下的極值的方法。通過引入拉格朗日乘子,將含有 個變量與 個約束條件的最優化問題轉化爲具有 個變量的無約束優化問題的求解。詳細講解可以參考周志華《機器學習》中的相關介紹。
五、總結
非線性最優化問題:函數值搜索(零階法)——變量輪換法、單純形法;梯度信息搜索(一階法)——梯度下降法、共軛梯度法;二階近似值搜索(二階法)——牛頓法、擬牛頓法。主體思想:有約束條件的最優化問題轉換成無約束條件的最優化問題,多變量函數的優化轉換成單變量函數的優化。