一、定義
在訓練數據集上的准確率很⾼,但是在測試集上的准確率⽐較低
二、理解bias和variance
模型的偏差bias
:簡單來說訓練出來的模型在訓練集上的准確度。
模型的方差variance
:就是模型在不同訓練集上的效果差別很大。方差越大的模型越容易過擬合。假設有兩個訓練集A和B,經過A訓練的模型Fa與經過B訓練的模型Fb差異很大,這意味着Fa在類A的樣本集合上有更好的性能,而Fb在類B的訓練樣本集合上有更好的性能,這樣導致在不同的訓練集樣本的條件下,訓練得到的模型的效果差異性很大,很不穩定,這便是模型的過擬合現象。
數學表達如下:
其中:
f(X)是整體數據的真值;
e為測量噪聲;
Y為實際使用的label
f(x)^為在訓練集x上預測的結果
過擬合和欠擬合實際就是尋找Bias 和variance的平衡方案
三、判斷欠擬合和過擬合的方法
查看loss曲線
四、 欠擬合的解決方按
4.1 欠擬合loss變化曲線(1)
這種情況loss曲線還是在下降的,因此只需要進行更多更高效的訓練即可:
- 增大batch-size
- 調整激活函數(使用relu)
- 調整優化算法
- 增加訓練epoch
- 使用Adam
- 增大learning rate
4.1 欠擬合loss變化曲線(2)
這種情況loss曲線已經不再下降因此必須優化模型:
-
增加網絡復雜度
- 增加層數
- 增加卷積層輸出的通道數
- 增加全連接層的節點數
-
檢測訓練數據集和測試數據是否有相對應的特征
- 增加訓練數據的種類, 使得訓練數據覆蓋所有測試數據的特性
- 使用數據增強
五、過擬合的解決方案
5.1 DropOut
假設有一個過擬合的神經網絡如下:
DropOut步驟:
- 根據DropOut rate(這里假設為 1/3),在每組數據訓練時,隨機選擇每一隱藏層的1/3的節點去除,並訓練。如下圖是三次訓練的過程:
2. 使用時,把神經網絡還原成原來沒有去除過節點的樣子,如下圖。但是系數(w,b)需要乘以(1-DropOut rate)
5.2 L2 正則化
5.2.1 方法
對損失函數(loss function) f(θ) 中的每一個系數θi,都對損失函數加上1/2λθi2,其中λ是正則化的強度。
- 相當於,在訓練的每一次更新系數的時候都額外加上這一步:
θi= θi - λθi
5.2.2 目的
L2正則化的目的是使系數的絕對值減小,對絕對值越大的系數,減小的程度越強。L2正則化使得大多數系數的值都不為零,但是絕對值都比較小。
5.3 L1 正則化
5.3.1 方法
對損失函數(lossfunction)f(θ)中的每一個系數θi,都對損失函數
加上λ|θi|,其中λ是正則化的強度。
- 相當於,在訓練的每一次更新系數的時候都額外加上這一步:
5.3.2 目的
L1正則化的目的是使得許多系數的絕對值接近0,其它那些系數不接近於0的系數對應的特征就是對輸出有影響的特征。所以L1正則化甚至可以用於作為特征選擇的工具。
5.4 最⼤范數約束 (Max Norm)
5.4.1 方法
對每一個神經元對應的系數向量,設置一個最大第二范數值c,這個值通常設為3。如果一個神經元的第二范數值大於c,那么就將每一個系數值按比例縮小,使得第二范式值等於c。
-
相當於在訓練的每一次更新系數的時候都額外加上這一步:
注意:只有當||θ||>c才執行
5.4.2 目的
由於最大范數的約束,可以防止由於訓練步長較大引發的過擬合。
5.5 模型太復雜
模型太復雜,減少模型每一層的節點
打賞
如果對您有幫助,就打賞一下吧O(∩_∩)O