深度學習基礎(四)優化函數(梯度下降函數)

梯度下降函數也就是優化函數,在神經網絡訓練過程最重要的函數。重要程度類似於調校對於汽車的重要性,搭建模型和參數設置等操作=“造好了一輛汽車”,優化函數=“調校”。因爲汽車最終的操控性和加速性能等指標很大程度取決於調校,調校的好的汽車操控性非常好,而調校不好的汽車開起來很難受。而優化函數也是一樣,很多情況下學習模型是正確的,但是最終訓練結果不如人意,往往是因爲優化函數的選擇錯誤。

目錄

一、優化函數的發展歷程。

二、優化函數原理詳解

總結:


一、優化函數的發展歷程。

優化函數的發展主要經歷了下面的過程: BGD->SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam。

今天我們主要介紹其中的6種優化函數,其中包括幾乎“萬能”的Adam,以及被大神們用的出神入化的SGD及其變種。此外,Adam算法對新手最友好了,幾乎能解決所有的由優化函數引起的訓練問題。

二、優化函數原理詳解

1.BGD

BGD,全稱是Batch gradient descent,批量梯度下降。其計算損失函數是遍歷全部數據集,然後算函數對各個參數的梯度和更新梯度,所以其計算速度慢並且不支持在線學習。

實現:利用現有參數對訓練集中的每一個輸入生成一個估計輸出Y_pred,然後跟實際輸出Y統計所有誤差,求平均以後得到平均誤差,以此來作爲更新參數的依據。

2.SGD

SGD,全程是stochastic gradient descent,隨機梯度下降。每遍歷一個數據就算一次損失函數,然後求取梯度更新參數。速度較快,但收斂性不好,容易在最優點附近振盪,陷入局部最優點。

實現:X_{t+1}=X_{T}-\sigma *\Delta f(X_{T})

每步迭代過程,從訓練集中的隨機抽取一批容量爲m的樣本{x1,…,xm},以及相關的輸出y,計算梯度和誤差並更新參數.

3.SGD +Momentum

SGD加入了慣性,是爲了抑制SGD的振盪,即即將陷入局部最優點時,利用其慣性繼續往前計算,避免陷入局部最優點。

 

4.Adagrad

Adagrad加入了二階動量,即“自適應學習率”優化算法。在訓練過程中經常更新的參數A,應該降低其學習速率;而對於偶爾更新的參數B,在針對特定出現的樣本數據訓練時應增大其學習速率。

Ghis主要代表的是歷史數據的梯度,1e-7是一個很小的常量。

5.RMSprop

RMSprop是由AdaGrad改進而來的,因爲在遭遇數據量非常大的數據集進行訓練時,AdaGrad函數的Ghis項會越來越龐大,導致訓練速度變慢以及其他的問題,所以加入decay的存在,該decay是歷史數據對Ghis的權重。

6.Adam

Adam可以說是上述4項優化函數的優點的集大成者,存在2個超參數,分別控制一階動量和二階動量。

上圖中first momentum和second momentum分別是一階動量和二階動量。

總結:

Adam對新手最友好,幾乎“萬能”;但是很多大神仍然用SGD及其變種來就能解決問題,大神些還是牛逼啊

參考文獻:

1.深度學習之tensorflow

2.https://mp.weixin.qq.com/s/xm4MuZm-6nKTn2eE3eNOlg

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