Datawhale 零基礎入門CV賽事-Task4 模型訓練與驗證

Datawhale 零基礎入門CV賽事-Task4 模型訓練與驗證

4.1 學習目標

理解驗證集的作用,並使用訓練集和驗證集完成訓練
學會使用Pytorch環境下的模型讀取和加載,並瞭解調參流程

4.2 構造驗證集

在機器學習模型(特別是深度學習模型)的訓練過程中,模型是非常容易過擬合的。深度學習模型在不斷的訓練過程中訓練誤差會逐漸降低,但測試誤差的走勢則不一定。

在模型的訓練過程中,模型只能利用訓練數據來進行訓練,模型並不能接觸到測試集上的樣本。因此模型如果將訓練集學的過好,模型就會記住訓練樣本的細節,導致模型在測試集的泛化效果較差,這種現象稱爲過擬合(Overfitting)。與過擬合相對應的是欠擬合(Underfitting),即模型在訓練集上的擬合效果較差。

訓練集、驗證集和測試集分別有不同的作用:

訓練集(Train Set):模型用於訓練和調整模型參數;

驗證集(Validation Set):用來驗證模型精度和調整模型超參數;

測試集(Test Set):驗證模型的泛化能力。

因爲訓練集和驗證集是分開的,所以模型在驗證集上面的精度在一定程度上可以反映模型的泛化能力。在劃分驗證集的時候,需要注意驗證集的分佈應該與測試集儘量保持一致,不然模型在驗證集上的精度就失去了指導意義。

既然驗證集這麼重要,那麼如何劃分本地驗證集呢。在一些比賽中,賽題方會給定驗證集;如果賽題方沒有給定驗證集,那麼參賽選手就需要從訓練集中拆分一部分得到驗證集。驗證集的劃分有如下幾種方式:
留出法(Hold-Out)

直接將訓練集劃分成兩部分,新的訓練集和驗證集。這種劃分方式的優點是最爲直接簡單;缺點是只得到了一份驗證集,有可能導致模型在驗證集上過擬合。留出法應用場景是數據量比較大的情況。

交叉驗證法(Cross Validation,CV)

將訓練集劃分成K份,將其中的K-1份作爲訓練集,剩餘的1份作爲驗證集,循環K訓練。這種劃分方式是所有的訓練集都是驗證集,最終模型驗證精度是K份平均得到。這種方式的優點是驗證集精度比較可靠,訓練K次可以得到K個有多樣性差異的模型;CV驗證的缺點是需要訓練K次,不適合數據量很大的情況。

自助採樣法(BootStrap)

通過有放回的採樣方式得到新的訓練集和驗證集,每次的訓練集和驗證集都是有區別的。這種劃分方式一般適用於數據量較小的情況。

在本次賽題中已經劃分爲驗證集,因此選手可以直接使用訓練集進行訓練,並使用驗證集進行驗證精度(當然你也可以合併訓練集和驗證集,自行劃分驗證集)。

當然這些劃分方法是從數據劃分方式的角度來講的,在現有的數據比賽中一般採用的劃分方法是留出法和交叉驗證法。如果數據量比較大,留出法還是比較合適的。當然任何的驗證集的劃分得到的驗證集都是要保證訓練集-驗證集-測試集的分佈是一致的,所以如果不管劃分何種的劃分方式都是需要注意的。

這裏的分佈一般指的是與標籤相關的統計分佈,比如在分類任務中“分佈”指的是標籤的類別分佈,訓練集-驗證集-測試集的類別分佈情況應該大體一致;如果標籤是帶有時序信息,則驗證集和測試集的時間間隔應該保持一致

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