在DL中為什麼將資料集分為訓練集 開發集 測試集可以提高迭代效率

時間 2021-05-11 19:47:46

1樓:塞罕寶貝

在 deep learning 中我們通常追求的是最高效的求得收斂的最優解, 在學術界可以通過提高模型複雜度,增加資料學習資料集規模,增加特徵工程複雜度等方法得到更廣泛意義的最優解。

但是在工業界,公司追求的是roi投資回報率最大,那麼就要在最短學習時間,學習成本的前提下盡可能找到區域性最優解去近似全域性最優解。

所以這就可以要用到您所說的交叉驗證。將資料集分成多份,訓練集,測試集一般我們把乙份資料分成無份,然後在訓練乙個模型的時候並行的使用這五份資料集交叉使用學習集和測試集,這樣通過多次實驗,可以快速的得到近似區域性最優解。提高模型的學習效率,降低訓練的時間成本和經濟代價。

2樓:林凌

和效率啥的沒什麼關係,主要就是為了提供乙個相對準確的效能評價。

因為深度神經網路的強大擬合能力,模型在訓練集上的正確率多半不會低於99%沒啥參考價值,因此要根據模型在沒見過的新資料上的表現評價其效能,這就有了測試集

而根據相同的原因,模型的超引數調整同樣需要不同於訓練集的一組資料,而如果直接用測試集,那還是相當於間接地使用測試集進行了訓練,也不合適。所以就有了驗證集

3樓:iwuqing

如果沒有開發集,你就沒辦法進行超引數調優了。

假定我們現在只有訓練集和測試集,模型本身有乙個超引數a,我們知道超引數是你在訓練之前就預設的,而不是你的訓練得到的。也就是說我們在訓練之前只能憑經驗(隨便)給a設定乙個值,然後開始訓練模型。這時候你就開始使用測試集測定模型的泛化誤差。

很多人這裡出現乙個誤區:根據模型在測試集上的表現反過來調節超引數a,然而這是不行的。因為測試集是只能用來測量泛化誤差,你不能用這個泛化誤差去調你的模型。

這時候就輪到開發集上場了,訓練集訓練模型,開發集衡量訓練效果的同時進行超引數調優,測試集測定泛化誤差。

將資料集分為訓練集和測試集,訓練集上網格搜尋調參,得到最優引數,能用到在訓練集交叉驗證上嗎?

liaoyanjun 我理解你的意思是先做網格搜尋,選擇一組引數,然後做交叉驗證是不。答案是完全可以,你得到的就是一組引數對應的交叉驗證的均值。交叉驗證的均值好,引數就說明優秀。但是如果資料很大,程式會很慢。 哈哈祥 GridSearchCV,它存在的意義就是自動調參,只要把引數輸進去,就能給出最優...

為什麼模型 訓練集的正負比例越接近測試集的比例越好?

如果使用交叉熵作為loss函式,則模型在訓練的過程中會盡量保證盡可能多的樣本被正確分類。當正負樣本不平衡時,很容易出現幾乎全都判別為樣本多的那一類別的情況,陷入區域性最優。這是損失函式決定的。所以在這種情況下,需要使用降取樣或者過取樣對正負樣本進行均衡。或者在交叉熵損失函式中設定權重引數,加大模型將...

訓練集效果還可以,測試集效果不好,意味著什麼

雞湯狗 可能有兩點原因,乙個模型過擬合,訓練過度了,可以減少epoch看看 第二,最好檢查一下測試集合和訓練集合的資料分布,如果兩者差異大,自然很難學習得好。 社會大學楊教授 原因太多了,需要你逐個排查。樓上說的很全面的,我很贊同。訓練集效果還可以,測試集效果不好,意味著什麼?樓上的哥從genera...