学界 | Petuum新研究助力临床决策:使用深度学习实现自动ICD编码

百家 作者:机器之心 2017-12-01 07:04:17

Petuum 专栏

作者:Haoran Shi、Pengtao Xie、Zhiting Hu、Ming Zhang、Eric P. Xing

机器之心编译


在过去一年中,我们看到了很多某种人工智能算法在某个医疗检测任务中「超越」人类医生的研究和报道,例如皮肤癌、肺炎诊断等。如何解读这些结果?他们是否真正抓住医疗实践中的痛点、解决医生和病人的实际需要? 这些算法原型如何落地部署于数据高度复杂、碎片化、异质性严重且隐含错误的真实环境中?这些问题常常在很多「刷榜」工作中回避了。事实上,从最近 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 标签的编码用粗体标出。 


扩展阅读:




本文为机器之心经授权编译,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接