本文由 沈慶陽 所有,轉(zhuǎn)載請與作者取得聯(lián)系!
在繼續(xù)下去之前,我們需要提一下泛化。
泛化和過擬合
泛化(Generalization),指的是模型可以很好地擬合新的數(shù)據(jù)(以前不曾出現(xiàn)過的)。針對某些問題,我們可以僅僅使用一條直線來分類。雖然有一些數(shù)據(jù)可能不會很好地將所有的樣本都正確分類,但我們提倡這樣做。
如果將樣本用十分復(fù)雜的模型進(jìn)行分類,也許會產(chǎn)生十分復(fù)雜的曲線,這些曲線可以做到百分百地將樣本中的所有樣本進(jìn)行正確的分類。但這樣就是最好的么?當(dāng)我們對新的數(shù)據(jù)進(jìn)行預(yù)測的時候,往往會發(fā)現(xiàn)并不如此。這個復(fù)雜的模型對新的數(shù)據(jù)預(yù)測或許會十分糟糕,這就是過擬合。
機(jī)器學(xué)習(xí)的目標(biāo)是對真實(shí)的概率分布做出正確的預(yù)測。我們在訓(xùn)練的過程中,這個概率分布是未知的。在機(jī)器學(xué)習(xí)領(lǐng)域,奧卡姆剃刀定律解釋如下:
機(jī)器學(xué)習(xí)模型越簡單,良好的結(jié)果就越可能不僅僅基于樣本的特性。

對于機(jī)器學(xué)習(xí)來說,我們需要使用以前從未見過的數(shù)據(jù)來進(jìn)行預(yù)測。那么如何獲得這些數(shù)據(jù)呢?目前通常采用的方法是將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。
訓(xùn)練集和測試集
我們在前面完成Object Detection的項目,訓(xùn)練自己的模型的時候獲取過大量的照片,這些照片就是我們的數(shù)據(jù)集(DataSet)。同時,我們將數(shù)據(jù)集分為了訓(xùn)練集(Training Set)和測試集(Test Set)。讓我們再來回顧一下訓(xùn)練集和測試集的概念。

訓(xùn)練集:用于訓(xùn)練模型的子集。
測試集:用于測試訓(xùn)練后模型的子集。
當(dāng)把數(shù)據(jù)集劃分為訓(xùn)練集和測試集的時候,我們的模型訓(xùn)練的流程是這樣的。在每一次迭代的過程中,我們先通過訓(xùn)練集的數(shù)據(jù)對模型進(jìn)行訓(xùn)練,而后通過測試集來對該模型進(jìn)行測試,并以測試結(jié)果作為指導(dǎo)來調(diào)整模型的各種超參數(shù)。
請大家根據(jù)這個流程思考一下該流程可能存在哪些問題?還有沒有可以改進(jìn)的空間?

對于訓(xùn)練集,訓(xùn)練集的規(guī)模越大,我們訓(xùn)練的模型的學(xué)習(xí)效果就越好。對于測試集,測試集的規(guī)模越大,我們對于評估指標(biāo)的信息就越充足。通常,測試集與訓(xùn)練集的比例在1:9左右。但這個比例僅僅提供參考,在實(shí)際應(yīng)用中仍然要應(yīng)變。
對于測試集的選擇有如下要求:1、規(guī)模足夠大 2、能代表整個數(shù)據(jù)集
此外,千萬不要將測試集的數(shù)據(jù)混入訓(xùn)練集當(dāng)中,也就是說錯誤地對測試集進(jìn)行了訓(xùn)練。如果發(fā)現(xiàn)訓(xùn)練模型測試的準(zhǔn)確度達(dá)到了100%,請不要開始慶祝,先找一下你的訓(xùn)練集中是不是混入了測試集的數(shù)據(jù)吧。
驗(yàn)證:另一種劃分
對于僅僅將數(shù)據(jù)集分為訓(xùn)練集和測試集的流程,我們可以發(fā)現(xiàn),通過一次次的使用測試集對模型進(jìn)行測試,會造成不自覺地過擬合測試集數(shù)據(jù)的風(fēng)險(畢竟是以測試集的測試結(jié)果來作為參考調(diào)整模型的超參數(shù))。那么有沒有一種更好的劃分方法呢?
有!那就是引入另一個名為驗(yàn)證集的數(shù)據(jù)集,這些數(shù)據(jù)成為驗(yàn)證數(shù)據(jù)。

在這個流程中,我們暫且不使用任何測試數(shù)據(jù)。在每一次迭代的時候,每一次驗(yàn)證的時候,每一次調(diào)整超參數(shù)的時候僅根據(jù)驗(yàn)證數(shù)據(jù)來得到較好的結(jié)果。此時再根據(jù)驗(yàn)證集得到的模型來代入測試集的數(shù)據(jù)進(jìn)行測試。如果這時候模型通過了測試集的測試(與驗(yàn)證集測試的結(jié)果同樣好)。那么這次訓(xùn)練便是成功地。如果通過了驗(yàn)證集的測試,卻沒有通過測試集的測試,那么便可知我們對驗(yàn)證集進(jìn)行了過擬合。

后繼
在后續(xù)的幾篇文章中,我們將通過Tensorflow的實(shí)戰(zhàn),從頭開始幾個機(jī)器學(xué)習(xí)的小項目,并在實(shí)戰(zhàn)中講解前幾堂課所學(xué)習(xí)的知識。
覺得寫的不錯的朋友可以點(diǎn)一個 喜歡? ~
謝謝你的支持!