談談深度學習中的 Batch Size

2021-08-21 22:00:40 字數 1241 閱讀 9004

batch_size(批尺寸)是機器學習中乙個重要引數,涉及諸多矛盾,下面逐一展開。

batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 ( full batch learning )的形式,這樣做至少有 2 個好處:其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。其二,由於不同權重的梯度值差別巨大,因此選取乙個全域性的學習率很困難。 full batch learning 可以使用rprop只基於梯度符號並且針對性單獨更新各權值。

對於更大的資料集,以上 2 個好處又變成了 2 個壞處:其一,隨著資料集的海量增長和記憶體限制,一次性載入所有的資料進來變得越來越不可行。其二,以 rprop 的方式迭代,會由於各個 batch 之間的取樣差異性,各次梯度修正值相互抵消,無法修正。這才有了後來rmsprop的妥協方案。

當然可以,這就是批梯度下降法(mini-batches learning)。因為如果資料集足夠充分,那麼用一半(甚至少得多)的資料訓練算出來的梯度與用全部資料訓練出來的梯度是幾乎一樣的。

這裡跑乙個 lenet 在 mnist 資料集上的效果。mnist 是乙個手寫體標準庫,我使用的是theano框架。這是乙個 python 的深度學習庫。安裝方便(幾行命令而已),除錯簡單(自帶 profile),gpu / cpu 通吃,官方教程相當完備,支援模組十分豐富(除了 cnns,更是支援 rbm / dbn / lstm / rbm-rnn / sda / mlps)。在其上層有 keras 封裝,支援 gru / jzs1, jzs2, jzs3 等較新結構,支援 adagrad / adadelta / rmsprop / adam 等優化演算法。如圖所示

執行結果如上圖所示,其中絕對時間做了標么化處理。執行結果與上文分析相印證:

歡迎一起討論。

談談深度學習中的 Batch Size

batch size 批尺寸 是機器學習中乙個重要引數,涉及諸多矛盾,下面逐一展開。batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 full batch learning 的形式,這樣做至少有 2 個好處 其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準...

談談深度學習中的 Batch Size

batch size 批尺寸 是機器學習中乙個重要引數,涉及諸多矛盾,下面逐一展開。batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 full batch learning 的形式,這樣做至少有 2 個好處 其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準...

談談深度學習中的 Batch Size

batch size 批尺寸 是機器學習中乙個重要引數,涉及諸多矛盾,下面逐一展開。batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 full batch learning 的形式,這樣做至少有 2 個好處 其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準...