1. 程式人生 > >梯度、梯度下降法、隨機梯度下降法

梯度、梯度下降法、隨機梯度下降法

一、梯度gradient

在標量場f中的一點處存在一個向量G,該向量方向為f在該點處變化率最大的方向,其模也等於這個最大變化率的數值,則向量G稱為標量場f的梯度。

向量微積分中,標量場的梯度是一個向量場

標量場中某一點上的梯度指向標量場增長最快的方向,梯度的長度是這個最大的變化率。

更嚴格的說,從歐氏空間Rn到R的函式的梯度是在Rn某一點最佳的線性近似。在這個意義上,梯度是雅戈比矩陣的一個特殊情況。

在單變數的實值函式的情況,梯度只是導數,或者,對於一個線性函式,也就是線的斜率

梯度一詞有時用於斜度,也就是一個曲面沿著給定方向的傾斜程度。

一個標量函式\varphi的梯度記為:\nabla \varphi 或  \rm grad \varphi

, 其中\nablanabla)表示向量微分運算元

二、梯度下降法

梯度下降法,基於這樣的觀察:

如果實值函式 F(\mathbf{x}) 在點 \mathbf{a} 處可微且有定義,那麼函式 F(\mathbf{x}) 在 \mathbf{a} 點沿著梯度相反的方向 -\nabla F(\mathbf{a})下降最快。因而,如果

\mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})

對於 \gamma>0 為一個夠小數值時成立,那麼 F(\mathbf{a})\geq F(\mathbf{b}) 。

\mathbf{a} 是向量。

考慮到這一點,我們可以從函式 F 的區域性極小值的初始估計 \mathbf{x}_0 出發,並考慮如下序列 \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots 使得

\mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

因此可得到

F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

如果順利的話序列 (\mathbf{x}_n) 收斂到期望的極值。注意每次迭代步長 \gamma 可以改變。

梯度下降法的缺點是:

  • 靠近極小值時速度減慢。
  • 直線搜尋可能會產生一些問題。
  • 可能會'之字型'地下降。

三、隨機梯度下降法stochastic gradient descent,也叫增量梯度下降

由於梯度下降法收斂速度慢,而隨機梯度下降法會快很多

–根據某個單獨樣例的誤差增量計算權值更新,得到近似的梯度下降搜尋(隨機取一個樣例)

–可以看作為每個單獨的訓練樣例定義不同的誤差函式

–在迭代所有訓練樣例時,這些權值更新的序列給出了對於原來誤差函式的梯度下降的一個合理近似

–通過使下降速率的值足夠小,可以使隨機梯度下降以任意程度接近於真實梯度下降

•標準梯度下降和隨機梯度下降之間的關鍵區別

–標準梯度下降是在權值更新前對所有樣例彙總誤差,而隨機梯度下降的權值是通過考查某個訓練樣例來更新的

–在標準梯度下降中,權值更新的每一步對多個樣例求和,需要更多的計算

–標準梯度下降,由於使用真正的梯度,標準梯度下降對於每一次權值更新經常使用比隨機梯度下降大的步長

–如果標準誤差曲面有多個區域性極小值,隨機梯度下降有時可能避免陷入這些區域性極小值中