您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關深度學習中的batch大小對學習效果有何影響,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
談談深度學習中的Batch_Size
Batch_Size(批尺寸)是機器學習中一個重要參數,涉及諸多矛盾,下面逐一展開。
首先,為什么需要有 Batch_Size 這個參數?
Batch 的選擇,首先決定的是下降的方向。如果數據集比較小,完全可以采用全數據集 ( Full Batch Learning )的形式,這樣做至少有 2 個好處:其一,由全數據集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。其二,由于不同權重的梯度值差別巨大,因此選取一個全局的學習率很困難。 Full Batch Learning 可以使用Rprop 只基于梯度符號并且針對性單獨更新各權值。
對于更大的數據集,以上 2 個好處又變成了 2 個壞處:其一,隨著數據集的海量增長和內存限制,一次性載入所有的數據進來變得越來越不可行。其二,以 Rprop 的方式迭代,會由于各個 Batch 之間的采樣差異性,各次梯度修正值相互抵消,無法修正。這才有了后來 RMSProp 的妥協方案。
既然 Full Batch Learning 并不適用大數據集,那么走向另一個極端怎么樣?
所謂另一個極端,就是每次只訓練一個樣本,即 Batch_Size = 1。這就是在線學習(Online Learning)。線性神經元在均方誤差代價函數的錯誤面是一個拋物面,橫截面是橢圓。對于多層神經元、非線性網絡,在局部依然近似是拋物面。使用在線學習,每次修正方向以各自樣本的梯度方向修正,橫沖直撞各自為政,難以達到收斂。
可不可以選擇一個適中的 Batch_Size 值呢?
當然可以,這就是批梯度下降法(Mini-batches Learning)。因為如果數據集足夠充分,那么用一半(甚至少得多)的數據訓練算出來的梯度與用全部數據訓練出來的梯度是幾乎一樣的。
在合理范圍內,增大 Batch_Size 有何好處?
盲目增大 Batch_Size 有何壞處?
調節 Batch_Size 對訓練效果影響到底如何?
這里跑一個 LeNet 在 MNIST 數據集上的效果。MNIST 是一個手寫體標準庫,我使用的是 Theano 框架。這是一個 Python 的深度學習庫。安裝方便(幾行命令而已),調試簡單(自帶 Profile),GPU / CPU 通吃,官方教程相當完備,支持模塊十分豐富Profile),GPU / CPU 通吃,官方教程相當完備,支持模塊十分豐富(除了 CNNs,更是支持 RBM / DBN / LSTM / RBM-RNN / SdA / MLPs)。在其上層有 Keras 封裝,支持 GRU / JZS1, JZS2, JZS3 等較新結構,支持 Adagrad / Adadelta / RMSprop / Adam 等優化算法。
運行結果如上圖所示,其中絕對時間做了標幺化處理。運行結果與上文分析相印證:
以上就是深度學習中的batch大小對學習效果有何影響,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。