基於動量(momentum)的梯度下降法


批梯度下降:

    1)采用所有數據來梯度下降,在樣本量很大的時,學習速度較慢,因為處理完全部數據,我們僅執行了一次參數的更新。

    2)在學習過程中,我們會陷入損失函數的局部最小值,而永遠無法達到神經網絡獲得最佳結果的全局最優值。這是因為我們計算的梯度大致相同。

       所以,我們實際上需要的是一些嘈雜的漸變。方向值的這種小偏差將使梯度跳出損失函數的局部最小值,並朝着全局最小值繼續更新。

    3)鞍點:損失函數存在梯度為 $0$ 的區域,那么當參數位於這些區域時,沒有辦法再繼續更新了。

隨機梯度下降:

    1)由於在處理每個數據實例之后執行更新,因此隨機梯度下降可能會導致學習更快。

    2)在批次梯度下降中,我們對梯度求平均以得到一個最終梯度,在隨機梯度下降中,我們使用每個單個梯度來更新權重。這些梯度可能非常嘈雜,

       並且其方向和值存在很大差異。換句話說,在這種情況下,我們會有很多噪音。但這其實也是它的一個優點,有利於避免訓練過程中的局部最小值。

    3)隨機梯度下降無法解決損失函數的整體最小值。由於嘈雜,將很難找到並保持在全局最小值。

小批梯度下降:

    1)就計算效率而言,此技術介於之前介紹的兩種技術之間。

    2)朝着全局最小值收斂更穩定,因為我們計算了小批量 $m$ 個樣本的平均梯度,從而減少了噪聲。

    3)與隨機梯度下降相比,我們執行權重更新的頻率更高,因此可以更快地學習。

    4)小批量梯度下降中引入了一個新的超參數 $m$,稱為批次大小。已經表明,學習率之后的批次大小是神經網絡整體性能的第二重要的超參數。因此,

       需要花一些時間並嘗試許多不同的批次大小,直到找到與其他參數(例如學習率)最匹配的最終批次大小。

閱讀下面內容之前,可先去閱讀指數加權移動平均

     

紅色表示 SGD 的收斂路徑,棕色表示批梯度下降的收斂路徑。普通的 GD 算法就是計算出每一時刻最陡的下降趨勢(梯度),SGD 在隨機挑選的某一分量的

梯度方向進行收斂。從圖中可以看出,損失函數從某一點開始的梯度下降過程是及其曲折的。並不是直接走向中心點,而是需要浪費很多時間折來折去,這

樣的速度就會變慢,有沒有辦法解決這個問題呢?

可以使用動量梯度下降法來解決這個問題,參數更新公式為:

$$v_{dW} = \beta \cdot v_{dW} + (1 - \beta) \cdot dW \\
v_{db} = \beta \cdot v_{db} + (1 - \beta) \cdot db \\
\Rightarrow \left\{\begin{matrix}
W = W - \alpha \cdot v_{dW} \\ 
b = b - \alpha \cdot v_{db}
\end{matrix}\right.$$

在這個公式中,並不是直接減去 $\alpha \cdot dW$ 和 $\alpha \cdot db$,而是計算出了一個 $v_{dW}$ 和 $v_{db}$。

使用這個公式,可以將之前的 $dW$ 和 $db$ 都聯系起來,不再是每一次梯度都是獨立的情況。其中 $\beta$ 是可以自行設置的超參數,一般情況下默認為 $0.9$,

也可以設置為其他數值。$\beta$ 代表了現在的 $v_{dW}$ 和 $v_{db}$ 與之前的 $\frac{1}{1 - \beta}$ 個 $v_{dW}$ 和 $v_{db}$ 有關。

 


免責聲明!

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



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