為什麼隨機梯度下降方法能夠收斂?

時間 2021-05-05 11:57:57

1樓:

結論:SGD能收斂的根本原因是每次迭代的時候步長會縮減。記住,SGD的學習率/步長是不斷變小的,和BGD不同。

在梯度 滿足利普希茨條件,並且 滿足 強凸的前提下:

1、理論上,SGD如果步長不變的話,收斂率和BGD一樣都是線性的,即 ,但是會收斂到乙個極值點的鄰域或者說區間:

其中, 是極小值, 是固定步長(fixed stepsize), 是利普希茨常數, 是梯度方差的上限, 是強凸係數。最終收斂到 。由於 可以取0,所以說運氣好的情況下是會出現剛好收斂到0或者乙個比0隻大一點的數情況的,但是多數時候做不到。

2、收斂不到0那怎麼辦?答案是SGD不採用固定步長,而是縮減步長(diminishing stepsize)。即

、 和 都是固定的值,當你的 趨向於0的時候, 也就趨向於0了。步長的縮減規律可以是:

其中 和 是兩個選定的正數,當k越來越大的時候, 就越來越小了。縮減步長的代價就是「拉慢」了自己的步伐,所以收斂率是次線性的,即 。

2樓:Vintage

先占個坑,正好最近讀了不少SGD的theory, 等把手上的project寫了就來寫乙個完整的。關於SGD在convex/strongly convex 下收斂的結論隨處可見,就不贅述了。 重點描述一下比較general的結論。

證明SGD對於一般的loss function收斂(不是convex/strongly convex)常用的工具是構造乙個 non-negative super-martingale, 然後由martingale convergence theorem 證明這個sup-mtg 是almost surely converge的。進一步,依賴於這個sup-mtg的構造, 可以得到 SGD converges in L2。這個結論只告訴我們 SGD 是收斂的,但是不能說是收斂到minimum 還是saddle point還是別的什麼。

這個構造sup-mtg的定理叫做 Robbins-Siegmund Theorem。blahblahblahblah

剩下的過兩天寫...

3樓:曹海

其實隨機梯度下降是HMC(哈密爾頓麼特卡羅取樣)的一種近似,當迭代步長足夠短、迭代次數無窮多時,引數就會逼近極限分布,這個極限分布的概率密度和損失函式有關,引數大概率分布在損失最小的點附近

4樓:Fain

這裡對各種下降演算法做了乙個總結:幾種梯度演算法的總結

其實,現在的演算法中的SGD都是Mini-batch Gradient Descent,而不是您所說的只用乙個資料樣本。在每輪迭代中僅僅計算乙個mini-batch的梯度,不僅計算效率高,而且收斂較為穩定。該方法是目前深度學訓練中的主流方法。

如果只用乙個樣本的話,會很容易收斂到區域性最優,並且容易被困在鞍點,而達不到收斂的要求。其實絕對的收斂是很難的,SGD最後也只是在無限的逼近最優解,而且越靠近最優解,更新越小。

5樓:何志

說乙個我自己的直觀理解。如果我們乙個樣本都不用,就隨機選乙個梯度優化,那麼其實誤差變化的期望值直覺上應該是0。如果我們把樣本看成兩部分,一部分是用來計算梯度的,另一部分先放著不管。

那麼,對於用於計算梯度的樣本,它的誤差是降低的。而對於先放著的那部分樣本,就相當於隨機找了個梯度,誤差變化的期望值是0。1個降低,1個是0,所以總體上誤差降低的概率是大於50%的。

如果每一輪迭代,即使只保證1個樣本的誤差下降,總體誤差降低的概率也能夠大於50%,迭代次數足夠多之後,那麼最終就可以有接近100%的概率去降低總體誤差。

當然,也可以從個體的角度去理解。如果隨機選擇乙個梯度做優化方向,那麼對於單個樣本誤差的變化的期望值應該是0。如果該樣本被抽中用於計算梯度,那麼它的誤差就可以降低。

假設代次數為n,然後某個樣本被抽中了m次,在這m次迭代裡面,隨機梯度下降可以使得這個樣本的誤差降低。而剩下的n–m次迭代中,只要n足夠大,那麼一定可以讓誤差的變化接近0。所以總體上就可以讓這個樣本的誤差降低了。

同樣道理,對於其它樣本也是一樣的。所以從概率上來說,每個樣本都可以降低誤差,那麼就可以降低總體誤差

另外,針對小批量的情況。還可以這樣解釋。小批量隨機梯度下降某種意義上來說就是(全批量)梯度下降。

因為我們現在中能夠獲得的樣本都是有限的。所以說,我們用來優化的樣本永遠都只能是「總體」的一部分。小批量與全批量是相對的,假設你有1000個樣本,你一次拿200個樣本去訓練,那麼200個樣本相對於1000個樣本就是小批量。

但是假設今天你只有200個樣本,那麼你拿200個樣本訓練就是(全批量)梯度下降。

6樓:YJango

03:44 - 06:10是梯度下降的講解部分。

07:57 - 08:46解釋了,隨機梯度下降 (SGD) 不僅可節省計算,還可避免陷入區域性極值

仔細觀察引數根據不同樣本的梯度的變化。9分鐘入門深度學習

7樓:李文哲

其實也可以這麼理解, 但前提是你已經接受了這個假定: (batch)梯度下降是收斂的,下面來看看(batch)梯度下降和所謂的SGD有什麼關聯。

假設我們有一批訓練資料 , 而這些訓練資料是從乙個未知的真實的分布產生出來的 ()。 假設模型的引數為

在整個優化過程裡,準確地講,我們需要去優化的是Expected loss, 也就是從產生出來的所有的樣本。

8樓:li Eta

9樓:逍遙遊

在模型的訓練過程之中,我們的理想目標是獲取全域性最優點,但是如果代價函式是非凸的,那麼,我們所能獲取的就只能是區域性最優。因為不知道你的代價函式是什麼,所以,不確定能否收斂到全域性最優,值得指出的,大部分情況下,代價函式都是非凸的,只有區域性最優值。

那麼,我們接下來聊一聊如何收斂到區域性最優。模型的訓練本質上是模型引數值的確定。在區域性最優的時候,引數的表現是基本穩定下來,不再發生任何變化。

如果你在訓練模型的過程之中進行引數視覺化的話,你會發現引數要經過很多輪迭代才能穩定下來,這意味著如果使用的訓練資料比較少的話,是有可能達不到區域性最優值的,但是它會一直在靠近。那麼,問題來了,既然使用的資料少(隨機梯度下降法就用的資料少)可能無法找到區域性最優值,為什麼還要使用它呢?因為在很大概率上,它確實是能夠靠近的,又不用那麼大的計算量,所以就被廣泛使用了。

10樓:

批梯度下降使用所有點的殘差平方和(記殘差平方和的平均數為J1),隨機梯度下降使用某點的殘差平方(記為J2)。

理論上,訓練集的所有點都在擬合函式hθ(x)附近呈高斯分布。那可以認為J2-J1的值呈高斯分布~N(0,σ^2),或者說J2在J1附近高斯分布,也就是差不多的意思。

既然關於θi,大家的值都差不多那還不如每次只挑1個來算一下J(θ),反正就算個方向嘛,方向不准沒關係,多走幾步嘛,不走反就好了,也能提到對擬合值準確度估計的作用。

這一隨機,省下了m倍的計算量,步子只是多邁了一點點,非常划得來。

11樓:xiao ma

sgd為什麼work看上面期望收斂證明.順送感性筆記。

首先sgd vs batch

sgd的特點:noise 和避免重複的pattern反覆出現.

減少重複pattern的好處:避免重複計算,收斂速度快。

而且,可以觀測到模型的變化。

batch的好處是:

1.理解簡單,計算簡單

2.有些learning必須batch,比如共軛梯度

3.learn rate等更好確定.

4.方便二階優化

sgd的壞處,有時候模型到接近區域性最優時候波動大,

一般可以通過通過adaptive learn rate(r/t,r是初始lr,t是已出現pattern數量)來確定,

也可以使用minibatch來增加乙個batch中pattern的數量,通過adaptive batch size,從小到大.

在實際系統中,由於sgd除了穩定性外,還反覆更新引數,網路占用大,所以用minibatch也可以減小網路傳輸.

所以在實際系統中,可以固定minibatch size而採用adaptive learn rate,也可以採用固定learn rate,採用adaptive batch size同時小心的adapt learn rate或者固定.

隨機梯度下降sgd如何判斷收斂?

li Eta 1.SGD如何判斷收斂 判斷收斂一般是看梯度的2 norm是不是足夠小,對於SGD也就是所有樣本的梯度和的2 norm。顯然,在實行SGD的時候,不可能每一步都檢視所有梯度的值 遍歷所有樣本計算量太大 所以,往往是每隔一段時間檢視一次梯度和的2 norm,判斷是否滿足精度要求。2.樣本...

隨機梯度下降是座標下降的一種?

Garden Fai 單純的梯度下降演算法是收斂於部分最優解的,假如要求完成大局最優解的話可以考慮加入退火演算法或許遺傳演算法之類的思維,簡單說就是在查詢過程中不光有根據梯度下降的方向,一起也融入少數的逆向查詢,終究設定乙個收斂域即可。函式的梯度是指它在這一點處增加最快的方向,明顯負梯度方向就是下降...

k means為什麼不用梯度下降迭代

朱珂銳 有其他和k means解決同樣問題的演算法在使用梯度下降,但是k means作為同類問題使用EM解法的簡化版本,它本身就是一種更好的選擇。1.NMF Nonnegative Matrix Factorization 非負矩陣分解的一種場景是,把乙個非負矩陣分解為乙個行歸一矩陣和另乙個非負矩陣...