機器學習各優化演算法的簡單總結
梯度下降
SGD
SGD(Stochasitic Gradient Descent)很簡單,就是沿著梯度的反方向更新參數,優化目標函數。優化公式如下
其中為當前位置的梯度。
Momentum
Momentum改進自SGD,讓每一次的參數更新方向不僅取決於當前位置的梯度,還受到上一次參數更新方向的影響。
Momentum的意思就是動量,也就意味著上一次更新的方向對本次更新仍然有影響。
Nestrov Momentum
Nestrov Momentum的意義在於,既然下一次一定會更新,那麼求梯度的時候就可以用提前位置的梯度,則
實驗中,一般用Nestrov Momentum比較多,收斂比Momentum要更快一些。
自適應方法
Adagrad
其中,是一個cache,保存了各位置梯度的平方,一般取值為~,為了防止分母取零。可以看出,Adagrad不需要手動調節學習率,因為整體來看,學習率為,它會根據的大小發生自適應的變化(不同位置上變化的幅度不同)。但是因為一直是正數,所以總的來說,學習率也一直是在變小,最後可能會導致參數無法更新。
Rmsprop
可以看出,Rmsprop與Adagrad類似,只不過cache的計算略微複雜一些,利用了一個衰減因子,這樣可以使得並不是一直處於增大的情況,可以解決Adagrad學習率迅速減小的問題。其中,衰減因子通常取值為[0.9,0.99,0.999]。
Adadelta
Adadelta與Rmsprop類似,但是連初始的學習速率 都不用設置。
Adam
與Rmsprop類似,Adam除了利用一個衰減因子計算cache以外,還類似Momentum,利用了上一次的參數更新方向,所以可以說Adam是帶Momentum的Rmsprop。在參數更新的最初幾步中,由於與是初始化為0的,為了防止最初幾步的更新向0偏差,Adam利用的次冪來修正這種偏差(每次更新加1)。其中,通常取值為0.9,取值為0.999,取值為。
牛頓法與擬牛頓法
牛頓法
牛頓法和梯度下降法類似,也是求解無約束最優化問題的方法,收斂速度較快(考慮到了二階導數的信息)。
其中,是優化目標函數在第步的海森矩陣。牛頓法的缺點就是計算比較複雜,因此有其他改進的方法,例如擬牛頓法。
擬牛頓法
擬牛頓法用一個矩陣來近似代替(或來代替),其中滿足擬牛頓條件:
()
其中,。因此按照擬牛頓條件,每次只需更新(或)即可,使得。
牛頓法有多種的具體實現,其中DFP演算法選擇更新,BFGS選擇更新,這裡就不細講了。
參考
- CS231n Convolutional Neural Networks for Visual Recognition
- ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION
- 《統計學習方法》李航
- Newton - Wikipedia
推薦閱讀:
※機器學習筆記7 —— 編程作業1代價函數和梯度下降函數
※當我們在談論 Deep Learning:DNN 與它的參數們(貳)
※[讀論文]Big Batch SGD: Automated Inference using Adaptive Batch Sizes
※機器學習筆記8 —— 邏輯回歸模型的代價函數和梯度下降演算法
※一文看懂常用的梯度下降演算法
TAG:机器学习 | 梯度下降 | 深度学习DeepLearning |