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 等優化演算法。如圖所示:
執行結果如上圖所示,其中絕對時間做了標么化處理。執行結果與上文分析相印證:
歡迎一起討論。
本文**感謝原作者的付出和分享。
神經網路的學習演算法
1.有監督學習 網路的輸出和期望的輸出 即監督訊號 進行比較,然後根據兩者之間的差異調整網路的權重,最終使差異變小。2.無監督學習 輸入模式進入網路後,網路按照預先設定的規則 如競爭規則 自動調整權重,使網路具有模式分類等功能。3.再勵學習 介於上述兩者之間的一種學習方法。1.hebb學習規則 如果...
神經網路演算法
神經網路其實就是按照一定規則連線起來的多個神經元。上圖展示了乙個全連線 full connected,fc 神經網路,通過觀察上面的圖,我們可以發現它的規則包括 1.神經元按照層來布局。最左邊的層叫做輸入層,負責接收輸入資料 最右邊的層叫輸出層,我們可以從這層獲取神經網路輸出資料。輸入層和輸出層之間...
MATLAB BP 神經網路中的MIV演算法學習
clear close all clc 輸入輸出資料 data load data.txt p data 1 end,1 end 1 輸入資料 t data 1 end,end 輸出資料 pn,minp,maxp,tn,mint,maxt premnmx p,t 變數篩選miv演算法初步實現 p p...