通俗易懂講解梯度下降法,隨機梯度下降法

【通俗易懂講解梯度下降法,隨機梯度下降法】隨機梯度下降算法是什么?

通俗易懂講解梯度下降法,隨機梯度下降法


隨機梯度下降算法是基于梯度下降法中最原始的方法——批量梯度下降法(BGD)的缺點而演變出的改良 。在訓練過程中常見的損失函數為:批量梯度下降法(Batch Gradient Descent,簡稱BGD)的方法是先求偏導,再用每個θ各自的梯度負方向依次更新每個θ:它的效果如圖:可以看出是一種思路簡單、易于實現的算法,并且在較少迭代次數的情況下就可以得到全局最優解,但是每次迭代都要調用全部數據,如果樣本數量(上面式子中的m)較大,將會導致計算極其慢 。
基于這一缺點,隨機梯度下降法(Stochastic Gradient Descent,簡稱SGD)被提出 。它不再每次迭代都用上所有樣本,而是每次迭代僅僅對一個樣本進行更新,從而達到對于數量龐大的樣本只需使用其中的相對少量就把θ最優化的目的 。它的方法是在改寫損失函數之后,θ的更新是基于每個樣本對theta求偏導后所得梯度:相比BGD算法SGD算法速度大幅提升,幾十萬條樣本基本只需要用上萬或者只要上千條樣本就餓可以得到結果 。
但是SGD伴隨更多噪音、最優化方向準確度下降的問題 。效果如下圖,可以看出相比于BGD,SGD迭代次數顯著增加,并且并不是每一次迭代都是向著最優化方向 。同時,SGD算法在實現難度上不如BGD算法簡單 。雖然理論上BGD比SGD得到全局最優,但是在生產場景中,并不是每一個最優化問題中的目標函數都是單峰的,反而是sgd更容易跳出局部最優 。

    推薦閱讀