3 11 模型選擇 擬合和過擬合

2021-10-05 19:27:17 字數 2647 閱讀 3364

如果你改變過實驗中的模型結構或者超引數,你也許發現了:當模型在訓練資料集上更準確時,它在測試資料集上卻不⼀定更準確。這是為什麼呢?

3.11.1 訓練誤差和泛化誤差

在解釋上述現象之前,我們需要區分訓練誤差(training error)和泛化誤差(generalization error)。

通俗來講,前者指模型在訓練資料集上表現出的誤差,後者指模型在任意⼀個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤差來近似。計算訓練誤差和泛化誤差可以使⽤之前介紹過的損失函式,例如線性回歸⽤到的平⽅損失函式和softmax回歸⽤到的交叉熵損失函式。

讓我們以⾼考為例來直觀地解釋訓練誤差和泛化誤差這兩個概念。訓練誤差可以認為是做往年⾼考試題(訓練題)時的錯誤率,泛化誤差則可以通過真正參加⾼考(測試題)時的答題錯誤率來近似。假設訓練題和測試題都隨機取樣於⼀個未知的依照相同考綱的巨⼤試題庫。如果讓⼀名未學習中學知識的小學⽣去答題,那麼測試題和訓練題的答題錯誤率可能很相近。但如果換成⼀名反覆練習訓練題的⾼三備考⽣答題,即使在訓練題上做到了錯誤率為0,也不代表真實的⾼考成績會如此。

在機器學習⾥,我們通常假設訓練資料集(訓練題)和測試資料集(測試題)⾥的每⼀個樣本都是從同⼀個概率分布中相互獨⽴地⽣成的。基於該獨⽴同分布假設,給定任意⼀個機器學習模型(含引數),它的訓練誤差的期望和泛化誤差都是⼀樣的。例如,如果我們將模型引數設成隨機值(小學⽣),那麼訓練誤差和泛化誤差會⾮常相近。但我們從前⾯⼏節中已經了解到,模型的引數

是通過在訓練資料集上訓練模型而學習出的,引數的選擇依據了最小化訓練誤差(⾼三備考⽣)。所以,訓練誤差的期望小於或等於泛化誤差。也就是說,⼀般情況下,由訓練資料集學到的模型引數會使模型在訓練資料集上的表現優於或等於在測試資料集上的表現。由於⽆法從訓練誤差估計泛化誤差,⼀味地降低訓練誤差並不意味著泛化誤差⼀定會降低。

機器學習模型應關注降低泛化誤差。

3.11.2 模型選擇

在機器學習中,通常需要評估若⼲候選模型的表現並從中選擇模型。這⼀過程稱為模型選擇(model selection)。可供選擇的候選模型可以是有著不同超引數的同類模型。以多層感知機為例,我們可以選擇隱藏層的個數,以及每個隱藏層中隱藏單元個數和啟用函式。為了得到有效的模型,我們通常要在模型選擇上下⼀番功夫。下⾯,我們來描述模型選擇中經常使⽤的驗證資料集(validation data set)。

驗證資料集

從嚴格意義上講,測試集只能在所有超引數和模型引數選定後使⽤⼀次。不可以使⽤測試資料選擇模型,如調參。由於⽆法從訓練誤差估計泛化誤差,因此也不應只依賴訓練資料選擇模型。鑑於此,我們可以預留⼀部分在訓練資料集和測試資料集以外的資料來進⾏模型選擇。這部分資料被稱為驗證資料集,簡稱驗證集(validation set)。例如,我們可以從給定的訓練集中隨機選取⼀小部分作為驗證集,而將剩餘部分作為真正的訓練集。

然而在實際應⽤中,由於資料不容易獲取,測試資料極少只使⽤⼀次就丟棄。因此,實踐中驗證資料集和測試資料集的界限可能⽐較模糊。從嚴格意義上講,除⾮明確說明,否則本書中實驗所使⽤的測試集應為驗證集,實驗報告的測試結果(如測試準確率)應為驗證結果(如驗證準確率)

k 折交叉驗證

由於驗證資料集不參與模型訓練,當訓練資料不夠⽤時,預留⼤量的驗證資料顯得太奢侈。⼀種改善的⽅法是k折交叉驗證(k-fold cross-validation)。在k折交叉驗證中,我們把原始訓練資料集分割成k個不重合的⼦資料集,然後我們做k次模型訓練和驗證。每⼀次,我們使⽤⼀個⼦資料集驗證模型,並使⽤其他k -1個⼦資料集來訓練模型。在這k次訓練和驗證中,每次⽤來驗證模型的⼦資料集都不同。最後,我們對這k次訓練誤差和驗證誤差分別求平均。

3.11.3 ⽋擬合和過擬合

**模型訓練中經常出現的兩類典型問題:⼀類是模型⽆法得到較低的訓練誤差,將這⼀現象稱作⽋擬合(underfitting);另⼀類是模型的訓練誤差遠小於它在測試資料集上的誤差,稱該現象為過擬合(overfitting)。在實踐中,我們要盡可能同時應對⽋擬合和過擬合。雖然有很多因素可能導致這兩種擬合問題,在這⾥重點討論兩個因素:模型複雜度和訓練資料集⼤小。

模型複雜度

為了解釋模型複雜度,我們以多項式函式擬合為例。給定⼀個由標量資料特徵x和對應的標量標籤y組成的訓練資料集,多項式函式擬合的⽬標是找⼀個k階多項式函式

來近似y。在上式中,wk是模型的權重引數,b是偏差引數。與線性回歸相同,多項式函式擬合也使⽤平⽅損失函式。特別地,⼀階多項式函式擬合⼜叫線性函式擬合。

因為⾼階多項式函式模型引數更多,模型函式的選擇空間更⼤,所以⾼階多項式函式⽐低階多項式函式的複雜度更⾼。因此,⾼階多項式函式⽐低階多項式函式更容易在相同的訓練資料集上得到更低的訓練誤差

給定訓練資料集,模型複雜度和誤差之間的關係通常如圖3.4所⽰。給定訓練資料集,如果模型的複雜度過低,很容易出現⽋擬合;如果模型複雜度過⾼,很容易出現過擬合。應對⽋擬合和過擬合的⼀個辦法是針對資料集選擇合適複雜度的模型。

訓練資料集⼤⼩

影響⽋擬合和過擬合的另⼀個重要因素是訓練資料集的⼤小。⼀般來說,如果訓練資料集中樣本數過少,特別是⽐模型引數數量(按元素計)更少時,過擬合更容易發⽣。此外,泛化誤差不會隨訓練資料集⾥樣本數量增加而增⼤。因此,在計算資源允許的範圍之內,我們通常希望訓練資料集⼤⼀些,特別是在模型複雜度較⾼時,如層數較多的深度學習模型。

3 11 模型選擇 欠擬合和過擬合

前者指模型在訓練資料集上表現出的誤差,後者指模型在任意乙個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤差來近似。計算訓練誤差和泛化誤差可以使用之前介紹過的損失函式,例如線性回歸用到的平方損失函式和softmax回歸用到的交叉熵損失函式。由於驗證資料集不參與模型訓練,當訓練資料不夠用時...

模型選擇 過擬合和欠擬合

模型選擇 過擬合和欠擬合 訓練誤差和泛化誤差 在解釋上述現象之前,我們需要區分訓練誤差 training error 和泛化誤差 generalization error 通俗來講,前者指模型在訓練資料集上表現出的誤差,後者指模型在任意乙個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤...

深度學習 模型選擇 欠擬合和過擬合 01

我們經常在資料集實驗中,經常評價模型在訓練資料集和測試資料集上的表現,我們可能會發現當模型在訓練資料集上更準確時,它在測試集上卻不一定準確,那麼就讓我們一起來 一下吧!訓練誤差是指在訓練資料集上表現出的誤差。泛化誤差是指模型在任意乙個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤差來近...