Datawhale 零基礎入門CV賽事

2021-10-06 16:15:41 字數 1360 閱讀 6323

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

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

隨著模型複雜度和模型訓練輪數的增加,cnn模型在訓練集上的誤差會降低,但在測試集上的誤差會逐漸降低,然後逐漸公升高,而我們為了追求的是模型在測試集上的精度越高越好。

導致模型過擬合的情況有很多種原因,其中最為常見的情況是模型複雜度(model complexity )太高,導致模型學習到了訓練資料的方方面面,學習到了一些細枝末節的規律。

解決上述問題最好的解決方法:構建乙個與測試集盡可能分布一致的樣本集(可稱為驗證集),在訓練過程中不斷驗證模型在驗證集上的精度,並以此控制模型的訓練。

在一般情況下,參賽選手也可以自己在本地劃分出乙個驗證集出來,進行本地驗證。訓練集、驗證集和測試集分別有不同的作用:

訓練集(train set):模型用於訓練和調整模型引數;

驗證集(validation set):用來驗證模型精度和調整模型超引數;

測試集(test set):驗證模型的泛化能力;

因為訓練集和驗證集是分開的,所以模型在驗證集上面的精度在一定程度上可以反映模型的泛化能力。在劃分驗證集的時候,需要注意驗證集的分布應該與測試集盡量保持一致

,不然模型在驗證集上的精度就失去了指導意義。

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

留出法(hold-out)

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

交叉驗證法(cross validation,cv)

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

自助取樣法(bootstrap)

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

Datawhale 零基礎入門CV

賽題名稱 零基礎入門cv之街道字元識別 1.匯入所需庫 import os,sys,glob,shutil,json os.environ cuda visible devices 0 import cv2 import matplotlib.pyplot as plt from pil impor...

Datawhale 零基礎入門CV賽事

本章將會講解卷積神經網路 convolutional neural network,cnn 的常見層,並從頭搭建乙個字元識別模型。學習cnn基礎和原理 使用pytorch框架構建cnn模型,並完成訓練 卷積神經網路 簡稱cnn 是一類特殊的人工神經網路,是深度學習中重要的乙個分支。cnn在很多領域都...

Datawhale 零基礎入門金融風控(一)

一般而言,對於資料在比賽介面都有對應的資料概況介紹 匿名特徵除外 說明列的性質特徵。了解列的性質會有助於我們對於資料的理解和後續分析。train.csv id 為貸款清單分配的唯一信用證標識 loanamnt 貸款金額 term 貸款期限 year interestrate 貸款利率 install...