一、提升模型性能的方法一般在四個方向:
1.Data Augmentation
2.Weight Initialization
3.Transfer learning + Fine-tune
4.Ensemble/Model Fusion
資料增強、遷移學習與微調這些之前已經學過了。關于權重的正則化限制。因為單純的不斷增強資料量,還是不夠的。因為提升過的資料是高度相關的。對抗過拟合應該主要關注模型的“熵容量”也就是模型允許存儲的資訊量。1.存儲量大,能利用更多的特征,取得更好的性能。2.存儲量小,我們這時要将存儲的特征主要集中在真正相關的特征上,并有更好的泛化性能。
此時需要正确的調整“熵容量”:a.選擇調整模型的參數數目,包括每層的規模、模型的層數。b.對權重進行正則化的限制,如L1或L2這種限制會使模型的權重偏向較小的值。c.資料提升+dropout都是在随機擾亂資料的相關性。在遷移學習中,權重的初始化是加載已經訓練好的權重的參數來作為此時的初始化權重。
模型的融合,這個基本上是有利無弊的,基本都能提高1%-2%的性能。
a.從送出結果的檔案中進行融合,如果幾個模型差異較大的話,最終的模型會得到一個較大的提升。
b.權重表決融合。即會更重視表現好的模型,需要賦予更大的權值。
c.對結果取平均:取平均的做法常常可以減少過拟合的現象。
二、訓練集、驗證集、測試集的劃分與作用
我個人的了解是:
訓練集:用來訓練模型的,主要是更新權重參數,來使模型在經過每個batch的訓練集之後,得到進一步優化,性能更好。
驗證集:一般而言驗證集是從訓練集中提取出來的,具有代表性的資料,來驗證訓練的模型的好壞。其主要作用,通過驗證的記過,進行超參數的更新,比如說使用降低學習速率,增加疊代次數等等,還可以觀察是否出現過拟合的現象。
測試集:是最後用來測試模型的好壞的。
總之:訓練集、驗證集、測試集都是互相獨立的,沒有交集。驗證集一般是從最開始的訓練集中劃分出來的。
三、關于batch_size的概念
Batch的選擇,首先決定的是下降的方向,如果資料集比較小,完全可以采用全資料集的形式。至少有兩個好處:1.由全資料集确定的方向能更好的代表樣本總體,進而準确的朝向極值所在的方向。2.由于不同的權重的梯度值差别較大,是以選擇一個全局的學習速率很困難。
在一定範圍内,一般來說Batch_size越大,其确定的下降方向越準,引起的訓練震蕩越小。此時,可以增加epochs的方法來提高準确率。