在過去一年中,我們看到了很多某種人工智慧演算法在某個醫療檢測任務中「超越」人類醫生的研究和報導,例如皮膚癌、肺炎診斷等。如何解讀這些結果?他們是否真正抓住醫療實踐中的痛點、解決醫生和病人的實際需要? 這些演算法原型如何落地部署於資料高度複雜、碎片化、異質性嚴重且隱含錯誤的真實環境中?這些問題常常在很多「刷榜」工作中迴避了。事實上,從最近 IBM Watson 和美國頂級醫療中心 MD Anderson 合作失敗的例子可以看出,人工智慧對醫療來說更應關注的任務應該是如何幫助醫生更好地工作(例如生成醫療影像報告、推薦藥物等),而非理想化地著眼於取代醫生來做診斷,並且繞開這個終極目標(暫且不論這個目標本身是否可行或被接受)之前各種必須的鋪墊和基礎工作。因此與人類醫生做各種形式對比的出發點本身有悖嚴肅的科學和工程評測原則。這些不從實際應用場景出發的研究,甚至無限放大人機對戰,對人工智慧研究者、醫療從業者和公眾都是誤導。
知名人工智慧創業公司 Petuum 近期發表了幾篇論文,本著尊重醫療行業狀況和需求的研究思路,體現出了一種務實風格,並直接應用於他們的產品。為更好地傳播人工智慧與醫療結合的研究成果,同時為人工智慧研究者和醫療從業者帶來更加實用的參考,機器之心和 Petuum 將帶來系列論文介紹。本文是該系列第二篇,介紹了使用深度學習實現自動 ICD 編碼。
國際疾病分類(ICD/International Classification of Diseases)是由世界衛生組織維護的一個醫療分類系統,提供了疾病、病症、損傷、體徵、症狀等的診斷程式碼分級。它在報告疾病和健康情況、協助醫療報銷決策、收集發病率和死亡率統計資料等方面有著廣泛的應用。
儘管 ICD 編碼對制定臨床和財務決策而言非常重要,但醫療編碼(medical coding,即在患者就診時為其分配正確的 ICD 編碼)很耗時、易出錯且成本高昂。醫療編碼人員需要查閱醫生對一次臨床事件用文字短語和句子寫的診斷描述以及(如有必要)電子病歷中的其它資訊,然後再按照編碼指導以人工的方式分配合適的 ICD 編碼。這個過程中有幾種常出現的錯誤。首先,醫生在寫診斷描述時常常使用縮寫和同義詞,這會導致編碼人員在將 ICD 編碼與這些標籤匹配時出現混淆和不準確的情況。其次,在很多情況中,多種診斷描述是緊密相關的,應該結合組成一個單個的組合 ICD 編碼。但是,經驗不足的編碼人員可能會單獨給每種疾病編碼。這種錯誤被稱為未繫結(unbundling)。第三,ICD 編碼是以分層的結構組織的,其中上層編碼表示範圍寬泛的疾病類別,下層編碼表示更特定的疾病。當編碼人員將診斷描述匹配到了一個過於寬泛的編碼,而不是更加特定的編碼,就會出現誤編碼的情況。據估計,美國每年為了提升編碼質量的財務支出高達 250 億美元。
為了減少編碼錯誤並降低成本,我們的目標是開發一種能自動且準確地將自由文字書寫的診斷描述轉譯成 ICD 編碼的 ICD 編碼機器。這一目標的實現需要解決如下一些技術難題。首先,即使指的是同一種疾病,醫生寫的診斷描述和 ICD 編碼的文字描述的書寫風格也差異很大。具體而言,ICD 編碼的定義非常正式和精確,而醫生寫的診斷描述往往不太正式,有時也會不符合語法規則,或者帶有指代其它內容的短語、縮寫甚至書寫錯誤。其次,如前所述,在診斷描述和 ICD 編碼之間並不一定存在一對一的對映關係,人類編碼人員在分配編碼時應該考慮整體的健康情況。在很多情況下,兩個緊密相關的診斷描述需要被對映至單個的組合 ICD 編碼。另一方面,醫生可能會將兩個健康狀況寫入同一個診斷描述中;在這種情況下,這個診斷描述需要被對映到兩個 ICD 編碼。
論文:使用深度學習實現自動 ICD 編碼(Towards Automated ICD Coding Using Deep Learning)
論文地址:https://arxiv.org/abs/1711.04075
摘要:國際疾病分類(ICD)是一個權威的醫療分類系統,其中包含了不同的疾病和健康狀況,可應用於臨床和管理。因為根據整體診斷情況為每位就診病人分配正確編碼的過程很複雜且需要專門處理,所以我們考慮到這一點而提出了一種帶有注意機制的分層深度學習模型,該模型可以根據寫出的診斷自動分配 ICD 診斷編碼。我們使用了可感知字元的神經語言模型來生成所寫診斷描述和 ICD 編碼的隱含表徵,並且還設計了一種注意機制來處理描述的數量和編碼數量之間的不匹配問題。我們的實驗結果表明根據診斷描述自動匹配 ICD 編碼有很大的潛力。我們最好的模型的 F1 分數和受試者工作特徵(ROC)的曲線下面積(area under curve)分別達到了 0.53 和 0.90。這個結果優於使用不可感知字元的編碼方法或沒有注意機制的方法所得到的結果。這表明我們提出的深度學習模型可以相當好地自動編碼併為計算機輔助 ICD 編碼提供了一個框架。
貢獻
我們提出了一種用於根據診斷描述自動執行 ICD 編碼的深度學習方法。具體而言,我們提出了一種分層的神經網路模型,其可以得到 ICD 定義和診斷描述的潛在語義,儘管這兩者的書寫風格存在顯著差異。我們設計了注意機制來解決診斷描述數量和被分配的編碼數量之間的不匹配問題。我們在 8066 份醫院就診資料上訓練了該模型,並在 1728 份就診資料上對超引數進行了調整,還在保留的 1729 份醫院就診資料構成的測試集上對該模型的表現進行了評估。實驗表明我們的編碼機器可以準確地分配 ICD 編碼。
方法
資料集和預處理
表 1 給出了原始資料集中就診記錄的樣本以及提取出的診斷描述。
表 1:來自 MIMIC-III 資料集的一個就診資料樣本
圖 1(a) 給出了提取出的純文字診斷描述的數量在病歷上的分佈情況。在將我們的 ICD 編碼目標限制到前 50 種最常見的編碼之後,得到的 ICD 編碼頻率的分佈如圖 1(b) 所示,每個就診記錄所分配編碼的數量的分佈在圖 1(c) 給出。我們將整個資料集分成了包含 8066 份醫院就診記錄的訓練集、包含 1728 份記錄的驗證集和包含 1729 份記錄的測試集。
圖 1:實驗資料的分佈
模型設計
我們的 ICD 編碼模型主要由四個模組組成,它們分別被用於(1)編碼診斷描述,(2)根據 ICD 編碼的文字描述對它們進行編碼,(3)匹配診斷描述和 ICD 編碼,(4)分配 ICD 編碼。整體架構如圖 2 所示。下面我們給出了每個組分的細節。
圖 2:模型架構
診斷描述編碼器
我們使用了長短期記憶(LSTM)迴圈網路來編碼診斷描述。LSTM 迴圈網路由一系列單元組成,每個單元都建模了輸入序列中的一項。每個單元包含一個輸入門 i,一個遺忘門 f,一個單元門 g,一個輸出門 o,一個單元狀態 c 和一個隱藏狀態 h。
ICD 編碼編碼器
對於每個 ICD 編碼,我們都採用了同樣的兩級 LSTM 架構(即字元級和詞級)來得到其長標題定義的隱含表徵。MIMIC-III 資料集中提供了這些定義。
使用注意機制進行匹配
在編碼過程中,通過採用注意策略,我們能將所有診斷描述都考慮進來。在執行編碼時,注意機制提供了一種方法來選擇哪些診斷描述更重要。
圖 3:我們模型中注意層的兩種架構。方框中的 ∗表示內積計算。左圖是 Hard-selection 機制。右圖是 Soft-attention 機制。
線性投射層
對於注意隱藏向量,我們使用了線性感知器結構作為輸出層來將該向量投射到一個真實值,表示預測標籤為真的置信度分數。不同的 ICD 編碼不共享感知器引數。最後,我們使用 sigmoid 函式將置信度分數歸一化成一個 0 到 1 之間的概率。
引數學習
我們為每個 ICD 編碼都使用了二元交叉熵作為損失函式。
超引數設定
該模型在訓練集上的訓練使用了標準的 ADAM 優化器,其初始學習率為 0.001,mini-batch 大小為 10。超引數在驗證集上進行了微調。特別要說明,所有 LSTM 模組的隱藏單元和輸出單元的數量為 200。對於我們實驗中的詞級 LSTM,我們為其輸出應用了一個有 0.5 的 dropout 概率的 dropout 層,以避免過擬合問題。因為我們的模型會為每次 ICD 編碼分配提供一個概率分數,所以我們也會在驗證集上調整最優閾值,將這個概率分數轉變為二元輸出,即 true 或 false,使得 F1 分數在驗證集上最優。
分析和評估
鑑於 ICD 編碼分配通常是稀疏的,其中大多數 ICD 編碼都會被標記為 false,僅有少數被標記為 true,所以我們使用了 micro F1 分數和 AUC_ROC(受試者工作特徵的曲線下面積)分數作為定量指標。
結果
表 2 給出了不同模型在測試集上評估得到的 F1 分數和 AUC_ROC 分數。我們可以觀察到:相比於使用 Hard-selection 模型,使用 Soft-attention 機制讓 F1 和 AUC_ROC 分別增加了 5.2% 和 2.3%。為了進一步探索我們模型中不同模組的效用,我們對完整的 Soft-attention 模型(使用了字元級和詞級 LSTM 編碼器和 Soft-attention 機制)進行了 ablation study(消蝕研究,指移除模型和演算法的某些功能或結構,看它們對該模型和演算法的結果有何影響)。多個消蝕實驗上的表現下降說明我們模型中的所有模組都是必要的並且在編碼過程中都發揮了關鍵作用。
表 2:在不同模型上的效能
表 3 給出了一個病人就診資料樣本在 50 個 ICD 編碼構成的子集上的注意分數。我們可以看到,我們的模型會根據診斷描述自動地為不同的 ICD 編碼分配不同的注意分數。例如,當分配標題為「Neonatal jaundice associated with preterm delivery(與早產有關的新生兒黃疸)」的 ICD 編碼時,模型會更加註意「Prematurity at 34 and 5/7 weeks gestation(早產,三十四周零五天接生)」和「Hyperbilirubinemia of prematurity」(早產的高膽紅素血癥),而對「Sepsis ruled out(排除敗血症)」等其它無關的診斷描述的注意則更少。對這個樣本的全部 50 個 ICD 編碼的注意分配結果可以參看補充材料。
表 3:在一個樣本上的注意分配。上表給出了從醫生寫的出診診斷中提取出的診斷描述。下表給出了在 ICD 編碼的一個子集上的注意分配。有 True 標籤的編碼用粗體標出。
擴充套件閱讀: