batch_size(批尺寸)是機器學習中乙個重要引數,涉及諸多矛盾,下面逐一展開。
batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 ( full batch learning )的形式,這樣做至少有 2 個好處:其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。其二,由於不同權重的梯度值差別巨大,因此選取乙個全域性的學習率很困難。 full batch learning 可以使用rprop只基於梯度符號並且針對性單獨更新各權值。
對於更大的資料集,以上 2 個好處又變成了 2 個壞處:其一,隨著資料集的海量增長和記憶體限制,一次性載入所有的資料進來變得越來越不可行。其二,以 rprop 的方式迭代,會由於各個 batch 之間的取樣差異性,各次梯度修正值相互抵消,無法修正。這才有了後來rmsprop的妥協方案。
解釋:彈性反向傳播(rprop)和均方根反向傳播(rmsprop)
首先為各權重變化賦乙個初始值,設定權重變化加速因子與減速因子。
在網路前饋迭代中當連續誤差梯度符號不變時,採用加速策略,加快訓練速度;當連續誤差梯度符號變化時,採用減速策略,以期穩定收斂。
網路結合當前誤差梯度符號與變化步長實現bp,同時,為了避免網路學習發生振盪或下溢,演算法要求設定權重變化的上下限。
不同權值引數的梯度的數量級可能相差很大,因此很難找到乙個全域性的學習步長。
靠引數梯度的符號,動態的調節學習步長
適用於full-batch learning,不適用於mini-batch learning
缺點:不能應用於mini-batch learning中。
原因:
改進版,rmsprop演算法:
rmsprop演算法不再孤立地更新學習步長,而是聯絡之前的每一次梯度變化情況,具體如下。
rmsprop演算法給每乙個權值乙個變數meansquare(w,t)用來記錄第t次更新步長時前t次的梯度平方的平均值。
然後再用第t次的梯度除上前t次的梯度的平方的平均值,得到學習步長的更新比例。
根據此比例去得到新的學習步長。如果當前得到的梯度為負,那學習步長就會減小一點點;如果當前得到的梯度為正,那學習步長就會增大一點點。
這樣看來,rmsprop演算法步長的更新更加緩和。
這些演算法並不能完全解決區域性最小值問題,只是使得引數收斂的速度更快。針對是否能收斂到全域性最優解,還與模型的初始化有關。
為了得到所需的全域性優化演算法。兩種流行的全域性優化演算法是粒子群優化演算法(pso)和遺傳演算法(ga)。
當然可以,這就是批梯度下降法(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 個好處 其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準...