梯度下降法與SGD

梯度是一個矢量,有大小和方向。
梯度始終指向損失函數中增長最快的方向。梯度下降法算法會沿着負梯度的方向走一步,以便儘快降低損失。

梯度下降法

要使梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯
度)的反放向的規定步長距離點進行迭代搜索。如果相反地向梯度正方向迭代進行搜索,則會接近函
數的局部極大值點;這個過程則被稱爲梯度上升法。

梯度下降法算法用梯度乘以一個稱爲學習率(有時也稱爲步長)的標量,以確定下一個點的位置。

隨機梯度下降

[Why]因爲梯度下降法的代價函數計算需要遍歷所有樣本,而且是每次迭代都要遍歷,直至達到局部最優解,在樣本量龐大時就顯得收斂速度比較慢,計算量非常龐大。

[what]通過從我們的數據集中隨機選擇樣本,我們可以通過小得多的數據集估算出較大的平均值。 隨機梯度下降法(SGD)將這種想法運用到極致,它每次迭代只使用一個樣本(Batch大小爲 1)。如果進行足夠的迭代,SGD 也可以發揮作用,但過程會非常雜亂。“Stochastic(隨機)”這一術語表示構成各個Batch的那一個樣本都是隨機選擇的。https://developers.google.cn/machine-learning/


不同梯度下降算法的區別:

  • 梯度下降:要留意,在梯度下降中,對於的更新,所有的樣本都有貢獻,也就是參與調整.其計算得到的是一個標準梯度。因而理論上來說一次更新的幅度是比較大的。如果樣本不多的情況下,當然是這樣收斂的速度會更快啦~
  • 隨機梯度下降(SGD):可以看到多了隨機兩個字,隨機也就是說我用樣本中的一個例子來近似我所有的樣本,來調整,因而隨機梯度下降是會帶來一定的問題,因爲計算得到的並不是準確的一個梯度,容易陷入到局部最優解中。
  • 批量梯度下降(BGD):其實批量的梯度下降就是一種折中的方法,他用了一些小樣本來近似全部的,其本質就是我1個指不定不太準,那我用個30個50個樣本那比隨機的要準不少了吧,而且批量的話還是非常可以反映樣本的一個分佈情況的。

對於整個樣本做GD又稱爲批梯度下降(BGD,batch gradient descent)

 

批量梯度下降與SGD的算法流程

https://www.cnblogs.com/Sinte-Beuve/p/6164689.html

對於線性模型,如下。

  • h(x)是需要擬合的函數。
  • J(θ)是損失函數,這裏用均方誤差來衡量訓練集中的樣本對線性模式的擬合程度。
  • m爲訓練集中樣本的個數。
  • θ是我們最終需要通過梯度下降法來求得的參數。

            h(\theta)=\sum_{j=0}^n \theta_jx_j \\ J(\theta)=\frac1{2m}\sum_{i=0}^m(y^i-h_\theta(x^i))^2

接下來的梯度下降法就有兩種不同的迭代思路。

批量梯度下降(Batch gradient descent)

現在我們就要求出J(θ)取到極小值時的θT向量。之前已經說過了,沿着函數梯度的反方向下降就能最快的找到極小值。

1. 計算J(θ)關於θT的偏導數,也就得到了向量中每一個θ的梯度。

                                               \small \begin{align} \frac{\partial J(\theta)}{\partial\theta_j} & = -\frac1m\sum_{i=0}^m(y^i-h_\theta(x^i)) \frac{\partial}{\partial\theta_j}(y^i-h_\theta(x^i)) \\ & = -\frac1m\sum_{i=0}^m(y^i-h_\theta(x^i)) \frac{\partial}{\partial\theta_j}(\sum_{j=0}^n\theta_jx_j^i-y^i) \\ & = -\frac1m\sum_{i=0}^m(y^i-h_\theta(x^i))x^i_j \end{align}

2. 沿着梯度的反方向更新參數θ的值

                    \small \theta_j := \theta_j + \alpha\frac{\partial J(\theta)}{\partial\theta_j} :=\theta_j - \alpha\frac1m\sum_{i=0}^m(y^i-h_\theta(x^i))x^i_j

3. 迭代直到收斂。

可以看到,批量梯度下降是用了訓練集中的所有樣本。因此在數據量很大的時候,每次迭代都要遍歷訓練集一遍,開銷會很大,所以在數據量大的時候,可以採用隨機梯度下降法。

隨機梯度下降(Stochastic gradient descent)

和批量梯度有所不同的地方在於,每次迭代只選取一個樣本的數據,一旦到達最大的迭代次數或是滿足預期的精度,就停止

可以得出隨機梯度下降法的θ更新表達式:

          \small \theta_j:=\theta_j - \alpha\frac1m(y^i-h_\theta(x^i))x^i_j

然後迭代直到收斂:

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章