機器學習策略篇:詳解理解人的表現(Understanding human-level performance)

Oten發表於2024-05-30

理解人的表現

人類水平表現這個詞在論文裡經常隨意使用,但現在告訴這個詞更準確的定義,特別是使用人類水平表現這個詞的定義,可以幫助推動機器學習專案的進展。還記得上個部落格中,用過這個詞“人類水平錯誤率”用來估計貝葉斯誤差,那就是理論最低的錯誤率,任何函式不管是現在還是將來,能夠到達的最低值。先記住這點,然後看看醫學影像分類例子。

假設要觀察這樣的放射科影像,然後作出分類診斷,假設一個普通的人類,未經訓練的人類,在此任務上達到3%的錯誤率。普通的醫生,也許是普通的放射科醫生,能達到1%的錯誤率。經驗豐富的醫生做得更好,錯誤率為0.7%。還有一隊經驗豐富的醫生,就是說如果有一個經驗豐富的醫生團隊,讓他們都看看這個影像,然後討論並辯論,他們達成共識的意見達到0.5%的錯誤率。所以想問的問題是,應該如何界定人類水平錯誤率?人類水平錯誤率3%,1%, 0.7%還是0.5%?

要回答這個問題,想請記住,思考人類水平錯誤率最有用的方式之一是,把它作為貝葉斯錯誤率的替代或估計。如果願意,也可以暫停部落格,思考一下這個問題。

但這裡就直接給出人類水平錯誤率的定義,就是如果想要替代或估計貝葉斯錯誤率,那麼一隊經驗豐富的醫生討論和辯論之後,可以達到0.5%的錯誤率。知道貝葉斯錯誤率小於等於0.5%,因為有些系統,這些醫生團隊可以達到0.5%的錯誤率。所以根據定義,最優錯誤率必須在0.5%以下。不知道多少更好,也許有一個更大的團隊,更有經驗的醫生能做得更好,所以也許比0.5%好一點。但是知道最優錯誤率不能高於0.5%,那麼在這個背景下,就可以用0.5%估計貝葉斯錯誤率。所以將人類水平定義為0.5%,至少如果希望使用人類水平錯誤來分析偏差和方差的時候,就像上個部落格那樣。

現在,為了發表研究論文或者部署系統,也許人類水平錯誤率的定義可以不一樣,可以使用1%,只要超越了一個普通醫生的表現,如果能達到這種水平,那系統已經達到實用了。也許超過一名放射科醫生,一名醫生的表現,意味著系統在一些情況下可以有部署價值了。

要點是,在定義人類水平錯誤率時,要弄清楚的目標所在,如果要表明可以超越單個人類,那麼就有理由在某些場合部署的系統,也許這個定義是合適的。但是如果您的目標是替代貝葉斯錯誤率,那麼這個定義(經驗豐富的醫生團隊——0.5%)才合適。

要了解為什麼這個很重要,來看一個錯誤率分析的例子。比方說,在醫學影像診斷例子中,訓練錯誤率是5%,開發錯誤率是6%。而在上個例子中,人類水平表現,將它看成是貝葉斯錯誤率的替代品,取決於是否將它定義成普通單個醫生的表現,還是有經驗的醫生或醫生團隊的表現,可能會用1%或0.7%或0.5%。同時也回想一下,前面部落格中的定義,貝葉斯錯誤率或者說貝葉斯錯誤率的估計和訓練錯誤率直接的差值就衡量了所謂的可避免偏差,這(訓練誤差與開發誤差之間的差值)可以衡量或者估計的學習演算法的方差問題有多嚴重。

所以在這個第一個例子中,無論做出哪些選擇,可避免偏差大概是4%,這個值想介於……,如果取1%就是4%,如果取0.5%就是4.5%,而這個差距(訓練誤差與開發誤差之間的差值)是1%。所以在這個例子中,得說,不管怎麼定義人類水平錯誤率,使用單個普通醫生的錯誤率定義,還是單個經驗豐富醫生的錯誤率定義或經驗豐富的醫生團隊的錯誤率定義,這是4%還是4.5%,這明顯比都比方差問題更大。所以在這種情況下,應該專注於減少偏差的技術,例如培訓更大的網路。

現在來看看第二個例子,比如說的訓練錯誤率是1%,開發錯誤率是5%,這其實也不怎麼重要,這種問題更像學術界討論的,人類水平表現是1%或0.7%還是0.5%。因為不管使用哪一個定義,測量可避免偏差的方法是,如果用那個值,就是0%到0.5%之前,對吧?那就是人類水平和訓練錯誤率之前的差距,而這個差距是4%,所以這個4%差距比任何一種定義的可避免偏差都大。所以他們就建議,應該主要使用減少方差的工具,比如正則化或者去獲取更大的訓練集。

什麼時候真正有效呢?

就是比如的訓練錯誤率是0.7%,所以現在已經做得很好了,的開發錯誤率是0.8%。在這種情況下,用0.5%來估計貝葉斯錯誤率關係就很大。因為在這種情況下,測量到的可避免偏差是0.2%,這是測量到的方差問題0.1%的兩倍,這表明也許偏差和方差都存在問題。但是,可避免偏差問題更嚴重。在這個例子中,在上一張幻燈片中討論的是0.5%,就是對貝葉斯錯誤率的最佳估計,因為一群人類醫生可以實現這一目標。如果用0.7代替貝葉斯錯誤率,測得的可避免偏差基本上是0%,那就可能忽略可避免偏差了。實際上應該試試能不能在訓練集上做得更好。

在這個例子中,一旦接近0.7%錯誤率,除非非常小心估計貝葉斯錯誤率,可能無法知道離貝葉斯錯誤率有多遠,所以應該儘量減少可避免偏差。事實上,如果只知道單個普通醫生能達到1%錯誤率,這可能很難知道是不是應該繼續去擬合訓練集,這種問題只會出現在的演算法已經做得很好的時候,只有已經做到0.7%,
0.8%, 接近人類水平時會出現。

而在左邊的兩個例子中,當遠離人類水平時,將最佳化目標放在偏差或方差上可能更容易一點。這就說明了,為什麼當接近人類水平時,更難分辨出問題是偏差還是方差。所以機器學習專案的進展在已經做得很好的時候,很難更進一步。

總結一下講到的,如果想理解偏差和方差,那麼在人類可以做得很好的任務中,可以估計人類水平的錯誤率,可以使用人類水平錯誤率來估計貝葉斯錯誤率。所以到貝葉斯錯誤率估計值的差距,告訴可避免偏差問題有多大,可避免偏差問題有多嚴重,而訓練錯誤率和開發錯誤率之間的差值告訴方差上的問題有多大,的演算法是否能夠從訓練集泛化推廣到開發集。

今天和之前部落格中的重大區別是,以前比較的是訓練錯誤率和0%,直接用這個值估計偏差。相比之下,在這個部落格中,有一個更微妙的分析,其中並沒有假設應該得到0%錯誤率,因為有時貝葉斯錯誤率是非零的,有時基本不可能做到比某個錯誤率閾值更低。所以在之前的部落格中,測量的是訓練錯誤率,然後觀察的是訓練錯誤率比0%高多少,就用這個差值來估計偏差有多大。而事實證明,對於貝葉斯錯誤率幾乎是0%的問題這樣就行了,例如識別貓,人類表現接近完美,所以貝葉斯錯誤率也接近完美。所以當貝葉斯錯誤率幾乎為零時,可以那麼做。但資料噪點很多時,比如背景聲音很嘈雜的語言識別,有時幾乎不可能聽清楚說的是什麼,並正確記錄下來。對於這樣的問題,更好的估計貝葉斯錯誤率很有必要,可以幫助更好地估計可避免偏差和方差,這樣就能更好的做出決策,選擇減少偏差的策略,還是減少方差的策略。

回顧一下,對人類水平有大概的估計可以讓做出對貝葉斯錯誤率的估計,這樣可以讓更快地作出決定是否應該專注於減少演算法的偏差,或者減少演算法的方差。這個決策技巧通常很有效,直到的系統效能開始超越人類,那麼對貝葉斯錯誤率的估計就不再準確了,但這些技巧還是可以幫做出明確的決定。

相關文章