【導讀】對於機器學習而言,獲取數據的成本有時會非常昂貴,因此為模型選擇一個合理的訓練數據規模,對於機器學習是至關重要的。在本文中,作者針對線性回歸模型和深度學習模型,分別介紹了確定訓練數據集規模的方法。
數據是否會成為新時代的「原油」是人們近來常常爭論的一個問題。
無論爭論結果如何,可以確定的是,在機器學前期,數據獲取成本可能十分高昂(人力工時、授權費、設備運行成本等)。因此,對於機器學習的一個非常關鍵的問題是,確定能使模型達到某個特定目標(如分類器精度)所需要的訓練數據規模。
在本文中,我們將對經驗性結果和研究文獻中關於訓練數據規模的討論進行簡明扼要的綜述,涉及的機器學習模型包括回歸分析等基本模型,以及複雜模型如深度學習。訓練數據規模在文獻中也稱樣本複雜度,本文將對如下內容進行介紹:
針對線性回歸和計算機視覺任務,給出基於經驗確定訓練數據規模的限制;
討論如何確定樣本大小,以獲得更好的假設檢驗結果。雖然這是一個統計問題,但是該問題和確定機器學習訓練數據集規模的問題很相似,因此在這裡一併討論;
對影響訓練數據集規模的因素,給出基於統計理論學習的結果;
探討訓練集增大對模型表現提升的影響,並著重分析深度學習中的情形;
給出一種在分類任務中確定訓練數據集大小的方法;
探討增大訓練集是否是應對不平衡數據集的最好方式。
基於經驗確定訓練集規模的限制
首先,我們依據使用的模型類型,探討一些廣泛使用的經驗性方法:
回歸分析:依據統計學中的「十分之一」經驗法則(one-in-ten rule),每個預測器都需要使用 10 個實例訓練。這種經驗法則還有其他版本,例如用於解決回歸係數縮減問題的「二十分之一」規則(one-in-twenty rule)。最近,《Sample Size For Binary Logistic Prediction Models: Beyond Events Per Variable Criteria》一文中還提出了一種有趣的二元邏輯回歸變體。在該文中,作者通過預測器中變量的個數、總樣本量,以及正樣本量與總樣本量的比值,對訓練數據規模進行了估計。
計算機視覺:對於利用深度學習的圖像分類問題,根據「經驗法則」,建議每一個類別收集 1000 張圖像。如果使用預訓練模型,數據集的規模則可以大幅減少。
通過假設檢驗確定樣本規模
假設檢驗是數據科學常用的一種統計工具,一般也可以用於確定樣本規模。
舉個例子:某科技巨頭搬去 A 城後,A 城的房價便急劇上漲,而某記者想知道現在每套公寓的均價是多少。那麼問題來了,在保證 95% 的置信度,60 K 的公寓價格標準差,且價格誤差在10K 以內的條件下,計算多少棟公寓的均價較為合理?
相應公式見下圖,其中 N 為所需的樣本規模,1.96 為標準正態分布在 95% 置信度下所對應的常數:
樣本量估計
根據上述公式,該記者需要考慮大概 138 棟公寓的價格。
該公式將隨著檢驗問題的不同而改變,但是都要通過置信區間、可容忍誤差和標準差值來計算。
訓練數據規模的統計學習理論
我們先介紹一下著名的 VC 維(Vapnik-Chevronenkis dimension)。VC 維是一種模型複雜度的度量;模型越複雜,它的 VC 維就越高。下面介紹根據 VC 維來確定訓練數據規模的公式。
首先,通過一個例子來看一下 VC 維是如何計算的:假設一個二維平面上有三個點需要被分類,而我們的分類器為該平面上的一條直線。無論這三點怎樣組合(均為正例,兩正一負、一正兩負等),這條直線都能正確地將正負樣本歸類/分開。那麼,我們就認為一個線性分類器可以劃分這三點中的任意一點,因而它的 VC 維至少為 3。
另外,由於存在四個點的組合不能被一條直線準確分開,所以這個線性分類器的 VC 維為 3。可以證明,訓練數據規模 N 是 VC 維的一個函數:
由 VC 維估計訓練數據規模
其中 d 為失敗率, epsilon 為學習中的誤差率。由此可見,學習模型所需的樣本量取決於模型的複雜度。但該方法有一個弊端,就是在面對神經網絡顯著的複雜度時,會要求十分龐大的訓練數據規模。
當訓練集增大時,模型的表現會持續提升嗎?在深度學習任務又如何呢?
上圖展示了隨著數據規模的增長,傳統的機器學習算法(回歸等)和深度學習表現的變化。
具體來看,對於傳統的機器學習算法,模型的表現先是遵循冪定律(power law),之後趨於平緩;而對於深度學習,該問題還在持續不斷地研究中,不過圖一為目前較為一致的結論,即隨著數據規模的增長,深度學習模型的表現會按照冪定律持續提升。例如,有人曾用深度學習方法對三億張圖像進行分類,發現模型的表現隨著訓練數據規模的增長按對數關係提升。
值得注意的是,在深度學習中也有一些與上述例子不同的結果。比如,在《Learning Visual Features from Large Weakly Supervised Data》一文中,作者使用了一億條 Flickr 上的圖片和標籤來訓練卷積神經網絡,剛開始模型表現會隨著數據規模的增大而提升,但超過五千萬張圖片後模型的效果提升就不太明顯了。
文章《How Training Data Affect the Accuracy and Robustness of Neural Networks for Image Classification》的作者還發現,隨著訓練數據規模的增加,圖像分類的準確度確實會上升;但是,模型的魯棒性會在數據規模到達一定程度後開始下降。
分類任務中確定訓練數據集大小的方法
該方法基於我們所熟知的學習曲線,一般而言,學習曲線圖的縱軸為誤差,橫軸為訓練數據集大小。《 Tutorial: Learning Curves for Machine Learning in Python》和《Learning Curve》是很好的參考資料,可以用於進一步了解機器學習中的學習曲線,以及它們是如何隨著偏差或方差的增加而變化的。Python 在 scikit-learn 中提供了一種學習曲線函數。
在分類任務中,我們往往會使用學習曲線的一種輕微變體,在該曲線圖中,縱軸為分類準確度,橫軸為訓練數據集大小。訓練集規模的確定十分簡單:只需針對你的問題,先確定學習曲線的確切形狀,然後找到曲線上你預期的分類準確度所對應的訓練數據集大小即可。
例如,在文章《Predicting Sample Size Required for Classification Performance》和《How Much Data Is Needed to Train A Medical Image Deep Learning System to Achieve Necessary High Accuracy?》中,作者們將學習曲線的方法應用到了醫學領域,並且給出了一個相應的冪函數:
學習曲線公式
其中,y 為分類準確度,x 為訓練集,b1,b2 分別為學習率和衰減率。根據問題的不同,參數會有所不同,可以通過非線性回歸或加權非線性回歸對參數進行估計。
增大訓練集是應對不平衡數據集的最好方式?
文章《Precision-Recall Versus Accuracy and the Role of Large Data Sets》對該問題進行了討論。該文作者提出了一個很有意思的觀點:在不平衡的數據集下,準確度並不是一個分類器表現好壞的最佳度量。
原因很簡單,對於一個負樣本為主的數據集,模型往往通過將大部分樣本分類為負樣本,以提高準確度。為了更好地衡量模型效果,他們將準確率和召回率(又稱敏感性)作為不平衡數據集下度量模型表現的合理標準。
除了上述提到的關於準確度的問題,作者們還指出,對於存在不平衡數據的問題而言,模型的準確率往往對其更加重要。比如一個醫院的警報系統而言,高精確率就意味著當警鈴響起時,很有可能確實有病人遇到了麻煩。
之後,該文章分別使用較大的非平衡訓練集和不平衡學習包(imbalanced-learn, 基於Python scikit-learn)對模型進行了訓練,並使用準確率和召回率對訓練效果進行了分別的度量。
第一個模型使用了一個包含5萬個樣本的藥物研發數據,並構建了使用不平衡矯正方法的K-近鄰模型。第二個模型使用了一個包含大約100萬個樣本的數據集上,構建了一個簡單的K-近鄰模型。
其中,不平衡矯正方法包括欠採樣、過採樣和集成學習。文章作者重複了200次實驗,其結論為,當把精確率和召回率作為度量時,沒有任何一種不平衡矯正方法比增加更多訓練數據的效果更好。
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴