編譯|新智元 肖琴 鵬飛
最近,一個新的大型CT腦掃描數據集被發布,其目的是訓練模型以檢測顱內出血。
圍繞該數據集,北美放射學會(RSNA)發布了一場Kaggle競賽,有人在Twitter搞了個小投票:
引發討論:
討論繼續,人們的想法從「但是既然有一個驗證集,怎麼會過擬合呢?」到「提出的解決方案永遠不會被直接應用」(後者來自以前的競賽獲勝者)。
隨著討論的深入,我意識到,儘管我們「都知道」競賽結果在臨床意義上是有點可疑的,但我從未真正看到一個令人信服的解釋,來解釋為什麼會這樣。
這就是這篇文章的內容,希望能夠解釋為什麼競賽實際上並不是構建有用的AI系統。
讓爭論來得更猛烈些吧
那麼,醫療AI領域的競賽是怎樣的呢?下面是一些選項:
讓團隊嘗試解決一個臨床問題 讓團隊探索如何解決問題,並嘗試新的解決方案 讓團隊構建一個在競賽測試集中表現最好的模型 浪費時間現在,我還沒有厭倦到直接跳到最後一個選項。但是前三個選項呢?這些模型適用於臨床任務嗎?它們是否能帶來廣泛適用的解決方案和新穎性?又或者它們只在競賽中表現出色,而不適用於現實世界?
(劇透:我認為是後者)。
好模型和壞模型
我們是否應該期望競賽能產生好模型呢?讓我們看看其中一位組織者是怎麼說的。
酷。完全同意。缺乏大型、標記良好的數據集是構建有用的臨床AI的最大障礙,因此該數據集應該有所幫助。
但是說數據集有用並不等於說競賽將產生好模型。
因此,為了定義術語,讓我們假設一個好模型是指:一個可以在未見過的數據(模型不知道的情況)上檢測腦出血的模型。
相反,一個糟糕的模型是,它不能在未見過的數據中檢測出腦出血。
這些定義毫無爭議。我相信競賽的組織者會同意這些定義,並且希望他們的參與者能做出好的模型而不是糟糕的模型。事實上,他們已經明確地以一種旨在促進好模型的方式設立了競賽。
這還不夠。
Epi vs ML,戰鬥!
ML101(machine learning 101的擬人化)告訴我們,控制過擬合的方法是使用一個留出的測試集(hold-out test set),這是模型訓練中沒有見過的數據。這模擬了在臨床環境中觀察新患者。
ML101還表示,留出數據只適用於一次測試。如果你測試多個模型,那麼即使你沒有欺騙並將測試信息洩漏到開發過程中,那麼最佳結果也可能是一個異常值,這個異常值只比你偶然得到的最差結果好。
因此,今天的競賽組織者會製作出一個留出的測試集,並且只允許每個團隊在數據上運行一次模型。問題解決了,ML101說。獲勝者只測試了一次,所以沒有理由認為他們的是異常值,他們只是擁有最好的模型。
別急,夥計。
讓我介紹一下「Epi101」(Epidemiology 101),它聲稱有一枚神奇的硬幣。
Epi101讓你拋10次硬幣。如果你得到8個及以上的正面,就證明了硬幣是有魔力的(雖然這個斷言顯然是無稽之談,但你要繼續下去,因為你知道8/10個正面相當於一枚均勻硬幣的p值<0.05,所以它一定是合理的)。
在你不知道的情況下,Epi101對另外99個人也做了同樣的事情,他們都認為只有自己在測試硬幣。你希望發生什麼?
如果這枚硬幣是完全正常的,而不是魔法硬幣,那麼大約5個人會發現這枚硬幣是特殊的。看似顯而易見,但是要考慮個體的情況。這5個人都只做了一次測試。根據他們的說法,他們有統計上顯著的證據表明他們手裡拿著一枚「魔法」硬幣。
現在想像你不是在拋硬幣。想像一下,你們都在一個競賽測試集上運行模型。你不再懷疑你的硬幣是否有魔力,而是希望你的模型是最好的,只要最好就能掙25,000美元。
當然,你不能提交多個模型。那樣會是作弊。其中一個模型可能表現得很好,這相當於拋一枚均勻硬幣10次碰巧得到8個正面。
好在有規則禁止提交多個模型,否則其他99個參與者和他們的99個模型中的任何一個都可能獲勝,只要運氣好……
多重假設檢驗
當然,我們用 Epi101 硬幣看到的效果適用於我們的競賽。由於隨機的機會,一些比例的模型將優於其他模型,即使它們彼此都一樣好。數學並不關心是一個團隊測試了100個模型,還是100個團隊。
即使某些模型在某種意義上優於其他模型,除非你真正相信冠軍的ML能力獨一無二,否則你必須承認,至少其他一些參與者也會獲得類似的結果,因此冠軍獲勝只是因為他們運氣好。真正的「最佳性能」將會出現在某個地方,可能高於平均水平,但低於冠軍方案。
Epi101表示這種效應被稱為多重假設檢驗。在競賽的情況下,你有很多假設——每個參與者都比其他參與者更好。100個參與者,就有100個假設。
其中一個假設,如果單獨考慮,可能會告訴我們有一個具有統計學意義(p<0.05)的勝利者。但是綜合來看,即使獲勝者的獲勝p值小於0.05,這並不意味著我們只有5%的機會做出不合理的決定。事實上,如果這是拋硬幣,我們將有超過99%的機會讓一個或更多人「贏」,並得到8個正面!
這就是AI競賽的獲勝者:拋硬幣時恰好得到8次正面的人。
有趣的是,雖然ML101非常清楚,自己運行100個模型並選擇最好的模型將導致過擬合,但他們很少討論這種「人群的過擬合」。當你考慮到幾乎所有的ML研究都是在經過大量過度測試的公共數據集進行的,這就更奇怪了……
那麼我們如何處理多重假設檢驗呢?這一切都歸結於問題的原因,即數據。Epi101告訴我們,任何測試集都是目標總體的一個有偏差的版本。在這種情況下,目標人群是「所有CT頭部成像的患者,有或無顱內出血」。讓我們來看看這種偏見是如何產生的,舉一個小的數據集示例:
在這一人群中,我們有相當合理的「臨床」病例組合。3例腦內出血(可能與高血壓或中風有關),2例創傷性出血。
現在讓我們對這個群體進行抽樣,以構建我們的測試集:
隨機地,我們抽樣得到的大部分是軸外出血。在這項測試中表現良好的模型不一定能在真實的患者身上發揮同樣的效果。事實上,你可能期望一個擅長軸外出血而犧牲腦內出血的模型獲勝。
但Epi101不僅指出了問題。Epi101有一個解決方案。
如何得到無偏見的測試集?
只有一種方法可以得到一個無偏見的測試集——即包含整個總體!那麼,無論哪種模型在測試中表現良好,在實踐中也將是最好的,因為你在所有可能的未來患者身上測試了它(這似乎很困難)。
這就引出了一個非常簡單的想法——隨著測試集的增大,你的測試結果將變得更加可靠。我們可以通過計算來預測測試集的可靠性。
根據 power 曲線,如果你粗略地知道你的「獲勝」模型比次優模型好多少,那麼你就可以估計需要多少測試用例來可靠地證明它更好。
因此,要確定你的模型是否比競爭對手的模型好10%,你需要大約300個測試用例。還可以看到,隨著模型之間的差異越來越小,所需的示例數量將呈指數級增長。
讓我們把這個付諸實踐。比如另一個醫療AI競賽,ACR氣胸分割挑戰賽,我們會發現分數(範圍在0和1之間)的差異在排行榜的頂部是可以忽略不計的。這次挑戰賽的數據集有3200個示例。
第一名和第二名的分數差距是0.0014,我們把它放到樣本容量計算器裡。
好了,為了顯示這兩個結果之間的顯著差異,你需要92萬示例。
但為什麼止步於此呢?我們甚至還沒有討論多重假設檢驗。如果只有一個假設,也就是說只有兩名參與者,那麼就需要這麼多的示例。
如果我們再看一下排行榜,有351個團隊提交了模型。規則規定他們可以提交兩個模型,所以我們不妨假設至少有500個測試。這必然產生一些異常值,就像500個人拋一枚均勻硬幣。
多重假設檢驗在醫學中非常普遍,尤其是在基因組學等「大數據」領域。過去幾十年,我們一直在學習如何應對這種情況。處理這個問題最簡單可靠的方法叫做Bonferroni校正。
Bonferroni校正非常簡單:將p值除以測試次數,找到一個「統計顯著性閾值」,該閾值已為所有額外的拋硬幣操作調整過。在這種情況下,是0.05/500,我們新的p值目標是0.0001,任何比這更差的結果都將被認為支持零假設(即競爭對手在測試集中的表現同樣出色)。讓我們把它代入計算器。
你可能會說我這麼搞非常不公平,排行榜的頂部肯定會有一些好模型彼此之間沒有明顯的不同。好吧,那我們試試第一名和第 150 名。
事實上,我直到第 192 名,才找到一個結果,其中樣本量足以產生 「統計上顯著」 的差異。
但也許這是 pneumothorax 挑戰特有的?其他比賽怎麼樣?
在 MURA,有 207 個 X 射線的測試集,70 個團隊 「每月提交模型不超過兩個」,所以讓我們慷慨的說,就算 100 個模型吧,結果 「第一名」 模型僅和第 56 名及更靠後的有明顯差異。
在 RSNA Pneumonia Detection Challenge 中,有 3000 個測試圖像,350 個團隊各提交一個模型。與第 30 名以後才看出顯著差異。
那麼醫學之外呢?
在 ImageNet 結果中從左到右看,每年的改進速度變慢,並且對數據集進行測試的人數增加。我無法真正估計這些數字,但是有人真的相信在 2010 年中期的 SOTA 熱潮就一定不是眾包過度擬合嗎?
那麼競賽的目的到底是什麼?
他們顯然不能可靠地找到最好的模型。他們甚至沒有真正找到有效的技術來構建優秀的模型,因為我們不知道這一百多個模型種,哪些真的用了好的可靠的方法,而哪種方法只不過是迎合了能力低下的測試集。
問問競賽組織者,他們大多說競賽是為了宣傳。我想這就足夠了。
人工智慧競賽很有趣,可以實現社區建設,搜集人才,品牌推廣和獲取關注。
但人工智慧競賽並不是為了開發有用的模型。
AI競賽的初衷是不是為了最好的模型?
本文作者Luke Oakden-Rayner發表這篇博客文章後,在Twitter上引發了很大的爭議。贊同他的人表示:
在科幻小說裡,競賽絕對是非常有用的。但在現實中,1000 個型號的集合將無法在生產中擴展,這就是為什麼如果用作黑盒子,獲勝者的解決方案很可能無用。
但反對Luke的人更多,他們中有曾經是kaggle競賽獲勝者或參與者的研究人員,認為AI競賽確實為科學做出了貢獻,產生了很多洞察、有效的方法等等,不能說是「沒用」。下面是部分用戶的觀點。
Andres Torrubia @antor:本次比賽的測試組(第 1 階段)為 40 萬 case。在最近的分子競賽中,我確實相信(+ 想要)為科學做出了貢獻,不同的頂級模型的差距可能是靠運氣...... 但它與你的 「沒用」 的觀點不同。
Roy K @roycoding(辯證的看):我既是競爭懷疑者又是樂觀主義者。我贊成獲勝者可能不是最好的模型,但是我認為這些類型的競賽能夠更好地理解哪些方法對相關任務有利。更不用說未來潛在的轉移學習。
Jean-Fran ois Puget @JFPuget(本質上反對,但也承認作者觀點有一定道理):如果你是對的,即模型的表現只是運氣成分,那麼在各種比賽中的表現都沒有相關性了,顯然並不是這樣。不過你的很多觀點非常棒,比如那個 imagenet 導致荒謬的過度擬合確實存在,使用 8 年左右的固定驗證集和使用了幾個月的驗證集存在差異。
Bilal Kartal @bll_krtl(表示完全不同意):我完全不同意你的意見。比賽產生了很多洞察啊,例如:域本身、方法等。將這些見解引向產品並不一定是在最短路徑,但這是競賽的初衷嗎?
Xavier Amatriain @xamat(用切身經歷來反駁作者):作為直接受益於 Netflix 贊助的人,我可以 100%說這篇文章是完全錯誤的。不信你去問問所有贊助 @kaggle 的公司。
讀者朋友,你贊同本文的觀點嗎?AI競賽是否能產生有用的模型,獲勝是否有一定「運氣」的成分?歡迎留言討論。