標籤:允許 erro 情況下 複雜度 基於 com 資料 圖片 pac
當模型在訓練資料集上更準確時,在測試資料集上的準確率既可能上升又可能下降。這是為什麼呢?
訓練誤差和泛化誤差
在解釋上面提到的現象之前,我們需要區分訓練誤差(training error)和泛化誤差(generalization error):前者指模型在訓練資料集上表現出的誤差,後者指模型在任意一個測試資料樣本上表現出的誤差的期望。
假設訓練資料集和測試資料集裡的每一個樣本都是從同一個機率分布中相互獨立地產生的。基於該獨立同分布假設,給定任意一個機器學習模型及其參數和超參數,它的訓練誤差的期望和泛化誤差都是一樣的。
然而,模型的參數是通過訓練資料訓練模型而學習出來的,訓練誤差的期望小於或等於泛化誤差。也就是說,通常情況下,由訓練資料集學到的模型參數會使模型在訓練資料集上的表現優於或等於在測試資料集上的表現。
由於無法從訓練誤差估計泛化誤差,降低訓練誤差並不意味著泛化誤差一定會降低。我們希望通過適當降低模型的訓練誤差,從而能夠間接降低模型的泛化誤差。
欠擬合和過擬合
給定測試資料集,我們通常用機器學習模型在該測試資料集上的誤差來反映泛化誤差。當模型無法得到較低的訓練誤差時,我們將這一現象稱作欠擬合(underfitting)。當模型的訓練誤差遠小於它在測試資料集上的誤差時,我們稱該現象為過擬合(overfitting)。
在實踐中,我們要儘可能同時避免欠擬合和過擬合的出現。雖然有很多因素可能導致這兩種擬合問題,在這裡我們重點討論兩個因素:模型複雜度和訓練資料集大小。
模型複雜度
為瞭解釋模型複雜度,讓我們以多項式函數擬合為例。給定一個由標量資料特徵x和對應的標量標籤y組成的訓練資料集,多項式函數擬合的目標是找一個K階多項式函數
\[\hat{y} = b + \sum_{k=1}^K x^k w_k\]
來近似y。上式中,帶下標的w是模型的權重參數,b是偏差參數。和線性迴歸相同,多項式函數擬合也使用平方損失函數。特別地,一階多項式函數擬合又叫線性函數擬合。
高階多項式函數比低階多項式函數更容易在相同的訓練資料集上得到更低的訓練誤差。給定訓練資料集,模型複雜度的和誤差之間的關係通常。給定訓練資料集,如果模型的複雜度過低,很容易出現欠擬合;如果模型複雜度過高,很容易出現過擬合。
訓練資料集大小
影響欠擬合和過擬合的另一個重要因素是訓練資料集大小。一般來說,如果訓練資料集過小,特別是比模型參數數量更小時,過擬合更容易發生。
此外,泛化誤差不會隨訓練資料集裡樣本數量增加而增大。因此,在計算資源允許範圍之內,我們通常希望訓練資料集大一些,特別當模型複雜度較高時,例如訓練層數較多的深度學習模型時。
模型選擇
在選擇模型時,我們可以切分原始訓練資料集:其中大部分樣本組成新的訓練資料集,剩下的組成驗證資料集(validation data set)。
我們在新的訓練資料集上訓練模型,並根據模型在驗證資料集上的表現調參和選擇模型。
最後,我們在測試資料集上評價模型的表現。
K 折交叉驗證
在K折交叉驗證中,我們把原始訓練資料集分割成K個不重合的子資料集。然後我們做K次模型訓練和驗證。每一次,我們使用一個子資料集驗證模型,並使用其他K?1個子資料集來訓練模型。在這K次訓練和驗證中,每次用來驗證模型的子資料集都不同。最後,我們只需對這K次訓練誤差和驗證誤差分別求平均作為最終的訓練誤差和驗證誤差。
MXNET:欠擬合、過擬合和模型選擇