GD(梯度下降)和SGD(隨機梯度下降)

相同點

在GD和SGD中,都會在每次迭代中更新模型的參數,使得代價函數變小。

不同點

GD

在GD中,每次迭代都要用到全部訓練數據。
假設線性模型

Paste_Image.png

θ是參數

代價函數 :

Paste_Image.png

那么每次GD的更新算法為:

Paste_Image.png

由此算法可知,在對代價函數求偏導時,是需要用到全部的訓練數據的。

SGD

在SGD中,每次迭代可以只用一個訓練數據來更新參數。
回到GD的更新算法,假設此時我們此時訓練數據就只有一條(x,y),

Paste_Image.png

所以此時的更新參數的算法變為:

Paste_Image.png

此時更新的算法,只用到了一個樣本。
其實具象的理解下,就是來了一條訓練數據,算下此時根據模型算出的值和實際值的差距,如果差距大,那么參數更新的幅度大,反之則小。

總結

當訓練數據過大時,用GD可能造成內存不夠用,那么就可以用SGD了,SGD其實可以算作是一種online-learning。另外SGD收斂會比GD快,但是對于代價函數求最小值還是GD做的比較好,不過SGD也夠用了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容