機器學習各優化算法的簡單總結

1 梯度下降

1.1 SGD

算法介紹

SGD(Stochasitic Gradient Descent)很簡單,就是沿着梯度的反方向更新參數,優化目標函數。優化公式如下:
di=g(θi1)
θi=θi1λdi
其中di 爲當前位置的梯度,也就是損失函數關於參數的一階導數

優點

操作簡單,計算量小,在損失函數是凸函數的情況下能夠保證收斂到一個較好的全局最優解

缺點

  • λ 是個定值(在最原始的版本),它的選取直接決定了解的好壞,過小會導致收斂太慢,過大會導致震盪而無法收斂到最優解。
  • 對於非凸問題,只能收斂到局部最優,並且沒有任何擺脫局部最優的能力(一旦梯度爲0就不會再有任何變化)
    對於非凸的優化問題,我們可以將其轉化爲對偶問題,對偶函數一定是凹函數,但是這樣求出來的解並不等價於原函數的解,只是原函數的一個確下界

1.2 Momentum

算法介紹

Momentum改進自SGD,讓每一次的參數更新方向不僅取決於當前位置的梯度,還受到上一次參數更新方向的影響。 di=βdi1+(1β)g(θi1) θi=θi1λdi Momentum的意思就是動量,也就意味着上一次更新的方向對本次更新仍然有影響。

優點

一定程度上緩解了SGD收斂不穩定的問題,並且有一定的擺脫局部最優的能力(當前梯度爲0時,仍可能按照上次迭代的方向衝出局部最優點),直觀上理解,它可以讓每次迭代的“掉頭方向不是那個大“。

缺點

這裏又多了另外一個超參數β 需要我們設置,它的選取同樣會影響到結果。

β 一般取0.9

1.3 Nestrov Momentum

算法介紹

Nestrov Momentum的意義在於,既然下一次一定會更新λdi ,那麼求梯度的時候就可以用提前位置的梯度g(θi1λdi) ,則: di=βdi1+(1β)g(θi1) di=βdi1+(1β)g(θi1λdi) θi=θi1λdi

優點

實驗中,一般用Nestrov Momentum比較多,由於結合了二階導數的信息,收斂比Momentum要更快一些。

缺點

仍然是多了一個超參數需要調整

2 自適應方法

2.1 Adagrad

算法介紹

ci=ci1+g2(θi1) θi=θi1λci+εg(θi1) 其中,ci 是一個cache,保存了各位置梯度的平方,ε 一般取值爲104108 ,爲了防止分母取零。

優點

Adagrad不需要手動調節學習率λ ,因爲整體來看,學習率爲λci+ϵ ,它會根據ci 的大小發生自適應的變化(不同位置上變化的幅度不同)。

缺點

  • 學習率單調遞減,在迭代後期可能導致學習率變得特別小而導致收斂及其緩慢。
  • 同樣的,我們還需要手動設置初始λ

2.2 RMSprop

算法介紹

ci=βci1+(1β)g2(θi1)
θi=θi1λci+εg(θi1)

優點

  • 可以看出,Rmsprop與Adagrad類似,只不過cache的計算略微複雜一些,利用了一個衰減因子β ,這樣可以使得c_i並不是一直處於增大的情況,可以解決Adagrad學習率迅速減小的問題。其中,衰減因子β 通常取值爲[0.9,0.99,0.999]。
  • 不再需要手動調整學習率,可以根據ci 的變化自動調整

缺點

同樣的,我們還需要手動設置初始λ

2.3 Adadelta

算法介紹

ci=γci1+(1γ)g2(θi1)
di=Δi1+εci+εg(θi1)
θi=θi1+di
Δi=γΔi1+(1γ)di2

優點

  • Adadelta與Rmsprop類似,自適應的學習率
  • 不需要手動設置λ

缺點

後期容易在小範圍內產生震盪

2.4 Adam

算法介紹

di=β1di1+(1β1)g(θi1)
ci=β2ci1+(1β2)g2(θi1)
di^=di1β1t
ci^=ci1β2t
θi=θi1λci^+εmi^
在參數更新的最初幾步中,由於初始化d0=0c0=0 ,爲了防止最初幾步的更新向0偏差,Adam利用βi 的t次冪來修正這種偏差(t每次更新加1)。

優點

結合Momentum和Adaprop,穩定性好,同時相比於Adagrad,不用存儲全局所有的梯度,適合處理大規模數據

缺點

有三個超參數需要調整

通常β1 取值爲0.9,β2 取值爲0.999,ε 取值爲108

3 牛頓法與擬牛頓法

3.1 牛頓法

算法介紹

牛頓法和梯度下降法類似,也是求解無約束最優化問題的方法。
di=g(θi1)
θi=θi1λHi11di
其中,Hi1 是優化目標函數L在第i-1步的海森矩陣。

優點

收斂速度較快(考慮到了二階導數的信息)

缺點

牛頓法的缺點就是H1 計算比較複雜,因此有其他改進的方法,例如擬牛頓法。

3.2 擬牛頓法

算法介紹

擬牛頓法用一個矩陣G 來近似代替H1 (或B 來代替H ),其中G 滿足擬牛頓條件:
Gi+1yi=δi(Bi+1δi=yi)
其中yi=g(θi+1)g(θi)δi=xi+1xi 。因此按照擬牛頓條件,每次只需更新Gi+1 (或Bi+1 )即可,使得Gi+1=Gi+ΔGi
牛頓法有多種的具體實現,其中DFP算法選擇更新G ,BFGS選擇更新B

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