對過擬合和欠擬合的理解以及解決辦法

2021-10-09 23:26:34 字數 2909 閱讀 5730

前言

不管是在深度學習還是在機器學習中訓練的模型存在著過擬合和欠擬合的現象,而且這種現象或多或少可能都是難以避免的。在介紹擬合和欠擬合之前我們先來了解一下其他幾個概念。「誤差」(偏差):訓練得到的模型實際**輸出和樣本的真實輸出之間的差異叫做誤差。方差:描述的是模型實際的**輸出的變化範圍,離散程度,也就是離其期望值的距離。方差越大,資料的分布越分散;「泛化誤差」:模型在訓練集上得到的誤差叫做"訓練誤差",在新的樣本或者說測試集上的誤差叫做"泛化誤差"。

1.過擬合和欠擬合

在了解了上面的概念之後我們就來詳細講講到底什麼是過擬合和欠擬合

當訓練的模型在訓練集「學得」過好時,很有可能會把訓練集中樣本的一些特點(特徵)作為所有潛在(未知)樣本的共有的特點(特徵),這就產生了我們熟知的——過擬合。反之有些模型在訓練集上本身就"學的"不夠好,就連訓練樣本中的一般的特性都沒有"學到",那麼我們就稱之為——欠擬合,簡單來說就是過擬合學得太過於好了,「錙銖必較」;而欠擬合就學得不夠好。下面我們就舉例來說明:

圖1 圖1是來自周志華的《機器學習》的乙個例子。假設我們的資料集是葉子,在左邊的我們所用到的訓練集,右邊的是我們的測試集。在訓練集中我們的葉子都是有鋸齒的,通過模型的迭代學習,模型可能就學得很好把每乙個細節都學習到了,認為是綠色的且帶有鋸齒邊緣的都是樹葉,那麼訓練誤差的就比較小,但是給定乙個不帶鋸齒形狀的樹葉的測試樣本,那麼模型就可能認為這不是樹葉,這就是過擬合,也可以說泛化誤差較大(泛化效能不好)。相反欠擬合是在訓練的過程中模型學習的不好,葉子的形狀、鋸齒邊緣之類的都沒學到,就學到了葉子的顏色是綠色的就認為是葉子,那麼訓練誤差較大(泛化誤差更大、效能更不好),如圖在給定一棵樹的的情況下(由於顏色是綠色)那麼模型就以為是葉子,這就是欠擬合

同時我們知道高偏差對應著欠擬合、而高方差對應著過擬合。偏差(bias)和方差(variance)是機器學習領域非常重要的兩個概念和j急需需要解決的問題。在傳統的機器學習演算法中,偏差和方差是對立的,低方差意味著高偏差,而低偏差意味著高方差,我們常常需要在偏差和方差之間進行權衡。而在深度學習中,我們可以同時減小偏差和方差,構建最佳神經網路模型。

2.解決過擬合和欠擬合的方法

在得知了產生過擬合和欠擬合的原理之後,我們就提出一些解決方法。

2.1過擬合的解決辦法

①.獲取更多資料:擴充資料集可以有效的減小過擬合。

②.資料增強,複製現有資料並加隨機雜訊(資料佔比不能太高)、重取樣等,在影象領域我們可以進行不同角度旋轉、平移變換、隨機裁剪、中心裁剪、模糊等;如圖2所示

圖2 資料增強

③.引數正則化(權值衰減)在損失和模型複雜度間進行折中,可以使用l1或l2,其中l1正則採用的是拉普拉斯先驗,傾向於聚集網路的權值在相對少量的高重要連線上,而其他權重就會被趨向於0;而l2正則採用的是高斯先驗;

④.選擇合適的網路結構,這個比較好理解,就是通過減少網路層數、神經元個數、全連線層數等降低網路容量;

⑤.early stopping,因為在初始化網路的時候一般都是初始為較小的權值,訓練時間越長,部分網路權值可能越大。如果我們在合適時間停止訓練,就可以將網路的能力限制在一定範圍內;大概步驟分為:1.將資料分為訓練集和驗證集;2.每個epoch結束後(或每n個epoch後): 在驗證集上獲取測試結果,隨著epoch的增加,如果在驗證集上發現測試誤差上公升,則停止訓練;3將停止之後的權重作為網路的最終引數。

⑥.dropout,一種相當激進的技術,和正則化不同的是它不改變網路本身,而是會隨機地刪除網路中的一般隱藏的神經元,並且讓輸入層和輸出層的神經元保持不變; 通常的 建議是把靠近輸⼊層的丟棄概率設得小⼀點。結構如圖4

dropout tricks:1.使用 0.8 作為輸入層的保留概率,0.5 作為隱層的保留概率。

2.dropout 會需要更大的網路和更長的迭代。

3.如果資料集足夠大,dropout 沒有太大幫助。另外,在很小(<5000)的訓練樣本上dropout的作用很有限。

⑦.模型組合,baggging &boosting,將l兩個弱分類器融合之後形成乙個強分類器,而且融合之後的效果會比最好的弱分類器更好;

⑧. batch-normalization(bn),一種非常有用的正則化方法,可以讓大型的卷積網路訓練速度加快很多倍,同時收斂後分類的準確率也可以大幅度的提高。bn在訓練某層時,會對每乙個mini-batch資料進行標準化(normalization)處理,使輸出規範到n(0,1)的正太分布,減少了internal convariate shift(內部神經元分布的改變),傳統的深度神經網路在訓練是,每一層的輸入的分布都在改變,因此訓練困難,只能選擇用乙個很小的學習速率,但是每一層用了bn後,可以有效的解決這個問題,學習速率可以增大很多倍。

⑨.通過特徵選擇減少加入特徵的種類和數量;根具誤差分析結果修改輸入特徵。

⑩.減少迭代次數;

⑪增大學習率;

⑫如果是在樹結構中,可以對樹進行剪枝。

2.2欠擬合的解決辦法

①.增加網路規模(增加層/神經元數目增加神經網路的大小;

②.更具誤差分析結果修改輸入特徵。

③.減少或去除正則。4修改模型結構:增加網路層數、神經元個數和全連線層數等降低網路容量。

④.加入更多的資料量(幾乎不起作用)

對過擬合,欠擬合和正則化的理解

過擬合 定義 訓練誤差和測試誤差之間的差距太大 原因 模型容量過大 後果 無法提取有效的結構資訊,即解過多,無法選出乙個泛化能力好的解 這裡就得解釋一下模型容量和泛化能力的概念了,模型容量即擬合各種函式的能力,顯然高次函式多項式的這種能力比低次的強,就說更高次的模型容量大。泛化能力即在未觀測到的輸入...

深度學習 對過擬合和欠擬合問題的處理

我們以影象形式說明下欠擬合 正常擬合 過擬合的場景,左圖為欠擬合,此時演算法學習到的資料規律較弱,有較差的 效果,中圖為正常擬合的形態,模型能夠兼顧 效果和泛化能力,右圖是過擬合的情形,此時模型對訓練集有較好的 效果,但是因為其過度擬合於訓練資料,所以對未見過的資料集有較差的 效果,也就是我們通常說...

過擬合和欠擬合 深入理解過擬合與欠擬合

偏差是指我們忽略了多少資料,而方差是指我們的模型對資料的依賴程度。說你想學英語。你沒有先前的語言知識,但你聽說最偉大的英國作家是莎士比亞。乙個自然的行動方式當然必須是將自己鎖定在圖書館並記住他的作品。經過一年的學習,你從學業中走出來,前往紐約市,並向你看到的第乙個人打招呼,good dawning ...