1、過拟合和欠拟合
無論在機器學習還是深度學習模組化當中都可能會遇到兩種最常見結果,一種叫過拟合(over-fitting )另外一種叫欠拟合(under-fitting)。
首先談談什麼是過拟合呢?什麼又是欠拟合呢?網上很直接的圖檔了解如下:

所謂過拟合(over-fitting)
其實就是所建的機器學習模型或者是深度學習模型在訓練樣本中表現得過于優越,導緻在驗證資料集以及測試資料集中表現不佳。打個比喻就是當我需要建立好一個模型之後,比如是識别一隻狗狗的模型,我需要對這個模型進行訓練。恰好,我訓練樣本中的所有訓練圖檔都是二哈,那麼經過多次疊代訓練之後,模型訓練好了,并且在訓練集中表現得很好。基本上二哈身上的所有特點都涵括進去,那麼問題來了!假如我的測試樣本是一隻金毛呢?将一隻金毛的測試樣本放進這個識别狗狗的模型中,很有可能模型最後輸出的結果就是金毛不是一條狗(因為這個模型基本上是按照二哈的特征去打造的)。是以這樣就造成了模型過拟合,雖然在訓練集上表現得很好,但是在測試集中表現得恰好相反,在性能的角度上講就是協方差過大(variance is large),同樣在測試集上的損失函數(cost function)會表現得很大。
所謂欠拟合(under-fitting)
相對過拟合欠拟合還是比較容易了解。還是拿剛才的模型來說,可能二哈被提取的特征比較少,導緻訓練出來的模型不能很好地比對,表現得很差,甚至二哈都無法識别。
2、過拟合原因
(1)模組化樣本抽取錯誤,包括(但不限于)樣本數量太少。
抽樣方法錯誤, 抽樣時沒有足夠正确考慮業務場景或業務特點,不能有效足夠代表業務邏輯或業務場景。
(2)參數太多、模型複雜度高。
(3)決策樹模型沒有合理剪枝
如果我們對于決策樹的生長沒有合理的限制和修剪的話, 決策樹的自由生長有可能每片葉子裡隻包含單純的事件資料(event)或非事件資料(no event), 可以想象,這種決策樹當然可以完美比對(拟合)訓練資料, 但是一旦應用到新的業務真實資料時,效果是一塌糊塗。
(4)權值學習疊代次數足夠多(Overtraining),拟合了訓練資料中的噪聲和訓練樣例中沒有代表性的特征
3、判斷是否過拟合?
欠拟合情況:随着訓練樣本數增大,訓練集得分和驗證集得分收斂,并且兩者的收斂值很接近。
過拟合情況:随着訓練樣本數增大,訓練集得分和驗證集得分相差還是很大。
4、如何解決過拟合?
(1)權重衰減、正則化:
回想下我們的模型,假如我們采用梯度下降算法将模型中的損失函數不斷減少,那麼最終我們會在一定範圍内求出最優解,最後損失函數不斷趨近0。那麼我們可以在所定義的損失函數後面加入一項永不為0的部分,那麼最後經過不斷優化損失函數還是會存在。其實這就是所謂的“正則化”。
正則化方法包括L1正則和L2正則, 而正則一般是在目标函數之後加上對于的範數。但是在機器學習中一般使用L2正則
- L1 範數是指向量中各個元素絕對值之和。
- L2 範數是指向量各元素的平方和然後求平方根。可以使得W的每個元素都很小,都接近于0, 可以使得W的每個元素都很小,都接近于0, 但與L1範數不同,它不會讓它等于0,而是接近于0。L2正則項起到使得參數w變小加劇的效果。
但是為什麼可以防止過拟合呢?一個通俗的了解便是:更小的參數值w意味着模型的複雜度更低, 對訓練資料的拟合剛剛好(奧卡姆剃刀),不會過分拟合訓練資料,進而使得不會過拟合, 以提高模型的泛化能力。
下面這張圖檔就是加入了正則化(regulation)之後的損失函數。這裡m是樣本數目,
表示的是正則化系數。
注意:當t(landa)過大時,則會導緻後面部分權重比加大,那麼最終損失函數過大,進而導緻欠拟合
當t(landa)過小時,甚至為0,導緻過拟合。
(2)dropout
dropout的思想是當一組參數經過某一層神經元的時候,去掉這一層上的一部分神經元,讓參數隻經過一部分神經元進行計算。注意這裡的去掉并不是真正意義上的去除,隻是讓參數不經過一部分神經元計算而已。
(3)減小網絡規模
對于神經網絡,參數膨脹原因可能是因為随着網路深度的增加,同時參數也不斷增加,并且增加速度、規模都很大。那麼可以采取減少神經網絡規模(深度)的方法。
(4)增大訓練樣本
增大訓練樣本規模同樣也可以防止過拟合。
(5)機器學習內建思想
(6)early stop