9、overfitting怎麼解決

overfitting就是過擬合, 其直觀的表現如下圖所示,隨着訓練過程的進行,模型複雜度增加,在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大——因爲訓練出來的網絡過擬合了訓練集, 對訓練集外的數據卻不work, 這稱之爲泛化(generalization)性能不好。泛化性能是訓練的效果評價中的首要目標,沒有良好的泛化,就等於南轅北轍, 一切都是無用功。

 

過擬合是泛化的反面,好比鄉下快活的劉姥姥進了大觀園會各種不適應,但受過良好教育的林黛玉進賈府就不會大驚小怪。實際訓練中, 降低過擬合的辦法一般如下:

正則化(Regularization)
L2正則化:目標函數中增加所有權重w參數的平方之和, 逼迫所有w儘可能趨向零但不爲零. 因爲過擬合的時候, 擬合函數需要顧忌每一個點, 最終形成的擬合函數波動很大, 在某些很小的區間裏, 函數值的變化很劇烈, 也就是某些w非常大. 爲此, L2正則化的加入就懲罰了權重變大的趨勢.
L1正則化:目標函數中增加所有權重w參數的絕對值之和, 逼迫更多w爲零(也就是變稀疏. L2因爲其導數也趨0, 奔向零的速度不如L1給力了). 大家對稀疏規則化趨之若鶩的一個關鍵原因在於它能實現特徵的自動選擇。一般來說,xi的大部分元素(也就是特徵)都是和最終的輸出yi沒有關係或者不提供任何信息的,在最小化目標函數的時候考慮xi這些額外的特徵,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的特徵權重反而會被考慮,從而干擾了對正確yi的預測。稀疏規則化算子的引入就是爲了完成特徵自動選擇的光榮使命,它會學習地去掉這些無用的特徵,也就是把這些特徵對應的權重置爲0。

隨機失活(dropout)
在訓練的運行的時候,讓神經元以超參數p的概率被激活(也就是1-p的概率被設置爲0), 每個w因此隨機參與, 使得任意w都不是不可或缺的, 效果類似於數量巨大的模型集成。

逐層歸一化(batch normalization)
這個方法給每層的輸出都做一次歸一化(網絡上相當於加了一個線性變換層), 使得下一層的輸入接近高斯分佈. 這個方法相當於下一層的w訓練時避免了其輸入以偏概全, 因而泛化效果非常好. 

提前終止(early stopping)
理論上可能的局部極小值數量隨參數的數量呈指數增長, 到達某個精確的最小值是不良泛化的一個來源. 實踐表明, 追求細粒度極小值具有較高的泛化誤差。這是直觀的,因爲我們通常會希望我們的誤差函數是平滑的, 精確的最小值處所見相應誤差曲面具有高度不規則性, 而我們的泛化要求減少精確度去獲得平滑最小值, 所以很多訓練方法都提出了提前終止策略. 典型的方法是根據交叉叉驗證提前終止: 若每次訓練前, 將訓練數據劃分爲若干份, 取一份爲測試集, 其他爲訓練集, 每次訓練完立即拿此次選中的測試集自測. 因爲每份都有一次機會當測試集, 所以此方法稱之爲交叉驗證. 交叉驗證的錯誤率最小時可以認爲泛化性能最好, 這時候訓練錯誤率雖然還在繼續下降, 但也得終止繼續訓練了.  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章