機器學習中常見的優化方法:梯度下降法、牛頓法擬牛頓法、共軛梯度法、拉格朗日乘數法

機器學習中常見的優化方法:

梯度下降法、牛頓法擬牛頓法、共軛梯度法、拉格朗日乘數法

  • 主要內容
    • 梯度下降法
    • 牛頓法擬牛頓法
    • 共軛梯度法
    • 拉格朗日乘數法

  許多機器學習算法,往往建立目標函數(損失函數+正則項),通過優化方法進行優化,根據訓練樣本訓練出滿足要求的模型。常見的優化方法有梯度下降法、牛頓法擬牛頓法、共軛梯度法、拉格朗日乘數法等等。

一、梯度下降法
  梯度下降法(Gradient Descent)是一種常用的一階優化方法,是求解無約束優化問題的經典方法。通過反覆迭代,沿目標函數梯度的反方向逼近目標函數的最優解(當目標函數爲凸函數時,才能得到全局最優)。目標函數極值點附近,收斂速度變慢。
  梯度下降方法包括批量梯度下降法(Batch Gradient Descent,BGD)以及隨機梯度下降法(Stochastic Gradient Descent,SGD)。
  假設目標函數爲均方誤差損失函數:

J(θ)=12Ni=1N(yiyi^)2
其中,N 表示訓練樣本個數,θ 爲模型參數集合,即需要梯度下降求解的參數。
  假設需要擬合的函數模型爲:
yi=f(xi)=j=1Dθjxij
即線性迴歸模型,其中D 表示樣本特徵的個數。
  1、批量梯度下降法
  批量梯度下降法,每一次迭代,需要用到所有訓練樣本。
  目標函數J 關於參數θj 求偏導:
Jθj=Jyi^yi^θj=i=1N(yiyi^)xij

  根據所有訓練樣本,更新參數θj 取值(梯度的負方向):
θj=θjJθj

  由於批量梯度下降法,每一次迭代需要用到所有訓練樣本,因此如果訓練樣本數量很大,則迭代速度變得非常緩慢。但是,由於最小化所有訓練樣本的目標函數,因此最終求解的是全局最優解。
  2、隨機梯度下降法
  隨機梯度下降法,每一次迭代,僅僅需要一個訓練樣本。
  目標函數J 可以寫成:
J(θ)=12Ni=1N(yiyi^)2=1Ni=1Ncost(θ,(xi,yi))
其中,cost(θ,(xi,yi))=12(yiyi^)2 ,即目標函數的所有誤差爲每個樣本的誤差之和。
  cost 關於參數θj 求偏導:
costθj=costyi^yi^θj=(yiyi^)xij

  根據每一個訓練樣本,更新參數θj 取值(梯度的負方向):
θj=θjcostθj

  由於隨機梯度下降法,每一次迭代僅僅需要一個訓練樣本,因此迭代的速度非常快,可以通過增加迭代次數,逼近全局最優解。最小化每一個訓練樣本的目標函數,雖然不是每次迭代得到的參數取值都朝着全局最優方向,但是通過增加迭代次數,整體的趨勢是朝着全局最優方向,最終的結果往往是在全局最優解附近,適用於大規模訓練樣本情況。隨機梯度下降法以損失很小的一部分精確度和增加一定數量的迭代次數爲代價,換取了總體優化效率的提升。增加的迭代次數遠遠小於訓練樣本的數量。

二、牛頓法擬牛頓法
  牛頓法(Newton Method)、擬牛頓法(Quasi Newton Method)是常用的二階優化方法,是求解無約束優化問題的經典方法。由於用到了二階導數信息,因此相比梯度下降法收斂速度更快。牛頓法也是通過反覆迭代,求解目標函數的最優解。但是,牛頓法每次迭代需要求解目標函數的海塞矩陣的逆矩陣,因此計算相對複雜。擬牛頓法通過正定矩陣近似海塞矩陣的逆矩陣或者海塞矩陣,簡化了計算過程。
  1、牛頓法
  無約束條件的最優化問題,假設目標函數J(θ) 具有二階連續偏導數,若第k 次迭代值爲 θ(k) ,則可將J(θ(k+1))θ(k) 附近進行二階泰勒展開:

J(θ(k+1))=J(θ(k))+J(θ(k))(θ(k+1)θ(k))+12J(θ(k))(θ(k+1)θ(k))2

  如果 θ(k+1) 趨近於θ(k) 時,limθ(k+1)θ(k)0J(θ(k+1))J(θ(k))=0 ,帶入上式,可以得到更新參數集合θ 的迭代公式:
θ(k+1)=θ(k)J(θ(k))J(θ(k))
其中,J(θ(k))J(θ(k)) 的海塞矩陣(Hesse Matrix),上式中[J(θ(k))]1 即爲海塞矩陣的逆矩陣。由於海塞矩陣或者海塞矩陣的逆矩陣計算相對複雜,擬牛頓法對此進行了改進。
  2、擬牛頓法
  由於牛頓法中海塞矩陣的逆矩陣計算相對複雜,擬牛頓法通過一個n 階矩陣G(θ(k)) 來近似代替[J(θ(k))]1
  牛頓法中,海塞矩陣需要滿足條件:
J(θ(k+1))J(θ(k))=J(θ(k))(θ(k+1)θ(k))

  上式變形,得到擬牛頓條件:
[J(θ(k))]1(J(θ(k+1))J(θ(k)))=θ(k+1)θ(k)

  擬牛頓法將G(θ(k)) 作爲[J(θ(k))]1 的近似,則G(θ(k)) 需要滿足如下條件:
  1)每次迭代矩陣G(θ(k)) 爲正定矩陣;
  2)G(θ(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 個變量與k 個約束條件的最優化問題轉化爲具有d+k 個變量的無約束優化問題的求解。詳細講解可以參考周志華《機器學習》中的相關介紹。

五、總結
  非線性最優化問題:函數值搜索(零階法)——變量輪換法、單純形法;梯度信息搜索(一階法)——梯度下降法、共軛梯度法;二階近似值搜索(二階法)——牛頓法、擬牛頓法。主體思想:有約束條件的最優化問題轉換成無約束條件的最優化問題,多變量函數的優化轉換成單變量函數的優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章