梯度下降法(BGD & SGD & Mini-batch SGD)


 

梯度下降法(Gradient Descent)

優化思想:用當前位置的負梯度方向作為搜索方向,亦即為當前位置下降最快的方向,也稱“最速下降法”。越接近目標值時,步長越小,下降越慢。

如下圖所示,梯度下降不一定能找到全局最優解,可能尋找到的是局部最優解。(當損失函數是凸函數時,梯度下降得到的解一定是全局最優解,因為凸函數的極小值即為最小值)

梯度下降法

批量梯度下降法(Batch Gradient Descent,BGD):在更新參數時,BGD根據batch中的所有樣本對參數進行更新。

θ為參數,x為每個樣本的n個特征值
為了簡化表示,增加特征x_0=1
損失函數J,m為一個batch中的樣本數
參數更新,α為步長
上式展開即為,其中α和1/m均為常數,可用一個常數表示

隨機梯度下降法(Stochastic Gradient Descent,SGD):和BGD的原理類似,區別在於每次隨機選取一個樣本j求梯度。

對於訓練速度來說,SGD每次僅僅采用一個樣本來迭代,訓練速度很快,而BGD在樣本量很大的時候,訓練速度不能讓人滿意。

對於准確度來說,SGD僅僅用一個樣本決定梯度方向,導致解很有可能不是最優。

對於收斂速度來說,由於SGD一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到局部最優解。

SGD

小批量梯度下降法(Mini-batch Gradient Desent,也稱Mini-batch SGD):BGD和SGD二者的折中法,對於m個樣本,選取x個子樣本進行迭代,且1<x<m。

(1)選擇n個訓練樣本(n<m,m為總訓練集樣本數)(即batchsize = n,樣本總數為m,隨機的思想在於每個epoch之前,隨機打亂樣本順序,順序選取n個樣本作為batch)

(2)在這n個樣本中進行n次迭代,每次使用1個樣本

(3)對n次迭代得出的n個gradient進行加權平均再並求和,作為這一次mini-batch下降梯度

(4)不斷在訓練集中重復以上步驟,直到收斂。


免責聲明!

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



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