隨機梯度下降演算法

2021-07-25 06:24:30 字數 2136 閱讀 9004

bp神經網路是神經網路的基礎,其中可用隨機梯度下降演算法來加快更新權值和偏置,但是隨機梯度下降演算法總是忘記,下面來好好複習一下:

⼈們已經研究出很多梯度下降的變化形式,包括⼀些更接近真實模擬球體物理運動的變化形 式。這些模擬球體的變化形式有很多優點,但是也有⼀個主要的缺點:它最終必需去計算代價函式c的 ⼆階偏導,這代價可是⾮常⼤的。為了理解為什麼這種做法代價⾼,假設我們想求所有的⼆階偏導

如果我們有上百萬的變數vj,那我們必須要計算數萬億(即百萬次的平⽅) 級別的⼆階偏導4!這會造成很⼤的計算代價。不過也有⼀些避免這類問題的技巧,尋找梯度下 降演算法的替代品也是個很活躍的研究領域。但在這裡我們將主要⽤梯度下降演算法(包括變化形式)使神經⽹絡學習。

我們怎麼在神經⽹絡中⽤梯度下降演算法去學習呢?其思想就是利⽤梯度下降演算法去尋找能使得⽅程

的代價取得最⼩值的權重wk和偏置bl。為了清楚這是如何⼯作的,我們將⽤權重和 偏置代替變數vj。也就是說,現在「位置」變數有兩個分量組成:wk和bl,⽽梯度向量∇c則 有相應的分量∂c/∂wk和∂c/∂bl。⽤這些分量來寫梯度下降的更新規則,我們得到:

通過重複應⽤這⼀更新規則我們就能「讓球體滾下⼭」,並且有望能找到代價函式的最⼩值。 換句話說,這是⼀個能讓神經⽹絡學習的規則。 

應⽤梯度下降規則有很多挑戰。我們將在下⼀章深⼊討論。但是現在只提及⼀個問題。為了理解問題是什麼,我們先回顧(6)中的⼆次代價。注意這個代價函式有著這樣的形式即

有種叫做隨機梯度下降的演算法能夠加速學習。其思想就是通過隨機選取⼩量訓練輸⼊樣本來計算∇cx,進⽽估算梯度∇c。通過計算少量樣本的平均值我們可以快速得到⼀個對於實際梯 度∇c的很好的估算,這有助於加速梯度下降,進⽽加速學習過程。 更準確地說,隨機梯度下降通過隨機選取⼩量的m個訓練輸⼊來⼯作。我們將這些隨機的訓練輸⼊標記為x1,x2,...,xm,並把它們稱為⼀個⼩批量資料(mini-batch)。假設樣本數量 m⾜夠⼤,我們期望∇cxj 的平均值⼤致相等於整個∇cx的平均值,即:

這⾥的第⼆個求和符號是在整個訓練資料上進⾏的。交換兩邊我們得到

證實了我們可以通過僅僅計算隨機選取的⼩批量資料的梯度來估算整體的梯度。 

為了將其明確地和神經⽹絡的學習聯絡起來,假設wk和bl表⽰我們神經⽹絡中權重和偏置。 隨即梯度下降通過隨機地選取並訓練輸⼊的⼩批量資料來⼯作:

其中兩個求和符號是在當前⼩批量資料中的所有訓練樣本xj上進⾏的。然後我們再挑選另⼀隨機選定的⼩批量資料去訓練。直到我們⽤完了所有的訓練輸⼊,這被稱為完成了⼀個訓練迭代期(epoch)。然後我們就會開始⼀個新的訓練迭代期。 

另外值得提⼀下,對於改變代價函式⼤⼩的引數,和⽤於計算權重和偏置的⼩批量資料的更新規則,會有不同的約定。在⽅程(6)中,我們通過因⼦ 1/n來改變整個代價函式的⼤⼩。⼈們有時候忽略1/n,直接取單個訓練樣本的代價總和,⽽不是取平均值。這對我們不能提前知道訓練資料數量的情況下特別有效。例如,這可能發⽣在有更多的訓練資料是實時產⽣的情況下。同樣,⼩批量資料的更新規則(20)和(21)有時也會捨棄前⾯的 1/m。從概念上這會有⼀點區別,因 為它等價於改變了學習速率η的⼤⼩。但在對不同⼯作進⾏詳細對⽐時,需要對它警惕。 我們可以把隨機梯度下降想象成⼀次⺠意調查:在⼀個⼩批量資料上取樣⽐對⼀個完整資料集進⾏梯度下降分析要容易得多,正如進⾏⼀次⺠意調查⽐舉⾏⼀次全⺠選舉要更容易。例如,如果我們有⼀個規模為n = 60,000的訓練集,就像mnist,並選取⼩批量資料⼤⼩為m = 10, 這意味著在估算梯度過程中加速了6,000倍!當然,這個估算並不是完美的——存在統計波動 ——但是沒必要完美:我們實際關⼼的是在某個⽅向上移動來減少c,⽽這意味著我們不需要梯度的精確計算。在實踐中,隨機梯度下降是在神經⽹絡的學習中被⼴泛使⽤、⼗分有效的技術, 它也是⼤多數學習技術的基礎。

參考:: 

隨機梯度下降演算法

每次從從訓練樣本集上隨機抽取乙個小樣本集,求其 值和真實值誤差的平均值,作為目標函式,將引數沿著梯度的方向移動,從而使當前的目標函式減少得最多。小樣本集的個數為batch size,通常為2的冪次方,有利gpu加速 代價函式的總和為1m i 1m l x i y i dfrac sum ml x y...

梯度下降演算法 隨機梯度下降演算法scala實現

梯度下降和隨機梯度下降是機器學習中最常用的演算法之一。關於其具體的原理這裡不多做介紹,網路上可以很方便的找到。例如可以參考部落格 scala 實現如下 object sgd errorsum y row rowsum for col 0 until x 0 length loss 0.0 for r...

梯度下降 隨機梯度下降 批梯度下降

下面的h x 是要擬合的函式,j 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函式h 就出來了。其中m是訓練集的記錄條數,j是引數的個數。梯度下降法流程 1 先對 隨機賦值,可以是乙個全零的向量。2 改變 的值,使j 按梯度下降的方向減少。以上式為例 1 對於我們的...