深度學習中的優化算法


在深度學習過程中經常會聽到**優化 算法雲雲,優化算法即通過迭代的方法計算目標函數的最優解,為什么要用到優化算法呢?

1、如果是凸優化問題,如果數據量特別大,那么計算梯度非常耗時,因此會選擇使用迭代的方法求解,迭代每一步計算量小,且比較容易實現

2、對於非凸問題,只能通過迭代的方法求解,每次迭代目標函數值不斷變小,不斷逼近最優解

因此優化問題的重點是使用何種迭代方法進行迭代,即求迭代公式。下面簡單介紹幾種優化算法 :梯度下降法,牛頓法,擬牛頓法,BFGS

梯度下降法:

  梯度下降法是求解無約最優化問題的一種最常用的方法,設f(x)具有一階連續偏導數的函數,要求解的無約束最優化問題是:

      min f(x)

  X*表示目標函數的的極小點。

主要核心思想: 負梯度方向是使函數值下降最快的方向,在迭代的每一步以負梯度方向更新x的值,從而達到減少函數值的目的。

 

f(x)的一階泰勒展開:

,gk為Xk處的梯度方向

即函數在x處的值可以通過,Xk處的函數值與Xk處的梯度方向來表示,那么Xk+1可以由Xk與gk來表示,即

, Pk為搜索方向,取負梯度方向,為搜索步長,由一維搜索確定,即使得:

 迭代公式 :

當目標函數是凸函數時,梯度下降法的解是全局最優解。

 由於使用梯度下降法時,每一步都需要計算在當前迭代值xk處的梯度值,而計算梯度需要使得全部樣本進行計算, 這樣計算量將非常大,因此為了降低計算量,有人提出了隨機梯度下降法,即每次隨機選擇一個樣本計算梯度,大大提高了

計算速度。

牛頓法:

  考慮約束問題

      min f(x)

  其中x*為目標函數的極小點。

  f(x)的二階泰勒展開:

        式(1-1)

  這里gk是f(x)在梯度向量在點xk處的值,H(xk)是f(x)的海森矩陣在點xk處的值。函數有極值的條件的必要條件是在極值點處一階導數為0,即梯度向量為0。

  牛頓法利用極小點的必要條件:

每次迭代從點Xk開始,求目標函數的極小點,作為第k+1次迭代值x(k+1),假設,由式(1-1)有

                         式(1-2)

,因此

                                   式(1-3)

式(1-3)即為牛頓法的迭代公式 

 

擬牛頓法:

在牛頓法的迭代中,需要計算海賽矩陣的逆矩陣H-1這一計算比較復雜,考慮用一個n階矩陣來近似代替H-1,這就是擬牛頓法的基本思路。

DFP(Davidon-Fletcher-Powell)使用一個n階矩陣Gk+1來近似H-1

BFGS(Broyden-Fletcher-Goldfarb-Shanno)使用一個n階矩陣Bk來逼近H

L-BFGS(Limited -BFGS ):由於上述兩種擬牛頓法都要保存一個n階矩陣,對於內存消耗非常大,因此在此基礎上提出了一種節約內存的方法L-BFGS

 

由於牛頓法的迭代公式有考慮目標函數的具體分布,因此相對於梯度下降算法收斂速度更快,在實際應用中經常使用LBFGS方法。

 

關於Conjugate Gradient方法,請參考博文http://www.cnblogs.com/dupuleng/articles/4165092.html

          

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM