深度學習系列之---梯度下降法和梯度檢查

//本文為作者原創,在同名公眾號和CSDN賬號同步發佈,歡迎大家關注//

用白話、講原理、做科普。歡迎大家來到深度學習系列第三期,這一期和大家分享一下深度學習中梯度下降和梯度檢查問題。梯度下降法是神經網絡反向傳播中不可缺少的運算,梯度下降法可以使神經網絡以最快的速度擬合輸入樣本,今天給大家介紹幾種應用在龐大數據集上的梯度下降法。梯度檢測是對梯度下降法的一種檢查,是訓練神經網絡前的準備工作。


深度學習系列之---梯度下降法和梯度檢查

min-batch梯度下降法即微型批量梯度下降法。普通的梯度下降法沒迭代一次就需要將所有的訓練樣本都計算一遍,min-batch需要的方法是將整個訓練集分成若干個小部分,每次迭代只計算那一小部分的代價函數。當面對一個大的數據集時,一部分一部分的計算有可以有效提高運行速度。min-batch每次迭代後繪製出的學習曲線可能不一樣,也不一定每次都是下降的。

動量梯度下降法是對min-batch的一種優化,通過計算梯度的指數加權平均數,並以用該梯度更新權重。該方法使得梯度下降速度加快了,相當於梯度下降了一下,然後又向前滑動了一下。

RMSprop均方根法也可以加速梯度下降,和動量梯度下降法一樣都是為了減少擺動是對min-batch的優化。該方法可以使用更大的學習率,為了避免除0,要在權值更新的分母上加一個很小的數。

adam算法集合了動量梯度下降法和RMSprop均方根法對梯度下降法進行優化,得到了不錯的效果。

補充:低維會出現局部最優解,高維基本不會出現局部最優解的問題,出現的是一些鞍點,這些鞍點仍然可以下降,問題是平穩段的下降緩慢,所以用以上幾種方法優化梯度下降法會好一點。


深度學習系列之---梯度下降法和梯度檢查

梯度檢查:梯度檢查在神經網絡訓練中非常有必要,可以提前排查出一些模型搭建過程中的小錯誤。運行梯度檢測的對每個參數都檢測,計算近似導數和實際導數的二範數,如果小10的-7次方說明很好,如果小於10的-5次方說明可能存在bug,如果是小於10的-3次方要仔細排查。

梯度檢驗注意事項

1、不要在訓練中使用梯度檢驗,只用於調試。

2、如果算法的梯度檢查失敗。要檢查每一項找到bug

3、代價函數要包括正則項。

4、不要運行droput,隨機梯度消失。先運行梯度檢測再運行dropout


分享到:


相關文章: