當我們訓練深度學習神經網路的時候通常希望能獲得最好的泛化效能(generalization performance,即可以很好地擬合資料)。但是所有的標準深度學習神經網路結構如全連線多層感知機都很容易過擬合:當網路在訓練集上表現越來越好,錯誤率越來越低的時候,實際上在某一刻,它在測試集的表現已經開始變差。
圖1、理想中的訓練集誤差和驗證集的誤差
模型的泛化能力通常使用模型在驗證資料集(validation set)上的表現來評估。隨著網路的優化,我們期望的理想中的泛化錯誤如圖1所示。即當模型在訓練集上的誤差降低的時候,其在驗證集上的誤差表現不會變差。反之,當模型在訓練集上表現很好,在驗證集上表現很差的時候,我們認為模型出現了過擬合(overfitting)的情況。
解決過擬合問題有兩個方向:降低引數空間的維度或者降低每個維度上的有效規模(effective size)。降低引數數量的方法包括greedy constructive learning、剪枝和權重共享等。降低每個引數維度的有效規模的方法主要是正則化,如權重衰變(weight decay)和早停法(early stopping)等。
早停法是一種被廣泛使用的方法,在很多案例上都比正則化的方法要好。圖1是我們經常看到****現的圖,也是使用早停法出現的乙個結果。其基本含義是在訓練中計算模型在驗證集上的表現,當模型在驗證集上的表現開始下降的時候,停止訓練,這樣就能避免繼續訓練導致過擬合的問題。其主要步驟如下:
將原始的訓練資料集劃分成訓練集和驗證集
只在訓練集上進行訓練,並每個乙個週期計算模型在驗證集上的誤差,例如,每15次epoch(mini batch訓練中的乙個週期)
當模型在驗證集上的誤差比上一次訓練結果差的時候停止訓練
使用上一次迭代結果中的引數作為模型的最終引數
然而,在現實中,模型在驗證集上的誤差不會像上圖那樣平滑,而是像下圖一樣:
圖2、真實的驗證集誤差變化曲線
也就是說,模型在驗證集上的表現可能咱短暫的變差之後有可能繼續變好。上圖在訓練集迭代到400次的時候出現了16個區域性最低。其中有4個最低值是它們所在位置出現的時候的最低點。其中全域性最優大約出現在第205次迭代中。首次出現最低點是第45次迭代。相比較第45次迭代停止,到第400次迭代停止的時候找出的最低誤差比第45次提高了1.1%,但是訓練時間大約是前者的7倍。
但是,並不是所有的誤差曲線都像上圖一樣,有可能在出現第一次最低點之後,後面再也沒有比當前最低點更低的情況了。所以我們看到,早停法主要是訓練時間和泛化錯誤之間的權衡。儘管如此,也有某些停止標準也可以幫助我們尋找更好的權衡。
我們需要乙個停止的標準來實施早停法,因此,我們希望它可以產生最低的繁華錯誤,同時也可以有最好的價效比,即給定泛化錯誤下的最小訓練時間
2.1、停止標準簡介
第一類停止標準
第二類停止標準
第三類停止標準
一般情況下,「較慢」的標準會相對而言在平均水平上表現略好,可以提高泛化能力。然而,這些標準需要較長的訓練時間。其實,總體而言,這些標準在系統性的區別很小。主要選擇規則包括:
除非較小的提公升也有很大價值,否則選擇較快的停止標準
為了最大可能找到乙個好的方案,使用gl標準
為了最大化平均解決方案的質量,如果網路只是過擬合了一點點,可以使用pq標準,否則使用up標準
ps:早停法函式keras earlystopping()函式詳解
學習筆記 機器學習之過擬合
如果認為訓練資料中的每乙個元素都是正確的,並且以此去精確地擬合模型,那麼得到已將低泛化的模型。這就是 過擬合 兩種典型的方法 正則化 驗證 正則化是一種數值方法,這種方法試圖構建乙個盡可能簡單的模型結構。簡化後的模型可以以較低的效能代價避免過擬合。它保留一部分訓練資料用於觀察模型的效能。驗證集不用於...
機器學習小白之過擬合與欠擬合
過擬合 通俗一點來說過擬合就是模型把資料學習的太徹底,以至於把雜訊資料的特徵也學習到了,導致模型在訓練時表現得非常好,但是在測試集上表現得不好,模型的泛化能力太差。泛化 機器學習模型在遇到沒有在訓練集中遇見過的資料時的表現 解決方法 1.重新清洗資料,導致過擬合的乙個原因有可能是資料不純導致 2.增...
機器學習 如何判斷和解決過擬合和欠擬合
1.利用學習曲線判斷 2.誤差 偏差 精確率 方差 穩定性 3.下圖中虛線為訓練集,實線為測試集 功能 判別過擬合和欠擬合 學習曲線learning curve 評估樣本量和指標的關係 驗證曲線validation curve 評估引數和指標的關係 import pandas as pd from ...