機器學習_學習筆記系列(54):隨機梯度下降(Stochastic Gradient Decent)
Jun 4, 2021
還記得我們很久之前有介紹梯度下降演算法,但是我們可以發現如果今天我們的資料量很大,每次梯度下降在更新權重的時候,都會花很多時間來計算。所以我們今天我們要來介紹另一個最佳化演算法「隨機梯度下降」。
在介紹隨機梯度下降前我們先回顧一下梯度下降演算法。當我們要解決回歸問題時,我們先假設我們的假設方程式為
而我們也知道我們的cost function為
然後我們將cost function微分
有了這些方程式後我們就可以用其改變權重
但是我們可以發現運用這種方式來計算梯度的時候,都要把所有的數據加總起來,所以當我們的資料量非常的大時候,就會造成我們梯度下降收斂的速度非常慢,所以就有人想出另一種快速優化的方法「隨機梯度下降」。
對於隨機梯度下降,其是從所有的資料裡面隨機抽一筆來更新權重
S代表被抽種的資料編號,X=[1,x,x²,x³,…,x^p]。對於隨機梯度下降這樣的優化方式雖然他每次更新權重的時候不太穩定,但是經過好幾次迭代之後其效果會跟和一般梯度下降很接近。
Example
現在我們以實際回歸的例子來看
接著我們比較兩者MSE隨迭代次數的變化
我們可以看到隨機梯度下降雖然優化的過程不太穩定,但是我們可以看到最後其還是有收斂到跟一般梯度下降差不多的值。所以隨機梯度下降在龐大資料量訓練深度學習模型的情況非常常用。
Python Sample Code:
Github: