- 最近跑Unet網絡進行遙感圖像的分割;代碼跑通了,但是效果不理想,開始分析實驗epoch,調一些參數
- 神經網絡梯度與歸一化問題總結+highway network、ResNet的思考
1.樣本要隨機化,防止大數據淹沒小數據
3.激活函數要視樣本輸入選擇(多層神經網絡一般使用relu)
4.mini batch很重要,幾百是比較合適的(很大數據量的情況下)
5.學習速率(learning rate)很重要,比如一開始可以lr設置為0.01,然后運行到loss不怎么降的時候,學習速率除以10,接着訓練
6.權重初始化,可用高斯分布乘上一個很小的數,這個可以看:權值初始化
9.early stop,發現val_loss沒更新,就盡早停止
知乎討論:https://www.zhihu.com/question/41631631
-
loss曲線震盪分析
- update 2018-07-07-17:12:21
總結:
1)batch數太小,而類別又比較多的時候,可能會導致loss函數震盪而不收斂,尤其是在你的網絡比較復雜的時候。
2)隨着batchsize增大,處理相同的數據量的速度越快。
3)隨着batchsize增大,達到相同精度所需要的epoch數量越來越多。
4)由於上述兩種因素的矛盾, Batch_Size 增大到某個時候,達到時間上的最優。
5)過大的batchsize的結果是網絡很容易收斂到一些不好的局部最優點。同樣太小的batch也存在一些問題,比如訓練速度很慢,訓練不容易收斂等。
6)具體的batch size的選取和訓練集的樣本數目相關
三大CV的方法
Hold-Out Method
方法:將原始數據隨機分為兩組,一組做為訓練集,一組做為驗證集,利用訓練集訓練分類器,然后利用驗證集驗證模型,記錄最后的分類准確率為此Hold-OutMethod下分類器的性能指標.。Hold-OutMethod相對於K-fold Cross Validation 又稱Double cross-validation ,或相對K-CV稱 2-fold cross-validation(2-CV)
優點:好處的處理簡單,只需隨機把原始數據分為兩組即可
缺點:嚴格意義來說Hold-Out Method並不能算是CV,因為這種方法沒有達到交叉的思想,由於是隨機的將原始數據分組,所以最后驗證集分類准確率的高低與原始數據的分組有很大的關系,所以這種方法得到的結果其實並不具有說服性.(主要原因是 訓練集樣本數太少,通常不足以代表母體樣本的分布,導致 test 階段辨識率容易出現明顯落差。此外,2-CV 中一分為二的分子集方法的變異度大,往往無法達到「實驗過程必須可以被復制」的要求。)
K-fold Cross Validation(記為K-CV)
方法:作為1)的演進,將原始數據分成K組(一般是均分),將每個子集數據分別做一次驗證集,其余的K-1組子集數據作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類准確率的平均數作為此K-CV下分類器的性能指標.K一般大於等於2,實際操作時一般從3開始取,只有在原始數據集合數據量小的時候才會嘗試取2. 而K-CV 的實驗共需要建立 k 個models,並計算 k 次 test sets 的平均辨識率。在實作上,k 要夠大才能使各回合中的 訓練樣本數夠多,一般而言 k=10 (作為一個經驗參數)算是相當足夠了。
xv folds 交叉驗證
A 5-fold cross validation method
優點:K-CV可以有效的避免過學習以及欠學習狀態的發生,最后得到的結果也比較具有說服性.
缺點:K值選取上
Leave-One-Out Cross Validation(記為LOO-CV)
方法:如果設原始數據有N個樣本,那么LOO-CV就是N-CV,即每個樣本單獨作為驗證集,其余的N-1個樣本作為訓練集,所以LOO-CV會得到N個模型,用這N個模型最終的驗證集的分類准確率的平均數作為此下LOO-CV分類器的性能指標.
優點:相比於前面的K-CV,LOO-CV有兩個明顯的優點:a.每一回合中幾乎所有的樣本皆用於訓練模型,因此最接近原始樣本的分布,這樣評估所得的結果比較可靠。 b. 實驗過程中沒有隨機因素會影響實驗數據,確保實驗過程是可以被復制的.
缺點:計算成本高,因為需要建立的模型數量與原始數據樣本數量相同,當原始數據樣本數量相當多時,LOO-CV在實作上便有困難幾乎就是不顯示,除非每次訓練分類器得到模型的速度很快,或是可以用並行化計算減少計算所需的時間.
在模式識別與機器學習的相關研究中,經常會將 數據集分為 訓練集與測試集 這兩個子集,前者用以建立 模式,后者則用來評估該 模式對未知樣本進行預測時的精確度,正規的說法是 generalization ability(泛化能力)
數據集分割原則
交叉驗證在,原始數據集分割為訓練集與測試集,必須遵守兩個要點:
訓練集中樣本數量必須夠多,一般至少大於總樣本數的 50%。
兩組子集必須從完整集合中均勻取樣。
其中第 2 點特別重要,均勻取樣的目的是希望減少 訓練集/測試集 與完整集合之間的偏差(bias),但卻也不易做到。一般的作法是隨機取樣,當樣本數量足夠時,便可達到均勻取樣的效果。然而隨機也正是此作法的盲點,也是經常是可以在數據上做手腳的地方。舉例來說,當辨識率不理想時,便重新取樣一組訓練集 與測試集,直到測試集的辨識率滿意為止,但嚴格來說便算是作弊。