【PyTorch入門】之模型選擇、過擬合與欠擬合介紹

我自己的公衆號【拇指筆記】,每天寫寫我自己學習中記下的筆記,歡迎各位大神關注一下~

1. 模型選擇

機器學習過程中,評估候選模型並從中選擇模型的過程叫做模型選擇。模型選擇的對象不僅是不同的模型也可以是有着不同超參數的同一模型。

1.1 訓練誤差與泛化誤差

​ 訓練誤差與泛化誤差都可以使用損失函數求得。訓練誤差是指模型在訓練數據集上表現出的誤差;泛化誤差是指模型在測試數據集上表現出的誤差。訓練誤差的期望小於或等於泛化誤差(訓練集訓練出來的模型在訓練集上的表現會優於或等於模型在測試集上的表現),因此一味降低訓練誤差並不一定會降低泛化誤差,機器學習模型應主要關注泛化誤差。

1.2 驗證數據集

爲了得到有效的模型,我們需要使用驗證數據集(驗證集)來對不同模型進行評估。驗證數據集通常是預留在訓練數據集和測試數據集以外的數據。

選取的方法:從給定的訓練集中選取出一部分作爲驗證集,其餘部分作爲真正的訓練集。在實踐中,驗證集與測試集的界限比較模糊

1.3 K折交叉驗證

由於數據通常是有限的,在訓練數據中預留大量不參與訓練的驗證集有些不切實際。因此引入一種改善的方法:KK折交叉驗證。

KK折交叉驗證:把原始訓練集分割成KK個不重合的子數據集,然後對模型做KK次訓練和驗證。每一次我們都選其中一組子集作爲驗證集,其他子集作爲訓練集,最後對這KK次訓練誤差和驗證誤差求平均值。

2. 過擬合和欠擬合

在對模型進行訓練的過程中,經常會出現兩種常見的問題過擬合和欠擬合。過擬合是模型無法得到較低的訓練誤差;欠擬合是模型的訓練誤差遠遠小於它的泛化誤差。造成這兩種問題的原因主要是模型複雜度和訓練數據集大小。

2.1 影響因素

2.1.1 模型複雜度

爲了解釋模型複雜度,我們以多項式函數擬合爲例。
y^=b+k=1Kxkwk \hat{y} = b+\sum_{k=1}^Kx^kw_k
對於階數越高(K值更大)的多項式,模型的參數更多,模型的選擇空間也就越大,所以高階多項式與低階多項式相比更容易在相同訓練集上獲得更低的訓練誤差。

對於給定的訓練集,模型複雜度與誤差之間的關係如下圖所示

在這裏插入圖片描述

如果模型的複雜度過低,則容易出現欠擬合;如果模型過於複雜,則容易出現過擬合。因此,應對模型過擬合與欠擬合問題的一個辦法就是選取複雜度適宜的模型。

2.1.2 訓練集大小

一般來說,訓練數據集中樣本過少(特別是比模型參數更少時)容易出現過擬合;但泛化誤差不會隨着訓練集樣本數增加而增加。因此數據集樣本數多多益善。


歡迎各位關注【拇指筆記】,每天更新我的學習筆記~
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章