您現在的位置是:首頁 > 棋牌

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

  • 由 極客Array 發表于 棋牌
  • 2022-03-06
簡介但由於深度學習演算法需要大量的訓練資料,為了獲取更大規模的訓練資料集,我們可以採用當前流行的各種創意策略,例如,網頁抓取,代價就是訓練集資料與驗證集和測試集資料有可能不是來自同一分佈

驗證集是什麼

從今天開始我們進入新的一個大方向了,

改善深層神經網路

:超引數除錯、正則化以及最佳化,首先進入深度學習的一個新層面,先認識下在深度學習中的資料集的分類。

之前可能大家已經瞭解了神經網路的組成的幾個部分,那麼我們將繼續學習如何有效運作神經網路,內容涉及超引數調優,如何構建資料,以及如何確保最佳化演算法快速執行,從而使學習演算法在合理時間內完成自我學習。

訓練,驗證,測試集(Train / Dev / Test sets)

在配置訓練、驗證和測試資料集的過程中做出正確決策會在很大程度上幫助大家建立高效的神經網路。訓練神經網路時,我們需要做出很多決策,例如:

神經網路分多少層;每層含有多少個隱藏單元;學習速率是多少;各層採用哪些啟用函式。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

建立新應用的過程中,我們不可能從一開始就準確預測出這些資訊和其他超級引數。實際上,應用型機器學習是一個高度迭代的過程,通常在專案啟動時,我們會先有一個初步想法,比如構建一個含有特定層數,隱藏單元數量或資料集個數等等的神經網路,然後編碼,並嘗試執行這些程式碼,透過執行和測試得到該神經網路或這些配置資訊的執行結果,你可能會根據輸出結果重新完善自己的想法,改變策略,或者為了找到更好的神經網路不斷迭代更新自己的方案。

現如今,

深度學習已經在自然語言處理,計算機視覺,語音識別以及結構化資料應用等眾多領域取得巨大成功

結構化資料無所不包,從廣告到網路搜尋。其中網路搜尋不僅包括網路搜尋引擎,還包括購物網站,從所有根據搜尋欄詞條傳輸結果的網站。再到計算機安全,物流,比如判斷司機去哪接送貨,範圍之廣,不勝列舉

可能有自然語言處理方面的人才想踏足計算機視覺領域,或者經驗豐富的語音識別專家想投身廣告行業,又或者,有的人想從電腦安全領域跳到物流行業,在我看來,從一個領域或者應用領域得來的直覺經驗,通常無法轉移到其他應用領域,

最佳決策取決於你所擁有的資料量,計算機配置中輸入特徵的數量,用GPU訓練還是CPU,GPU和CPU的具體配置以及其他諸多因素。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

目前為止,對於很多應用系統,即使是經驗豐富的深度學習行家也不太可能一開始就預設出最匹配的超級引數,所以說,應用深度學習是一個典型的迭代過程,需要多次迴圈往復,才能為應用程式找到一個稱心的神經網路,因此迴圈該過程的效率是決定專案進展速度的一個關鍵因素,而建立高質量的訓練資料集,驗證集和測試集也有助於提高迴圈效率。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

假設這是訓練資料,用一個長方形表示,我們

通常會將這些資料劃分成幾部分,一部分作為訓練集,一部分作為簡單交叉驗證集,有時也稱之為驗證集,方便起見,我就叫它驗證集(dev set),其實都是同一個概念,最後一部分則作為測試集。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

接下來,我們開始對訓練執行演算法,透過驗證集或簡單交叉驗證集選擇最好的模型,經過充分驗證,我們選定了最終模型,然後就可以在測試集上進行評估了,為了無偏評估演算法的執行狀況。

機器學習發展的小資料量時代,常見做法是將所有資料三七分,就是人們常說的70%驗證集,30%測試集,如果沒有明確設定驗證集,也可以按照60%訓練,20%驗證和20%測試集來劃分。這是前幾年機器學習領域普遍認可的最好的實踐方法

如果只有100條,1000條或者1萬條資料,那麼上述比例劃分是非常合理的。

但是在大資料時代,我們現在的資料量可能是百萬級別,那麼驗證集和測試集佔資料總量的比例會趨向於變得更小。因為驗證集的目的就是驗證不同的演算法,檢驗哪種演算法更有效,因此,驗證集要足夠大才能評估,比如2個甚至10個不同演算法,並迅速判斷出哪種演算法更有效。我們可能不需要拿出20%的資料作為驗證集。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

比如我們有100萬條資料,那麼取1萬條資料便足以進行評估,找出其中表現最好的1-2種演算法。同樣地,根據最終選擇的分類器,測試集的主要目的是正確評估分類器的效能,所以,如果擁有百萬資料,我們只需要1000條資料,便足以評估單個分類器,並且準確評估該分類器的效能。

假設我們有100萬條資料,其中1萬條作為驗證集,1萬條作為測試集,100萬里取1萬,比例是1%,即:訓練集佔98%,驗證集和測試集各佔1%。對於資料量過百萬的應用,訓練集可以佔到99.5%,驗證和測試集各佔0.25%,或者驗證集佔0.4%,測試集佔0.1%。

總結一下,在機器學習中,我們通常將樣本分成訓練集,驗證集和測試集三部分,資料集規模相對較小,適用傳統的劃分比例,資料集規模較大的,驗證集和測試集要小於資料總量的20%或10%。後面我會給出如何劃分驗證集和測試集的具體指導。

現代深度學習的另一個趨勢是越來越多的人在訓練和測試集分佈不匹配的情況下進行訓練,假設你要構建一個使用者可以上傳大量圖片的應用程式,目的是找出並呈現所有貓咪圖片,可能你的使用者都是愛貓人士,

訓練集可能是從網上下載的貓咪圖片,而驗證集和測試集是使用者在這個應用上上傳的貓的圖片,就是說,訓練集可能是從網路上抓下來的圖片。而驗證集和測試集是使用者上傳的圖片。結果許多網頁上的貓咪圖片解析度很高,很專業,後期製作精良,而使用者上傳的照片可能是用手機隨意拍攝的,畫素低,比較模糊,這兩類資料有所不同

,針對這種情況,根據經驗,

建議大家要確保驗證集和測試集的資料來自同一分佈

,關於這個問題我也會多講一些。因為你們要用驗證集來評估不同的模型,儘可能地最佳化效能。如果驗證集和測試集來自同一個分佈就會很好。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

但由於深度學習演算法需要大量的訓練資料,為了獲取更大規模的訓練資料集,我們可以採用當前流行的各種創意策略,例如,網頁抓取,代價就是訓練集資料與驗證集和測試集資料有可能不是來自同一分佈。但只要遵循這個經驗法則,你就會發現機器學習演算法會變得更快。

最後一點,

就算沒有測試集也不要緊,測試集的目的是對最終所選定的神經網路系統做出無偏估計,如果不需要無偏估計,也可以不設定測試集。所以如果只有驗證集,沒有測試集,我們要做的就是,在訓練集上訓練,嘗試不同的模型框架,在驗證集上評估這些模型,然後迭代並選出適用的模型。因為驗證集中已經涵蓋測試集資料,其不再提供無偏效能評估。當然,如果你不需要無偏估計,那就再好不過了。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

在機器學習中,如果

只有一個訓練集和一個驗證集,而沒有獨立的測試集,遇到這種情況,訓練集還被人們稱為訓練集,而驗證集則被稱為測試集

,不過在實際應用中,人們只是把測試集當成簡單交叉驗證集使用,並沒有完全實現該術語的功能,因為他們把驗證集資料過度擬合到了測試集中。如果某團隊跟你說他們只設置了一個訓練集和一個測試集,會很謹慎,心想他們是不是真的有訓練驗證集,因為他們把驗證集資料過度擬合到了測試集中,讓這些團隊改變叫法,改稱其為“訓練驗證集”,而不是“訓練測試集”,可能不太容易。即便我認為“訓練驗證集“在專業用詞上更準確。實際上,如果你不需要無偏評估演算法效能,那麼這樣是可以的。

吳恩達深度學習筆記(28)-網路訓練驗證測試資料集的組成介紹

所以說,搭建訓練驗證集和測試集能夠加速神經網路的整合,也可以更有效地衡量演算法地偏差和方差,從而幫助我們更高效地選擇合適方法來最佳化演算法。

從今天開始講解神經網路的最佳化與調整了,這塊非常重要,希望大家好好的閱讀理解~

Top