0
| 本文作者: 李雨晨 | 2017-12-21 10:27 |
雷鋒網消息,醫學影像是人工智能重要的發展方向之一,業界爭相入局的同時也吸引了很多知名學者參與其中,并已出現了很多引人注目的成果。一年以來,國內外很多團隊都聲稱自己利用AI技術在疾病診斷的正確率超越人類,斯坦福大學吳恩達等人提出的 CheXNet 算法便是其中之一。此前,雷鋒網對該團隊研究成果進行過相關報道:《吳恩達團隊發布最新醫學影像成果,用 CNN 算法識別肺炎》。團隊曾表示,該算法在識別胸透照片中肺炎等疾病上的準確率上超越了人類專業醫師。
然而,另一群學者對目前的一些研究成果產生了懷疑。本文作者 Luke Oakden-Rayner 就是其中之一,他是阿德萊德大學的放射科在讀博士。他認為,目前的 ChestXray14 數據集不適用于訓練醫學人工智能系統進行診斷工作。(ChestX-ray14 是目前最大的開放式胸透照片數據集,包含 14 種疾病的 10 萬張前視圖 X-ray 圖像)
為了證明自己的觀點,Luke Oakden-Rayner博士將在本文中討論了以下幾個問題:標簽的準確度;標簽的醫學意義;標簽對于圖像分析的重要性。
雷鋒網對Luke Oakden-Rayner博士的文章進行了不改變原意的選譯
ChestXray14 數據集來自于論文《ChestX-ray8: Hospital-scale Chest X-ray Database and Benchmarks on Weakly-Supervised Classification and Localization of Common Thorax Diseases》,自首次發布以來,該數據集的論文和支持文檔已經更新過多次。
在我看來,該論文需要花更多的時間解釋數據集本身,因為該數據集的大量使用者是計算機科學研究人員,在缺乏臨床知識的情況下,這種需求就顯得尤為重要了。然而,這篇論文主要介紹的是文本挖掘和計算機視覺任務,其中有一個圖表展示了數據集中標簽的準確性。

其中展示的原始結果(上半部分)是在公開的 OpenI 數據集上進行測試的,不僅包括報告,也有人工打上的完整標簽。而列表中下面的部分是 ChestX-ray14 自己的數據。研究人員隨機選擇了 900 份報告,并由兩位注釋者進行標注,他們共同分類了其中的 14 種疾病。據我所知,這些注釋者并沒有直接檢查圖像。
數據體量的限制會讓誤差變大(如果一個類別中的樣例數量為 10-30,只有一個錯誤,那么 95% 置信區間的陽性預測值會在 75%-88%)。但如果允許一些偏差值,每個標簽看起來準確度都在 85-99%,至少準確反映了報告結果。
但不幸的是,似乎標簽無法準確地反映病況。NIH 團隊沒有表明他們看過這些圖像,他們通過測試標簽是否匹配報告文本來判斷圖像標注過程的優劣。我認為這種分離導致了我所提出的標簽質量問題。
有很多方式可以在不需要圖像的情況下構建圖像標簽。如 ICD 編碼,或者從報告或其他免費文本中提取標簽;還可以使用增補數據(follow-up data)。在深度學習中,我們查看訓練曲線、檢驗梯度、嘗試在沒有正則化的情況下訓練來測試是否產生過擬合。查看這些圖像是放射學的完整性檢查——查看圖像,確保它們和期望的一樣。
我通常 10 分鐘看完 200 張圖像以完成“完整性檢查”的初級階段。
接下來要說的是一堆基于數據集標簽的圖像。它們是隨機選取包含 18 張圖像的序列集。
我的標簽并不完美,其他放射科醫生可能對其中的一些標簽有疑惑。但是必須明確一點,我的標簽和論文/附錄中的結果有極大的不同。
我通常喜歡硬數據,因此我盡力量化標簽準確率。事實上我發現其中的很多標簽都很難定義,因此下表中未列出。我查看了每個類別中的 130 多張圖像,根據我的視覺判斷計算原始標簽的準確率。這個數據量比較適合使用,因為95%的置信區間可能再擴大/縮小5%,所以我的誤差率可能達到 20% 左右。

我的視覺分析 vs. 論文中的文本挖掘結果
我再次懷疑我的標簽到底對不對,尤其是和胸部放射科醫生的判斷結果相比,但是如上表所示,差別也太大了。我認為上表中的數據證明這些標簽無法匹配圖像中顯示的疾病。
也有辦法解釋這種現象。比如最初幫助解釋圖像的放射科醫生具備圖像以外的信息。他們具備臨床經驗、之前的診療結果等。這些信息非常有用,尤其是在區分類似疾病的時候。
如果人類專家無法僅從圖像中做出診斷,那么 AI 系統很可能也無法診斷。AI 可能能夠找出一些人類忽略的細微證據,但是憑借這些就可以產生性能上的巨大差異并不合理。總體來看,我們需要標簽和圖像包含同樣的信息。
第二部分:標注在醫學上意味著什么?
標注實際上代表什么?它們能夠反映臨床實踐嗎?我認為答案是否定的。
我認為最難解析的標簽是固結/滲透/肺不張/肺炎集聚等。這些醫學影像還存在其它問題,與任務的臨床價值有關,例如滲出(Effusion)、氣胸(Pneumothorax)、纖維化。例如,氣胸在 X 光影像上非常微小,經常會被人忽略掉,或者纖維化的標注準確率非常低。實際上還有多種其它非圖像臨床問題,例如:
肺炎、肺氣腫和大多數纖維化都是臨床診斷問題而不是醫療影像問題。
X 射線會漏掉多達 50% 的囊腫,因此我們可能會懷疑報告所采用的囊腫標注。
沒有人關心間斷性疝氣,所以它們只是有時候進行診斷。
找到那些優秀的數據集或正確的標簽來學習高效的醫療任務是十分困難的。同樣,我們還是需要專家查看這些影像來進行醫療診斷。
放射學的深度學習應用有一個大問題,如果不查看圖像,后果將非常嚴重。如果這些標簽很不準確,并且標簽的意義也不可靠,那么建立在這個數據集上的模型是如何達到不錯結果的呢?模型學習的到底是什么?
實際上,我們在尋找可以學習正確地在測試集上輸出真實結果的模型,即使所謂的真實結果在視覺上毫無意義。

來自 CheXNet 的結果:使用深度學習模型(Rajpurkar and Irvin et al.)在胸透圖上進行放射專家級的肺炎檢測,在測試集上獲得了不錯的性能。
隨機噪聲可以作為不錯的正則化項,甚至還可以在某些設置中提升性能(這種技術被稱為標簽平滑或軟標簽)。結構化噪聲不一樣,它添加了完全不同的信號,而模型將嘗試學習這些信號。

在一個包含壞標簽的訓練集中,神經網絡將把這些標簽看成同等有效的肺炎樣本。如果模型學習了這些標簽,例如,「毛茸茸」是肺炎的一個信號,然后模型將應用這個信號到胸透圖中,輸出無法預測的結果。
模型將使用部分從狗類圖像中學習的特征,并應用到胸透圖中,盡管這和問題本身無關。
如果你的目標是性能最優化,那么結構化噪聲總會帶來負面影響。噪聲甚至不需要很明顯(其中的關系是非線性的),而偏差標簽將降低模型的準確率。

Rolnich 等人《Deep learning is robust to massive label noise》的結果表明,結構化噪聲破壞了標簽,并使得性能下降。當噪聲與實際數據來源相同時,這個問題可能更麻煩,因為模型會混淆噪聲與類別。這可以類推到 ChestXray14 數據集中,它們的標簽同樣遭到了破壞。
所以,這些標簽會損害模型的性能。那么為什么在 ChestXray14 上訓練的模型有非常好的性能?難道是這些模型可以補償數據噪聲而變得魯棒性嗎?
我并不這樣認為,我們需要關注更多的方面。其實在為數據集構建一組新標簽的過程中,我通過創建一個“opacity”類和一個“no finding”類來簡化涉及的任務。我用原來的標簽設置了新創建的標簽,“opacity”是肺不張、肺炎、固結和滲透標簽的組合,然后在上面訓練一個模型。
我只需要采用一個在 ImageNet 預訓練的 ResNet,并在新的數據集中訓練后部分的網絡。我并沒有調整超參數,只是在一個合理的時間里訓練模型,最后模型的性能還是比較優秀的。

盡管 AUC 是 0.7,但與標簽錯誤率一致,我們的分類性能非常糟糕。該模型無法忽略錯誤的標簽,輸出合理的預測,它對標簽噪聲不具備魯棒性。最重要的是,AUC 值沒有反映診斷性能,這是一個很大的問題。
這一 AI 系統學習可靠地輸出無意義的預測。它學習圖像特征的方式使“opacity”的案例變得幾乎沒有模糊性,而“no opacity”的案例被判斷為嚴重不正常的肺。
這就是問題,因為除非你看了圖像,不然就會以為結果很棒。每個團隊的模型性能都越來越好,AUC 分越來越高,看起來它們似乎正在“解決”一項嚴肅的醫療任務。
我認為其有多個原因;醫療圖像很大又復雜,擁有很多普遍元素。但是,自動挖掘標簽的方法沒有引入不準確的隨機噪聲。文本挖掘的編程本質會導致持續、意料之外的數據依賴或分層。
同樣,斯坦福大學皮膚科的 Novoa 博士最近也在媒體上討論過這個問題:
當皮膚科醫生查看一種可能是腫瘤的病變時,他們會借助一把尺子——就是你在小學時用的那種——來準確測量它的大小。皮膚科醫生這樣做是為了查看病灶。因此,在一組活檢圖像中,如果圖像中有尺子,算法更可能將其判斷為惡性腫瘤,因為尺子的存在與病癥癌變的可能性相關。不幸的是,Novoa 強調,該算法不知道為什么這種相關性是有道理的,所以很容易誤解為一把隨機的尺子是診斷癌癥的根據。
深度學習非常強大,如果給它輸入帶有偏見標簽的復雜圖像,它可以學習對這些類別進行分類,盡管它們毫無意義。你可以完美擬合訓練集中的隨機標簽,但這一結果僅僅表明深層網絡足夠強大,能夠記憶訓練數據。他們沒有展示測試數據的泛化,相反,他們展示了噪音損害的性能。
我確實在 ChestXray14 數據中通過隨機標簽做了一個快速測試(另一個完整性檢查),發現與 Zhang et al. 的相同結果;并且該模型沒有泛化到測試集。
結構化噪聲不僅存在于訓練數據中。整個測試數據中的標簽誤差也是一致的。這意味著如果模型學習做出不良的醫療預測,那也許它可能會獲得更佳的測試表現。這種情況可能僅針對通過自動“數據挖掘”方法生成的標簽,但是我也發現了人工標簽導致放射科數據分層的多種方式。
放射學報告不是客觀的、事實上的圖像描述。放射學報告的目的是為他們的推薦人(通常是另一位醫生)提供有用的、可操作的信息。在某些方面,放射科醫師猜測推薦人想要的是什么信息,并且剔除那些不相關信息。
這意味著根據臨床情況、過往歷史以及放射科醫師是誰,相同圖像的兩份報告可以被貼上不同的“標簽”。影響放射學報告的因素有很多,所有因素都會給放射學報告帶來結構性噪音。每個小案例都可能有獨特的可學習的圖像特征。
還有很多其他視覺元素可將患者分成幾組,包括圖像質量(根據患者是門診病人、住院病人、重癥監護等而不同)、導入裝置如起搏器或心電圖導聯的存在、身體習性等等。這些因素都不是“診斷性的”,但它們很可能與標簽有不同程度的相關性,深層網絡要找的很可能就是這樣的東西。
醫學研究人員長期以來一直在處理臨床數據的分層管理。像年齡、性別、收入、飲食這些因素都會導致“隱藏”分層。我們還需要粗略地知道整個群組的視覺外觀分布是相似的,這意味著你需要查看圖像。
以上的問題并不意味著深度學習對于醫學影像是毫無價值的。深度學習最重要的一點是它奏效。雖然我們現在還不明白為什么,但是如果深層網絡擁有很好的標簽和足夠的數據,它將優先為這些類別學習有用的特征,而不是無意義的瑣碎特征。
與人類視覺評估相比,ChestXray14 數據集中的標簽不準確、不清楚,并且經常描述醫學上的次要發現。
這些標簽問題在數據之中是“內部一致的”,這意味著模型可以展示“良好的測試集性能”,同時仍然產生不具有醫學意義的預測。
以上問題表明,目前定義的數據集不適合訓練醫療系統,對數據集的研究不能在沒有附加正當理由的情況下生成有效的醫療聲明。
查看圖像是圖像分析的基本的“完整性檢查”。如果你構建數據集時,沒有能夠理解你數據的人在查看圖像,那么期望數據集奏效將讓你失望。
醫學圖像數據充滿分層元素;有用的特征幾乎可以學到任何東西。查看你的模型是否每一步都照常運行。只要標簽足夠好,深度學習就可以在這個數據集中工作。
原文鏈接:https://lukeoakdenrayner.wordpress.com/2017/12/18/the-chestxray14-dataset-problems
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。