機器學習中的用于聲稱性能的指標標準很少被討論。由于在這個問題上似乎沒有一個明確的、廣泛的共識,因此我認為提供我一直在倡導并盡可能遵循的標準可能會很有趣。它源于這個簡單的前提,這是我的科學老師從中學開始就灌輸給我的:
科學報告的一般規(guī)則是,您寫下的每個數(shù)字都應為“真”的,因為“真”的定義是什么。
讓我們來研究一下這對測試性能等統(tǒng)計量意味著什么。當你在科學出版物中寫下以下陳述時:
測試準確率為52.34%。你所表達的是,據(jù)你所知,你的模型在從測試分布中提取的未見數(shù)據(jù)上成功的概率在0.52335和0.52345之間。
這是一個非常強有力的聲明。
考慮你的測試集是從正確的測試分布中抽取的N個樣本IID組成的。成功率可以表示為一個二項式變量,其平均概率p由樣本平均值估計:p?s/N
其標準差為:σ=√p(1-p)。
其中當p=0.5時,其上限為0.5。
在正態(tài)近似下,估計量的標準差為:δ=σ/√N。
這個精度估計上的誤差δ是這樣的,在最壞的情況下,有約50%的精度:
換句話說,為了保證上述報告中例子52.34%的準確率,你的測試集的大小至少應該在30M樣本的數(shù)量級上!這種粗略的分析很容易轉化為除了準確率以外的任何可計算的數(shù)量,盡管不能轉化為像似然率或困惑度這樣的連續(xù)數(shù)字。
下面是一些常見的機器學習數(shù)據(jù)集的說明。
在ImageNet上可以合理地報告多少位數(shù)的精度?準確率在80%左右,測試集是15萬張圖片:
√(0.8*0.2/150000)=0.103%
這意味著你幾乎可以報告XX.X%的數(shù)字,而實際上每個人都是這樣做的。
MNIST呢,準確率在99%:
√(0.99*0.01/10000)=0.099%
噗,也報個XX.X%就OK了!
然而,最值得注意的是,在大多數(shù)情況下,性能數(shù)據(jù)并不是單獨呈現(xiàn)的,而是用來比較同一測試集上的多種方法。在這種情況下,實驗之間的抽樣方差會被抵消,即使在樣本量較小的情況下,它們之間的準確度差異也可能在統(tǒng)計學上很顯著。估計圖方差的一個簡單方法是執(zhí)行bootstrap重采樣。更嚴格、通常更嚴格的檢驗包括進行配對差異檢驗或更普遍的方差分析。
報告超出其內在精度的數(shù)字可能很具有極大的吸引力,因為在與基線進行比較的情況下,或者當人們認為測試集是一成不變的情況下,同時也不是從測試分布中抽取的樣本時,性能數(shù)字往往更加重要。當在生產中部署模型時,這種做法會讓人感到驚訝,并且固定的測試集假設突然消失了,還有一些無關緊要的改進。更普遍的是,這種做法會直接導致對測試集進行過擬合。
那么,在我們的領域中數(shù)字為“真”意味著什么?好吧,這確實很復雜。對于工程師而言,很容易辯稱不應該報告的尺寸超出公差。或者對于物理學家來說,物理量不應超過測量誤差。對于機器學習從業(yè)者,我們不僅要應對測試集的采樣不確定性,而且還要應對獨立訓練運行,訓練數(shù)據(jù)的不同初始化和改組下的模型不確定性。
按照這個標準,在機器學習中很難確定哪些數(shù)字是“真”的。解決辦法當然是盡可能地報告其置信區(qū)間。置信區(qū)間是一種更精細的報告不確定性的方式,可以考慮到所有隨機性的來源,以及除簡單方差之外的顯著性檢驗。它們的存在也向你的讀者發(fā)出信號,表明你已經考慮過你所報告的內容的意義,而不僅僅是你的代碼所得到的數(shù)字。用置信區(qū)間表示的數(shù)字可能會被報告得超出其名義上的精度,不過要注意的是,你現(xiàn)在必須考慮用多少位數(shù)來報告不確定性,正如這篇博文所解釋的那樣。一路走來都是烏龜。
數(shù)字少了,雜亂無章的東西就少了,科學性就強了。
避免報告超出統(tǒng)計學意義的數(shù)字結果,除非你為它們提供一個明確的置信區(qū)間。這理所當然地被認為是科學上的不良行為,尤其是在沒有進行配對顯著性測試的情況下,用來論證一個數(shù)字比另一個數(shù)字好的時候。僅憑這一點就經常有論文被拒絕。一個良好的習慣是對報告中帶有大量數(shù)字的準確率數(shù)字始終持懷疑態(tài)度。還記得3000萬、30萬和30萬的經驗法則對最壞情況下作為“嗅覺測試”的統(tǒng)計顯著性所需樣本數(shù)量的限制嗎?它會讓你避免追逐統(tǒng)計上的“幽靈”。
責任編輯:YYX
-
機器學習
+關注
關注
66文章
8425瀏覽量
132773
發(fā)布評論請先 登錄
相關推薦
評論