零基礎 神經網路優化之mini batch

2022-02-05 21:07:57 字數 1510 閱讀 2984

一、前言

回顧一下前面講過的兩種解決過擬合的方法:

1)l0、l1、l2:在向前傳播、反向傳播後面加個小尾巴

2)dropout:訓練時隨機「刪除」一部分神經元

本篇要介紹的優化方法叫mini-batch,它主要解決的問題是:實際應用時的訓練資料往往都太大了,一次載入到電腦裡可能記憶體不夠,其次執行速度也很慢。那自然就想到說,不如把訓練資料分割成好幾份,一次學習乙份不就行了嗎?前輩們試了試發現不僅解決了記憶體不足的問題,而且網路「收斂」的速度更快了。由於mini-batch這麼棒棒,自然是神經網路中非常重要的乙個技術,但實際實現時你會發現「真的太簡單了」。

二、batch、mini-batch、隨機梯度下降

這裡先解釋幾個名詞,可以幫助大家更好的理解mini-batch。

1)之前我們都是一次將所有輸入到網路中學習,這種做法就叫batch梯度下降

2)與batch對應的另一種極端方法是每次就只輸入一張進行學習,我們叫隨機梯度下降

3)介於batch梯度下降和隨機梯度下降之間的就是我們現在要整的,叫mini-batch梯度下降

三、mini-batch大小、洗牌

前面說,mini-batch是將待訓練資料分割成若干份,一次學習乙份。那每乙份具體包含多少個合適呢?實際上是沒有什麼特定標準的,但這個數值又切實影響著神經網路的訓練效果,一般來說就是建議「設定為2的若干次方,如64、128、256、1024等等」。你可以先隨便設定乙個數看看效果,效果一般再調調。

「洗牌」是mini-batch的乙個附加選項,因為我們是將訓練資料分割成若干份的,分割前將的順序打亂就是所謂的「洗牌」了,這樣每一次mini-batch學習的都不一樣為網路中增加了一些隨機的因素。具體原理上不知道有啥特別的,但實踐中確實優化了網路。

四、mini-batch實現與對比

無mini-batch:

不帶洗牌的mini-batch:

帶洗牌的mini-batch:

可以看到,使用mini-batch後網路可以迅速收斂。使用了mini-batch的網路僅用了400次就達到了普通網路2000次的訓練效果。由於求解的問題不算很難,所以使用了洗牌的mini-batch與普通的mini-batch似乎沒啥差別,不過還是能看出來效果還是好了一點的(不過會使用更長的時間來訓練)。

零基礎 神經網路優化之動量梯度下降

一 序言 動量梯度下降也是一種神經網路的優化方法,我們知道在梯度下降的過程中,雖然損失的整體趨勢是越來越接近0,但過程往往是非常曲折的,如下圖所示 特別是在使用mini batch後,由於單次參與訓練的少了,這種 曲折 被放大了好幾倍。前面我們介紹過l2和dropout,它們要解決的也是 曲折 的問...

零基礎 神經網路優化之dropout和梯度校驗

一 序言 dropout和l1 l2一樣是一種解決過擬合的方法,梯度檢驗則是一種檢驗 反向傳播 計算是否準確的方法,這裡合併簡單講述,並在文末提供完整示例 中還包含了之前l2的示例,全都是在 深層神經網路解析 這篇基礎之上修改的。二 dropout 簡單來說dropout就是在每次訓練時 隨機 失效...

零基礎入門深度學習 5 迴圈神經網路

在前面的文章系列文章中,我們介紹了全連線神經網路和卷積神經網路,以及它們的訓練和使用。他們都只能單獨的取處理乙個個的輸入,前乙個輸入和後乙個輸入是完全沒有關係的。但是,某些任務需要能夠更好的處理序列的資訊,即前面的輸入和後面的輸入是有關係的。不過讀者不用擔心,本文將一如既往地對複雜的東西剝繭抽絲,幫...