AI屆的英雄好漢“訓練集、驗證集、測試集”各顯神通!

0 評論 2487 瀏覽 2 收藏 32 分鐘

充分利用好訓練集、驗證集和測試集,有助于我們構建出性能優秀的模型,這篇文章里,作者就對三者做了介紹,并結合貓貓識別模型的模擬案例來展示訓練集、驗證集和測試集各自的能力,一起來看看作者的解讀與分析。

各位看官:

歡迎一起揭秘AI的世界。AI的運行離不開數據,若數據就是AI的“大米”,良米炊而成飯,質地上乘。我們喂養給AI多好的“大米”,AI就會輸出多好的“飯”。

原本是打算僅用一篇來說清楚AI數據集,但在持續的梳理和撰寫過程中,發現字數越碼越多,所以就決定分幾篇說完吧。

上一篇《帶你識別AI數據集的各種面孔 (AI從業萬字干貨)》中,我主要介紹了AI數據集是什么,這些數據集的常見格式有哪些,分別有哪些適用場景和局限之處,也給大家整理了一些網上的公開數據集,當我們需要數據來做AI項目時,可供君參考。

本篇,我會繼續聊聊AI中的數據集。全文8000字左右,預計閱讀時間8分鐘,若是碎片時間不夠,建議先收藏后看,便于找回。

照例,開篇提供文章結構導圖,方便大家在閱讀前總攬全局,有大致的畫面框架。

Now let’s start,在人工智能和機器學習的世界里,數據訓練是不可避免的。機器學習的核心任務就是從數據中學習和構建模型(該過程稱之為訓練),并且能夠在未遇見的數據上進行預測。我們通過數據訓練,期待模型能夠展現出優秀的預測性能。

項目實踐中,我們在構建模型的不同階段時,通常會將數據集劃分成三種:訓練集、驗證集和測試集。這樣劃分的目的是希望可以更好地評估模型的性能,同時也能避免數據過擬合和欠擬合的問題。

BTW,關于數據擬合的問題,我寫過的一篇《(萬字干貨)如何訓練優化“AI神經網絡”模型?》中,有詳細介紹,本篇不贅述。

接下來,我們將重點圍繞訓練集、驗證集和測試集來展開,進一步揭曉AI數據集背后的故事。

一、教師角色:訓練集(Training Set)

顧名思義,訓練集是機器學習中用于訓練模型的數據集合。訓練集通常包含已標記的樣本,即每個樣本都有對應的輸入特征和相應的目標標簽或輸出。

在訓練模型的過程中,模型通過學習分析訓練集中的樣本數據來調整其參數和權重,以實現對新樣本的準確預測或分類。

簡單來說,訓練集就像是教師,教學生知識,給學生提供教材,學生通過閱讀和理解所教授的內容和教材來學習新的知識和技能。

所需的“知識”需具備一定的廣度,我們在選取訓練集時,要注意“訓練集是否具備代表性”,“數據量大小是否足夠”,“數據質量是否符合要求”。

1. 訓練集中的樣本需要具有代表性

這是指被訓練的數據需要涵蓋模型在實際應用中可能遇到的各種情況。

如果說,我們要構建一個用于圖像分類的訓練集,任務是將動物圖像分為貓和狗兩類。為了保證訓練集的代表性,我們需要包含各種情境下的動物圖像,比如以下因素:

【物種多樣性】:確保訓練集中涵蓋多種不同種類的貓和狗,而不僅僅是某一特定品種。例如,包括短毛貓和長毛貓,各類狗的品種也要有廣泛覆蓋。

【背景和環境】:圖像中的背景和環境對于模型的泛化至關重要。訓練集應該包含不同的背景,例如室內、室外、草地、水域等,以確保模型不僅僅是學到了特定背景下的特征。

【姿勢和動作】: 動物在圖像中的不同姿勢和動作也是代表性的一部分。包括站立、躺下、奔跑等動作,以及正面、側面等不同的拍攝角度所呈現的圖像。

【光照條件】: 不同的光照條件會影響圖像的外觀,因此訓練集應該包含,例如陽光明媚、陰天、夜晚等不同光照條件下的樣本。

【年齡和大小】:動物的不同年齡和大小也是重要的代表性樣本。包含幼年和成年階段,以及不同體型大小的貓和狗。

所以,為了確保模型在處理真實世界圖像時能夠實現更加精準的分類,我們最好提供一個涵蓋各種情景的樣本數據集。

因此,在構建訓練集時,我們應當注重數據的代表性,幫助模型學到更全面的特征,提高模型在實際應用中的性能和可靠性,使其更好地適應和處理多樣化的真實場景。

2. 訓練集中的樣本數量需足夠大

除了訓練集的代表性以外,樣本數量也是至關重要的。在實際應用中,我們通常會發現,隨著訓練集樣本數量的增加,模型的性能也會得到相應的提高。

我們發現,當訓練集樣本數量較小時,模型更容易受到隨機變動的影響,導致模型對訓練數據過于敏感,難以捕捉真實的數據分布。相反,大規模訓練集則有助于降低隨機性,使模型更穩健。

假設我們想讓AI模型完成一個分類任務,比如訓練一個神經網絡來識別手寫數字。

如果訓練集只包含幾十個圖像,而且這些圖像中只有很少的數字樣本,那模型可能只能學到非常有限的特征,無法泛化到新的手寫數字。也就是說,因為數據量過少,模型將無法成功完成手寫數字的識別任務。

相反,如果我們有數萬張包含各種手寫數字的圖像,模型將有更多機會學到數字的共同特征,從而提高其在未見過的數據上的表現。這時候,給它一個新的手寫數字圖片,它就可以成功識別了。

3. 訓練集中的數據質量是關鍵

高質量的訓練數據能幫助模型更準確地把握數據的真實分布,從而提升模型在處理未知數據時的表現。

訓練集中的質量關注點會落在標簽的準確性,圖像質量,數據異常值或噪聲,數據采樣偏差,數據來源一致性等方面。

如果標簽有誤,模型將學到錯誤的關系,影響其泛化能力。

假設需要AI模型完成一個醫學圖像識別的任務,如果圖像標簽錯誤地標注了病變類型,模型可能會對患者的健康狀況做出錯誤的預測。

如果訓練集包含錯誤的數據,模型可能會學到不準確的模式。

例如,在圖像分類任務中,如果識別貓狗的圖像中,出現了其他動物的圖片,模型就會因訓練不到位,產生不準確的分類結果。

不只是錯誤數據,低質量的數據也不行。

如果識別貓狗的圖像訓練集中,大都是模糊的,分辨率低的,光線暗的,邊緣不清晰的圖片。那么最后模型的預測性能也不會好到哪里去。

還有哦,數據集中的采樣偏差也可能導致模型在某些類別上表現較差。

如果訓練集中某個類別的樣本數量遠遠超過其他類別,模型可能會偏向于學習這個類別,而對其他類別的分類效果較差。

在金融欺詐檢測中,如果正常交易的數量遠遠超過欺詐交易,模型可能更難捕捉欺詐交易的模式。

最后一點,如果訓練集包含來自不同來源的數據,數據之間的不一致性可能導致模型性能下降。

例如,在自動駕駛領域,如果訓練數據來自于不同城市或天氣條件下的駕駛場景,模型可能在特定城市場景下的泛化能力較差。

4. 訓練集模擬案例-貓貓識別模型

說了這么多,我們不妨來一個模擬案例-貓貓識別模型

此刻,我們腦暴一下,如果我們要訓練一個識別貓的圖像分類模型,我們該如何準備訓練集數據呢?

首先,圖片的數量不能少。我們至少要準備上萬張圖片,確保模型可以更全面地學習到貓的特征差異。

同時,我們在收集圖片時,還需要注重圖片的代表性。也就是說訓練集應該包含各種各樣的貓的圖片。

這意味著我們不僅需要收集不同品種、年齡和顏色的貓的圖片,還要收集正面、側面、背面以及俯視和仰視角度的貓的圖片。

此外,我們還需要收集在不同光照條件下拍攝的貓的圖片,如自然光、室內燈光和夜晚等。同時,還應該收集各種背景環境的貓的圖片,如草地、沙灘、街道等。

有了一定數量和代表性的圖片后,在質量方面也不能忽視。因此,在收集圖片時,我們需要確保訓練集中的每一張圖片都是高清的、無模糊或失真的,并且盡量避免使用過度處理或有濾鏡效果的圖片。

在圖片中,貓的毛發、眼睛、耳朵等特征都是模型學習的重要依據,而高清圖片能夠為模型提供更豐富的細節信息。

如果圖片質量較差,這些特征可能會被模糊或者丟失,導致模型無法準確識別。因此,在收集訓練數據時,我們應盡量選擇分辨率較高的圖片,以便模型能夠捕捉到更多的細節。

還有一點,我們可以在收集訓練數據時,要盡量拿到無噪聲的圖片。因為無噪聲的圖片有助于提高模型的學習效率。

在實際場景中,拍攝環境可能受到光線、設備等因素的影響,導致圖片存在一定的噪聲。這些噪聲會對模型的學習產生干擾,降低訓練效果。

為了解決這個問題,要盡量選擇光線充足、設備穩定的環境進行拍攝,或者通過后期處理技術去除圖片中的噪聲。

此外,我們還需要關注圖片的色彩平衡和對比度。色彩平衡是指圖片中各種顏色的分布是否均勻,對比度是指圖片中明暗區域的對比程度。

一個具有良好色彩平衡和對比度的圖片,能夠更準確地反映貓的顏色和紋理信息,有助于模型進行準確的識別。因此,在進行圖片收集時,我們應盡量選擇色彩平衡且對比度適中的圖片,以提高模型的學習效果。

還有非常關鍵的一環,當我們準備好了合適的圖庫后,我們需要關注每張圖像是否添加了正確的標簽。正確的標簽會告訴模型,圖像中是否真的包含貓。這是模型能正確訓練的前提。

最后,我們將圖片庫數據進行劃分,通常會劃分出60%~80%左右的數量比例用于訓練集中。剩下的劃分到驗證集和測試集中。

是不是覺得,機器識別圖片和我們人類識別圖片,有很大的差異呢?連準備訓練數據都有那么多注意事項,這和我們隨便拿一張有貓的圖片教小孩識別圖中的貓,還是很不一樣的。

二、輔導員角色:驗證集(Validation Set)

在機器學習中,訓練集是用來訓練模型的數據,而驗證集通常是從原始數據集中劃分出來的一個子集,用于在訓練過程中檢查模型的性能,是在過擬合或欠擬合的情況下對模型進行評估和調整的數據。

驗證集的主要目的是為了找到一個最佳的模型及參數,使得模型在未知數據上的表現最好。

之前提到,訓練集一般會占用60%或80%的比例,對應的驗證集則一般會占用20%或10%的比例。劃分比例的依據可以根據實際需求和數據集的大小來確定。

通常情況下,我們可以使用隨機抽樣的方法從原始數據集中劃分驗證集。

驗證集在整個模型訓練的過程中起著關鍵的作用,我們從幾個方面出發,聊聊其重要性。

1. 調整模型的超參數

在機器學習模型中,有許多超參數需要我們參與設置,例如學習率、隱藏層神經元數量等。這些超參數的選擇對模型的性能有很大影響。

為了找到最優的超參數組合,我們可以將訓練過程分為多個階段,每個階段使用不同的超參數組合進行訓練。然后,我們可以使用驗證集來評估每個階段模型的性能,從而選擇出最優的超參數組合。

BTW,補充一個知識點,關于模型參數和模型超參數,是怎么回事。

在機器學習中,模型參數是模型內部的配置變量,它們是在建模過程中通過數據自動學習得到的。例如,在線性回歸或邏輯回歸模型中,這些參數對應于方程中的系數;在支持向量機中,它們是支持向量;在神經網絡中,則是連接不同層之間的權重。這些參數的學習是模型訓練的核心,旨在捕捉數據中的模式和關系。

相對地,模型超參數是模型外部的配置變量,它們不是從數據中學習得到的,而是由研究人員或數據科學家根據先驗知識和經驗預先設定的。超參數包括學習率、迭代次數、網絡層數、隱藏單元的數量等,它們對模型的性能和訓練過程有顯著影響。正確的超參數選擇對于獲得高效的模型至關重要,通常需要通過實驗和調優來確定最佳值。

2. 早停策略

在訓練過程中,如果我們發現模型在驗證集上的性能不再提高時,可以提前停止訓練。

具體來說,我們可以設置一個小的閾值,當模型在連續多個迭代周期內,驗證集上的誤差沒有降低到這個閾值以下時,我們就認為模型已經收斂,可以停止訓練。

這樣既可以節省訓練時間,也可以降低不必要的成本。

3. 防止過擬合

過擬合是機器學習中的一個常見問題,指的是模型在訓練集上表現很好,但在測試集上表現較差的現象。這是因為模型過于復雜,學習到了訓練集中的一些噪聲和異常數據。

為了解決這個問題,我們可以使用驗證集來監控模型在訓練過程中的性能。

如果發現模型在訓練集上的表現越來越好,但在驗證集上的表現越來越差,那么我們可以考慮減少模型的復雜度或者增加正則化項,以防止過擬合的發生。

4. 對比不同模型結構

我們可以通過對比不同模型結構在驗證集上的性能,選擇最適合任務的模型結構。

這有助于避免選擇過于簡單或過于復雜的模型,從而提高模型的實際效果。

比如,比較卷積神經網絡(CNN) 和循環神經網絡(RNN) 在情感分析任務上的性能。通過觀察它們的表現,選擇更適合處理文本數據的模型結構。

5. 驗證集模擬案例-貓貓識別模型

了解了驗證集后,我們趁熱打鐵,繼續貓貓識別模型的模擬案例。

為了有效完成貓的圖像識別任務,我們假設已經選擇好了一個合適的圖像分類模型:卷積神經網絡(CNN)。

在訓練CNN模型時,我們需要設置一些超參數,如學習率、批次大小、迭代次數等。

一般來說,我們可以先設置一個較大的學習率,然后逐漸減小,以加快收斂速度。

批次大小和迭代次數的選擇則需要根據具體任務和計算資源來確定。

在模型的訓練過程中,我們需要周期性地使用驗證集來評估模型在未見過的數據上的表現。這有助于檢測模型是否過擬合訓練,泛化能力如何等等。

評估性能時,我們會用到一些數據指標。最常用的指標是準確率(accuracy),即正確分類的樣本數占總樣本數的比例。

此外,我們還可以使用其他指標,如精確率(precision)、召回率(recall)和F1分數(F1-score)等,以便更全面地了解模型的性能。這些指標可以反映CNN模型對新的貓圖片數據的分類能力。

BTW,關于這些指標的詳細解釋,我在本篇《產品經理的獨門技能—AI監督學習(6000字干貨)》中有進一步的介紹,感興趣的朋友也可以去看看。

通過驗證集的指標反饋,我們會觀測到一些問題。

如果模型在某一類別上的準確率較低,可能說明該類別的訓練樣本較少或者特征不夠明顯。

針對這種情況,我們可以嘗試增加該類別的訓練樣本或者調整模型結構。

此外,我們還需要注意數據的過擬合現象。

如果出現過擬合問題,我們可以采用增加數據量、簡化模型、正則化技術等方法來解決。

最后,我們還需要關注驗證集的損失函數(loss function)。損失函數用于衡量模型預測結果與真實結果之間的差距。

損失函數的值越小,越意味著模型的預測結果與真實結果更接近?!?a href="http://www.sourcecodegenetics.com/ai/5974002.html" target="_blank" rel="noopener">萬字干貨)如何訓練優化“AI神經網絡”模型?》中有對損失函數的展開介紹。

總體而言,驗證集的使用是一個迭代的調優過程,它會輔助我們觀測和調整CNN模型,以確保模型能夠有效學習和區分貓的特征,提高CNN模型在實際應用中識別貓圖像的準確性和可靠性。

至此,我們可以說,算是完成了CNN模型在驗證集上的訓練調優。

溫馨提示,在使用驗證集時,我們還需要注意一些問題。

首先,我們不能在驗證集上進行多次迭代,否則驗證集就變成了一個“小訓練集”。就可能會導致信息泄露,使得模型過分適應驗證集的數據分布,從而失去了泛化能力。

還需注意的是,為了避免信息泄露。驗證集中的數據應該是模型在訓練過程中沒有見過的,以真實地模擬模型在實際應用中的性能。

三、考官角色:測試集(Test Set)

現在,我們已經知道了驗證集主要用于在訓練過程中對模型進行評估和調整。

那它能保證模型在未來的未知數據上具有良好的性能嗎?

為了找到這個答案,我們在驗證集訓練完成后,還需要進行測試,以進一步評估模型的泛化能力。

這時候,測試集就要閃亮登場了。

它扮演著模型性能的“考官”角色,它的考核結果將幫助我們衡量模型是否真正學會了我們需要它學習的知識。

測試集也是從原始數據集中分離出來的一部分數據,但它不參與模型的訓練過程。它是一個獨立的數據集,其中的數據樣例是模型在實際應用中首次遇到的數據,之前素未謀面。

測試集在整個模型訓練的過程中,無論是評估模型泛化能力,還是發現潛在問題,又或者是幫助模型優化和調參等方面,都起到了重要的作用。

下面我們來展開討論一下測試集在整個數據集中起到了什么作用?

1. 評估模型的泛化能力

測試集的最大價值之一是用于評估模型的泛化能力,以衡量模型在未知數據上的表現。

在AI模型訓練過程中,我們往往會在訓練集上看到很好的表現。

然而,這并不意味著模型已經真正掌握了知識,能夠在新遇到的數據上同樣表現優秀。為了驗證這一點,我們需要借助測試集來進行評估。

通過測試集,我們可以得到模型在真實世界中的泛化能力,而不僅僅是在訓練數據上的記憶能力。

我們的目標不僅僅是讓模型在訓練中取得高分,而是要確保它能夠靈活應對新的挑戰。

2. 發現潛在問題

測試集會幫助我們發現模型的潛在問題,比如,發現模型不穩定。

正常來說,在不同時間或不同環境下,模型在測試集上的性能應該保持相對一致。

又或者,發現數據質量不一致性的問題,測試集中出現了與訓練集不同的數據分布或標簽分布。

測試集還可以用于評估模型對于異常情況的處理能力。

在真實場景中,模型可能會面對不同于訓練數據的情形,如噪聲、異常值或極端情況。

測試集的設計可以包含這些異常情況,幫助評估模型的魯棒性和處理能力。

一個魯棒性強的模型能夠在各種條件下都能穩定地工作,而不會因為某些小的變化或者噪聲而導致性能大幅下降。

例如,一個用于自動駕駛汽車的圖像識別模型,即使在雨天、霧天或者光照不足的情況下,也能夠準確地識別出物體,我們就可以說這個模型的魯棒性很強。

因此,通過測試集,我們能發現模型的潛在問題和缺陷,也有助于我們及時對模型進行調整和改進。

3. 模型調優

測試集的結果為我們提供了寶貴的反饋,它們是優化模型和調整參數的客觀依據。

通過分析測試集的表現,我們可以確定最佳的模型結構和參數設置。

例如,我們可以根據測試集的準確率來調整神經網絡的層數、每層的神經元數量以及激活函數等關鍵參數。

如果測試結果顯示,使用卷積神經網絡(CNN)和特定參數配置時,模型的表現最為出色,那么我們很可能會選擇這個配置作為我們的最終模型。

這樣的選擇會更靠譜和可信。因為它是基于測試集上實際的數據反饋,而不是僅僅依賴于訓練集上的性能來確定模型是否具有良好的泛化能力。

4. 防止過擬合

測試集可以幫助我們檢測模型是否過擬合。當模型在訓練集和驗證集上表現良好,但在測試集上表現不佳時,這可能是一個警示信號。

打個比方,假設我們有一個信貸審批模型,它在訓練和驗證階段都展現出了很高的準確率,但在測試階段準確率卻明顯降低。

這種情況通常意味著模型對訓練數據過于敏感,沒有很好地泛化到新數據上。

我們需要采取一些措施,如簡化模型結構或引入正則化方法來減少過擬合的風險。

最后,在整個AI項目中,我們也要注意做好數據隔離,保證數據獨立性,避免在處理過程中將測試集的信息泄露到訓練集中。

我們需要確保AI遇見的測試集中的數據都是新面孔。

5. 測試集模擬案例-貓貓識別模型

我們繼續貓貓識別模型的模擬案例,說說測試集的使用。

照例,要先做好數據準備和數據劃分。通常,測試集占原始數據集的10%至20%。

數據劃分時要確保數據分布的一致性,以便在不同階段的模型訓練和評估中能夠準確地反映出模型的性能。

然后,我們將經歷過訓練集和驗證集考驗后的模型,引入測試集進行訓練并觀測,通過數據指標來進行評估。

我們可以重點關注準確率和損失函數這兩個值,準確率表示模型在識別貓圖像時的正確率,損失函數表示模型在預測貓圖像時的誤差。

根據測試集反饋的指標結果,我們可以知曉模型是否能夠準確地識別圖像中的貓。

比如當出現新的貓的姿勢、顏色和背景時,當圖片的光照和清晰度水準不一時,模型是否都能認出圖中有貓。

當模型經過測試集的檢驗后,我們最后要做的,就是完成模型部署。

我們將表現最好的貓貓圖像識別模型部署到實際應用中。例如,我們可以將這個模型應用于智能監控系統,自動識別和追蹤攝像頭范圍內的貓。

四、總結與預告

以上,就是關于訓練集,驗證集,測試集的獨家介紹了。我將三者比喻成了教師、輔導員和考官,通過貓貓識別模型的模擬案例來展示了它們各自的能力。

訓練集為模型提供了學習的基礎,使得模型能夠從數據中學習到規律和特征。

正如,古人云:“授人以魚不如授人以漁”,訓練集就是那個“漁”,它為模型提供了學習的方法和途徑。

驗證集的作用在于調整模型的超參數,防止過擬合,采用早停策略,以及對比不同模型結構。

通過驗證集,我們能夠在訓練過程中及時發現模型的問題,并采取相應的措施進行調整。

恰似,“他山之石,可以攻玉”,驗證集就是那個“他山之石”,它幫助我們發現問題,改進模型。

測試集是對模型最終性能的評估,它能夠客觀地反映模型的泛化能力。

可謂,“路遙知馬力,日久見人心”,測試集就是那個“路遙”探測器,它能夠檢驗模型的真正實力。

“工欲善其事,必先利其器”,訓練集、驗證集和測試集就是我們構建和評估模型的“利器”。

充分利用好它們,我們可以構建出性能優秀、泛化能力強的模型,在人工智能的發展中,抓住機遇,收獲成功。

預告一下,AI數據集的內容我還沒說完。

下一篇章我會嘮嘮“訓練集,驗證集,測試集”的區別和聯系,也會說一些目前國內數據集的現狀、挑戰和應對之策。

作者:果釀,公眾號:果釀產品說

本文由 @果釀 原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自 Unsplash,基于CC0協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!