色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

隨機梯度下降為什么比梯度下降快?

錢艷冰2年前18瀏覽0評論

先看下批量梯度下降和隨機梯度下降的概念:

批量梯度下降。迭代公式如下:

這有一個問題,之前說損失函數寫成

i從1到m這種寫法前面應不應該加1/m?也就是

按照之前的理論加1/m或者不加1/m都無所謂,因為你求它相對最小就夠了,但這里梯度下降想用梯度干什么?用它決定下降多少,如果不加1/m的話,是不是數據集越大,你的λ就得調得越小。因為數據集越大,肯定最后下降值的絕對就越大,即

中的

就越大,如果不加1/m的話,1萬條數據跟10萬條數據相比,肯定是10萬條數據絕對值更大一些,這時候還得根據不同數據的樣本集調小λ,很麻煩。所以在梯度下降的時候用的所謂損失函數都是前面加上1/m或者2/m。我們通俗的模擬下批量梯度下降的過程。假如你是計算機,每次更新W的時候,要怎么計算?除了我們人為的設置需要迭代多少次的次數k的循環之外?還有兩層循環,外層循環是假如有n個w,相當于n個維度,每個w都要更新一次,所以要循環n次。內層循環要循環幾次?實際上是m次。因為是m個樣本,比如更新w1的時候,即

這里面的i是變量,i代表著我們的每一條樣本,有多少個樣本,就要循環幾次,所以是m次。過程是首先把第一條數據X1拿出來,跟瞎蒙出來那組W(初始W)求出一個預測結果hθ(x)來,然后減去第一個真實的y,再乘以第一條數據X里面的第J個維度,因為要更新W1,乘的就是第一條數據X的第一個維度,實際上就是第一行第一列,再把第二條數據拿出來,與瞎蒙出來那組W,算出來hθ(x),減去第二個真實的y,然后再乘以第二條數據X里邊的第一個數,也就是第二行第一列?依次這樣操作,所有的數據全部都計算一遍,累加結果之后,最后乘1/m,就是要更新W1所計算的所有內容下圖為舉例說明批量梯度下降的過程:

所以批量梯度下降的特點是:每次求梯度的時候度需要做m次加和(假設有m個數據點)。優點是:在每次迭代時都保證嚴格按照損失函數負梯度方向下降缺點是:每次迭代運算量比較大,時間長。所以往往我們不去代全部的數據,而只拿出一條數據來。也就是:

通俗點就是隨機梯度下降的方式就是原來把所有的Y跟X一堆運算完了加一下求平均數,現在變成不求平均數了,隨便挑出一條來,相當于把這個直接干掉,這個過程叫隨機梯度下降。那么隨機梯度下降求出來的結果是負梯度嗎?其實不是,我們近似的把它看成負梯度,這樣會導致一個什么結果呢?會導致我們的每一次更新就不帶著求和號了。會有什么不好的影響呢?它每次下降的負梯度還準嗎?原來應該是平均值,而現在變成了一個單獨的數,那么下降的梯度就有可能不準,比如下面的例子:

按理說應該損失函數直著下來就完了,但是它這個東西上來第一步走歪了,第二步又走歪了,第三步又走歪了,第四步,甚至走反了,第五步走歪了,它迭代的次數會增加,但雖然次數增加了,你本來原來十次能達到最優解,現在可能需要一百次才能達到最優解。但是每一次的計算內部計算量卻少了很多,原來批量梯度下降內部要把10萬條數據算一遍,現在你只算一條了,等于總的整體的計算量還是減小了的這么一種優化,或者你管它叫做妥協,那么最后它可能永遠達不到真正的最優解的點,這會兒tolerance(即上一步梯度和下一步梯度中間差值小于多少就認為是收斂了這個閾值就是tolerance)出來就工作了,達到差不多就得了。所以隨機梯度下降才是我們真正在實踐中使用的梯度下降,它不是完美的按照函數的負梯度走,而是用一條數據計算出來的那個東西代替真實的負梯度讓它進行下降,雖然有可能走錯,但是肯定更多的步數是走對了的,最后相當于用量補充上它的方向的不完美。而它為什么能用量補充?因為這批量運算里面的每一步的計算代價很小,所以我無所謂你多走幾次,所以這個叫隨機梯度下降。所以隨機梯度下降是對批量提速下降的一種粗獷的近似,就是為了增加計算效率的。隨機梯度下降活躍在整個機器學習算法背后各種各樣的場景里面,很多應用場景基本都是用隨機梯度下降來進行處理的。因此隨機梯度下降更快一些。