蒋友好
摘要:伴随医院信息化建设,大量的电子病历数据得以保存,但如何分析和利用这些数据成为医疗健康领域一个重要的研究课题。深度电子病历分析以深度学习技术为基础,通过特征自学习,避免了在数据预处理和特征工程上耗费大量时间,而且还能有效捕获数据间的未知关系,提高算法性能。本文首先概述了5类常用的深度学习模型及其变体,其次详细分析了这5类模型在电子病历分析上的应用情况,最后从数据异质性、公开数据集和模型可解释性三个方面对这一领域当前的机遇和挑战做了总结。
关键词:电子病历;深度学习;卷积神经网络;循环神经网络
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)15-0301-04
An Overview of Research on Deep Electronic Health Record Analysis
JIANG You-hao1,2
(1.Department of Control Science and Engineering School of Electronics and Information Engineering Tongji University,Shanghai 201804,China;2.Shanghai Putuo District Central Hospital, Shanghai 200062, China)
Abstract:With the development of hospital informatization, the vast amounts of raw electronic health records have been saved. But how to analyze and utilize these data becomes an important research topic in the field of healthcare. Based on deep learning technologies, deep electronic health record analysis models not only can learn features directly from the data itself, avoiding the cost of time on data preprocessing and feature engineering, but also can gain high performance by effectively capturing latent relationships between data. In this paper, five commonly used deep learning models and their variants are firstly discussed, and then analyzes some electronic health record analysis applications in detail. Finally, we summarize the current opportunities and challenges from three aspects: data heterogeneity, public datasets and model interpretability.
Key words: Electronic Health Record (HER); Deep Learning; Convolutional Neural Networks (CNN); Recurrent Neural Network (RNN)
引言
隨着医院信息化建设不断深入,电子病历(Electronic Health Record,EHR)系统在临床诊疗过程中得到了广泛应用,也因此产生了大量的医疗数据。这些数据记录了患者所有的诊治历史,包括人口统计学信息、诊断、实验室检验结果、放射影像、处方、临床记录等[1]。之前,电子病历数据主要被用来提高临床诊疗效率,并方便医院管理。但随着大数据和人工智能技术的飞速发展,许多研究者认为电子病历数据对提高医护质量、保障患者安全、降低治疗费用等方面大有裨益[2-4]。
尽管电子病历数据越来越容易获取,但其异质的特性给分析带来了巨大的挑战。从表示形式上来看,电子病历数据有以下5种类型:1)数值型,如年龄、体重;2)时间日期型,如入院时间、处方开立日期;3)类别型,主要是受控词表中的代码,如性别、国际疾病分类代码ICD-10;4)自然语言书写的自由文本,如放射学报告、出院小结;5)时间序列,即按时间顺序排列的一段数值或一组文本,如生命体征监护记录、病程记录[5]。面对这些异质的数据类型,传统的机器学习与统计技术通过从数据中抽取一组特征来表征数据,并作为模型的输入,训练各种分析模型。但上述方法存在两点不足:1)特征是人手工抽取,依赖于专家的领域知识,这些知识通常都是已知的,不能发现数据间的未知关系;2)80%的工作用于数据的清洗、预处理等,大大限制了模型的可伸缩性[4]。
近年来,深度学习在许多领域都取得了巨大的成功,通过深层次的分层特征构建,有效地捕获数据间的未知关系[6]。相比于传统的机器学习方法,深度学习通过直接从数据本身习得最优特征,不需要人工指导,实现了特征的自学习,并能自动发现那些数据间未知或隐含的关系。当前,已有研究人员将深度学习应用在电子病历分析上,取得了比传统机器学习方法更好的结果,而且在数据预处理和特征工程上耗费更少的时间。
基于前人工作,本文从深度学习模型的角度回顾了深度电子病历分析领域取得的众多研究成果。在接下来的部分,第2节概述5类常用的深度学习模型及其变体,第3节详细分析这5类模型在电子病历分析上的应用情况,最后第4节总结当前面临的挑战并展望未来的发展方向。
1 深度学习模型概述
经过多年发展,深度学习已包含各种各样的技术。本节中,我们将简要概述最常见的5类深度学习模型,这些模型已在深度电子病历分析上被广泛使用。从模型架构的角度,这5类模型可划分成两大类,一类使用监督架构(包括多层感知机、卷积神经网络、循环神经网络),另一类使用无监督架构(包括自编码器、受限玻尔兹曼机)。下面我们对这5类模型逐一进行介绍。
1.1 多层感知机
多层感知器(Multilayer Perceptron,MLP)是一类包含多个隐层的人工神经网络,第[i]层的神经元与第[i+1]层神经元完全连接。其中,每个隐层的神经元将前一层的输出加权求和,再经过一个非线性激活函数,其结果作为神经元的输出。常见的非线性激活函数有sigmoid和tanh,现在更多地使用ReLU函数。
经过模型的训练,隐层神经元的权重得到优化,网络也从学到了输入[x]和输出[y]之间的关系。随着隐层的增加,输入数据也会以更抽象的形式表达出来。虽然MLP模型结构很简单,但其他神经网络架构经常会在最后包含一个由全连接神经元组成的MLP结构。
1.2 卷积神经网络
卷积神经网络(Convolutional Neural Network,CNN)是近几年最流行的一个网络模型,特别是在图像处理领域。相比于MLP的全连接结构,CNN只做局部连接。例如,一张50x50的图片,MLP会将其展开成一个2500维的向量作为网络的输入,而CNN将其看成是局部像素块的集合,对每个相同大小的像素块乘以一组权值,该过程称为“卷积”,这组权值称为“卷积核”。当卷积核在整个图片上移动时,可以从中提取出有意义的特征。
CNN的特性可总结为:局部连接、权值共享。由于卷积核比完整的输入要小,所以CNN的参数更少。而且卷积核在整个图片上移动时,每个像素块乘以的都是一组相同的权值,所以权值是共享的。卷积操作所在的层称为卷积层,卷积层之后,通常会跟一个池化层用于聚合卷积层提取到的特征。常见的池化有最大池化和平均池化。
1.3 循环神经网络
当输入数据具有清晰的空间结构(如图片)时,卷积神经网络是一个合理的选择。但当输入数据按顺序排列(如自然语言或时间序列数据)时,循环神经网络(Recurrent Neural Network,RNN)则更合适一些,因为它具有处理长时间依赖关系的特性。RNN在更新隐态[ht]时,不仅依赖当前时刻[t]的输入[xt],也依赖前一刻的隐态[ht-1]。依此类推,[ht-1]依赖于[xt-1]和[ht-2]。通过这种方式,最后输出的隐态包含先前所有输入元素的信息。
流行的RNN变体有长短时记忆单元(LSTM)和门控循环单元(GRU)模型,这两者都被称为门控循环神经网络。标准RNN由相互连接的隐藏单元组成,而门控RNN中每个隐藏单元被一个包含内部循环的特殊单元和一组控制信息流的门所取代。相比于标准RNN,循环RNN在建模长时间依赖关系上更有优势。
1.4 自编码器
自编码器(Auto-Encoder,AE)是一个无监督表示学习模型,最初被用于有监督深度学习模型的预训练,对那些标记数据很少的情况特别有用,但自编码器依旧可以应用在完整的无监督学习任务中。自编码器包含编码和解码两部分,输入[x]先被编码为一个低维空间表示[z],再通过解码重建[x]的近似表示[x]。自编码器训练时,通过最小化重建误差[x-x],学习表示[z]。训练完成之后,只使用编码部分获得输入的编码表示。
由于自编码器将输入数据转换成低维的、只存储重要信息的向量,因此它和標准的降维技术(如主成分分析、奇异值分解)很像。但自编码器优势在于隐层的非线性激活函数,这种非线性变换可以用来解决许多复杂问题。研究者常使用堆叠的方式构建深度自编码器网络。常见的自编码器变体有降噪自编码器(DAE)、稀疏自编码器(SAE)、变分自编码器(VAE)等。
1.5 受限玻尔兹曼机
另一个无监督表示学习模型是受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)。与自编码器不同之处在于,RBM通过一个随机视角来估计输入数据的概率分布,以此来对数据的生成过程进行建模。因而,RBM也被看作生成模型。
在标准玻尔兹曼机中,所有单元之间采用全连接的方式,而在RBM中,任何两个可见单元或任何两个隐藏单元之间没有连接。RBM的训练常采用随机优化,如Gibbs采样,生成输入数据的表示。此外,RBM可被分层堆叠形成一个深度置信网络(DBN),用于监督学习任务。
2 深度学习模型在电子病历分析上的应用
介绍完上述5种常见的深度学习模型,本节将详细分析这些模型在电子病历分析研究中的应用情况,包括应用于哪些任务,对模型做了哪些适配,以及取得的成果有哪些。表 1从深度学习模型的角度,给深度电子病历分析研究做了一个分类。
2.1 多层感知机
由于多层感知机比较简单,它在电子病历分析中多作为基础模型存在。Choi等[7]使用嵌入患者向量的MLP模型来预测心脏衰竭,其中患者向量通过临床事件的分布式表示获得。患者一次就诊过程可以看作一个有序的临床事件集合,从入院、检查、手术、医嘱到出院,使用临床事件集合表示患者的方法称为患者向量表示。文献[7]和[8]均借鉴词向量分布式表示中的skip-gram方法来获取临床事件的分布式表示。
2.2 卷积神经网络
卷积神经网络在入院概率预测和命名实体识别任务中均有应用。Nguyen等[9]使用CNN来预测出院后无计划的再入院概率,网络输入为离散的临床事件代码,结果显示他们的方法优于Bag-of-Codes和Logistic回归两个基准模型。有趣的是,他们发现输入序列中的长时间间隔并不会影响预测的准确性,他们也没有对数据做特殊的预处理。Wu等[10]将CNN应用在中文临床记录文本的命名实体识别任务中,他们使用CNN对文本进行词向量的预训练,以此提高基准模型的准确率。
2.3 循环神经网络
循环神经网络因适用于时间序列建模,特别是处理文本,众多面向临床记录文本的研究均使用了循环神经网络。为从临床记录文本中抽取临床事件及其时间,Fries[11]使用了一个标准RNN,并结合从两大临床语料库预训练出的词向量和人工构造的特征。Jagannatha等[12, 13]尝试多种RNN模型来从临床记录文本中抽取概念,他们将此视为一个序列标记任务,为每个单词分配药物或疾病标签。他们尝试的RNN模型有LSTM、GRU、双向LSTM、LSTM与条件随机场(CRF)的多种组合。他们实验发现,所有RNN模型的结果都比基准的CRF有大幅度提升,尤其是在检测那些细微属性(如服药时长和频率、疾病严重程度)上表现更好。与文献[7]任务类似,Pham等[14]也研究了患者向量表示,不同的是,他们使用改进的LSTM对时间、入院方式、诊断结果和治疗措施进行建模,以此表示完整的疾病史。
在结果预测方面,RNN也有广泛应用,如疾病预测[15]、肾移植的术后并发症预测[16]。Choi等[15]提出了Doctor AI框架对医生行为进行建模,从而实现疾病预测。他们在患者的(临床事件,时间)观测对数据上训练一个GRU网络,目标是预测下一个临床事件及其时间,以及未来患病情况。实验结果表明,Doctor AI框架recall@30的值为79%,recall@10的值为64%,该结果可以与医生比肩。Esteban等[16]利用不同类型的RNN模型预测肾移植的术后并发症,模型输入包括静态和动态特征,输出则为低、正常、高三类。他们实验发现,结合静态特征的GRU网络表现结果好于其他深度模型。此外,他们还发现,对那些长时间依赖不那么重要的任务,结合静态特征效果更好,但对输入具有重要时间依赖性的任务,结合动态特征会更有效。
2.4 自编码器
因为自编码器适用于无监督的表示学习,因此Miotto等[17]在患者表示研究中引入了堆叠的AE模型,从临床代码中直接生成患者向量,以此提高疾病预测性能。原始特征经过一个三层AE网络转换为患者的向量表示,而患者关联的临床记录文本则通过隐含狄利克雷分布(LDA)被编码进患者向量。最终,这些向量作为Logistic回归分类器的输入来预测诊断结果。
2.5 受限玻尔兹曼机
受限玻尔兹曼机在电子病历分析研究中的应用主要由两类,一类是患者向量表示[18],另一类是结构预测[19, 20]。相比于文献[7, 8, 14, 17]使用聚合的方式表示患者向量,也可以直接从时序关系入手,对患者时间线进行建模。Mehrabi等[18]在患者时序诊断代码上训练了一个堆叠的RBM,用于生成时间相关的患者向量表示。他们为每个病人构建了一个诊断矩阵,矩阵的行是诊断代码,列是时间间隔。整个矩阵被0、1填充,表示在给定时间间隔内患者是否被诊断为该疾病。因为矩阵的行是诊断代码,所有RBM隐层是诊断代码的向量表示。
在结果预测方面,受限玻尔兹曼机和深度置信网络分别被用于预测院内感染(HAI)和识别骨质疏松症。Jacobson等[19]从临床记录文本出发,比较两类无监督表示学习模型在院内感染方面的预测能力。他们比较的模型是堆叠的SAE和堆叠的RBM,实验发现,融合了tf-idf特征的堆叠RBM取得了最高的F1值,而融合词向量特征的堆叠SAE总体性能要好于RBM。Li等[20]使用了两层DBN来识别骨质疏松症,其创新之处在于使用DBN重建误差来识别最大风险因素。实验结果表明,包含所有已识别风险因素的模型性能最好。
3 机遇与挑战
上一节中,我们对当前深度电子病历分析研究做了一个简要的概述。这是一个新兴领域,大多数文献都是在过去两年中发表的。从深度学习在图像和自然语言处理方面的研究进展,我们可以一窥深度电子病历分析的发展历程。从中,我们发现大多数研究都涉及表示学习,即如何最好地表示大量的原始病人数据。这些研究分别从个人临床诊断代码、人口统计学信息、临床记录文本等方面做出了不同探索,它们也为未来深度电子病历分析研究指明了方向。下面,我们对此做一简要分析。
4.1 数据异质性
由于电子病历数据异质的特性,导致电子病历数据的表示学习带来了巨大挑战。第1节中,我们已经介绍过电子病历有以诊断代码、人口统计学信息、时序的生命体征数据、实验室检验结果等为代表的数值型数据,也有文本形式的数据,如出院小结、放射学报告等。面对类型如此多样、丰富的数据,现有研究多采用分而治之的策略来进行表示学习。
对于诊断代码这一类离散型数据,用到的模型有MLP[7, 8]、CNN[9]、RNN[14]、AE[17]、RBM[18]。由于离散数据容易处理,现有研究多关注这一类数据的表示学习,而时序生命体征数据、实验室检验结果这类实值数据的表示学习还未获得足够的重视。因为实值数据包含更多的医学信息,所有希望以后能有更多的研究关注数值数据的表示学习。
由于文本是一段字符串序列,对于临床记录文本,一般采用RNN[12, 13]模型,也有使用CNN[10]模型。由于文本缺少结构信息,使得信息抽取困难重重。例如,不同的作者在表达同一个意思时,文字往往存在一些差异,这些差异表现在不同写作风格、不同的排序偏好、以及多种多样的缩写形式。如何更好地利用临床记录文本,永远是一个开放的问题,它不仅要求研究者掌握基础的自然语言处理技术,也需要熟悉特定的临床知识。因此,如何将众多的临床知识应用到临床记录文本处理中,这是未来深度电子病历文本分析值得探索的一个方向。
相比于现有这些分而治之的表示学习方法,是否存在一个统一的、能处理所有数据类型的框架,这也是一个可以尝试的方向。统一的表示框架可以更好地表征数据间关系,提高模型性能。
4.2 公开数据集
另一个深度电子病历分析研究需要解决的问题是实验结果缺乏透明度和不可复现。考虑到电子病历涉及患者隐私,现有的大部分研究使用的都是私有数据集。雖然患者隐私得到了保护,但对于算法效果提升的评判,就缺乏了统一基准。而且许多研究声称取得了最先进成果,由于数据集不公开,这些结果均无法得到外部人员的证实。公开数据集的缺失,可能阻碍深度电子病历分析研究的发展,使其发展缓慢。
4.3 模型可解釋性
最后,深度学习模型的可解释性目前还是一个亟待解决的问题。模型透明度对于许多临床应用来说是至关重要的,因此,深度电子病历分析模型的可解释性也是未来研究的重点。由于正确的临床决策可能是生与死的区别,许多医务工作者必须能够理解和信任深度学习系统所做的预测和建议。虽然一些研究人员淡化了可解释性的重要性,片面追求模型表现能有显著改进,但我们认为一个可解释的模型将加速深度电子病历分析研究在临床中的应用推广。
致谢:
本文工作得到上海市科学技术委员会资助(No.16511102800)。
参考文献:
[1] Birkhead G S, Klompas M, Shah N R. Uses of Electronic Health Records for Public Health Surveillance to Advance Public Health[J]. Annual review of public health, 2015, 36: 345-359.
[2] Jensen P B, Jensen L J, Brunak S. Mining electronic health records: towards better research applications and clinical care[J]. Nature Reviews Genetics, 2012, 13(6): 395.
[3] Bates D W, Saria S, Ohno-Machado L, et al. Big data in health care: using analytics to identify and manage high-risk and high-cost patients[J]. Health Affairs, 2014, 33(7): 1123-1131.
[4] Rajkomar A, Oren E, Chen K, et al. Scalable and accurate deep learning for electronic health records[J]. arXiv preprint arXiv:1801.07860, 2018.
[5] Shickel B, Tighe P J, Bihorac A, et al. Deep EHR: A Survey of Recent Advances in Deep Learning Techniques for Electronic Health Record (EHR) Analysis[J]. IEEE Journal of Biomedical & Health Informatics, 2017.
[6] Bengio Y, Courville A, Vincent P. Representation learning: A review and new perspectives[J]. IEEE transactions on pattern analysis and machine intelligence, 2013, 35(8): 1798-1828.
[7] Choi E, Schuetz A, Stewart W F, et al. Medical concept representation learning from electronic health records and its application on heart failure prediction[J]. arXiv preprint arXiv:1602.03686, 2016.
[8] Choi E, Bahadori M T, Searles E, et al. Multi-layer representation learning for medical concepts[C]//Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016: 1495-1504.
[9] Nguyen P, Tran T, Wickramasinghe N, et al. Deepr: A Convolutional Net for Medical Records[J]. IEEE journal of biomedical and health informatics, 2017, 21(1): 22-30.
[10] Wu Y, Jiang M, Lei J, et al. Named Entity Recognition in Chinese Clinical Text Using Deep Neural Network[J]. Stud Health Technol Inform, 2015, 216:624-628.
[11] Fries J A. Brundlefly at SemEval-2016 Task 12: Recurrent Neural Networks vs. Joint Inference for Clinical Temporal Information Extraction[J]. 2016:1274-1279.
[12] Jagannatha A. Structured prediction models for RNN based sequence labeling in clinical text[C]//Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing. 2016: 856-865.
[13] Jagannatha A N, Yu H. Bidirectional RNN for Medical Event Detection in Electronic Health Records[C]//Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2016: 473-482.
[14] Pham T, Tran T, Phung D, et al. DeepCare: A Deep Dynamic Memory Model for Predictive Medicine[J]. 2016:30-41.
[15] Choi E, Bahadori M T, Schuetz A, et al. Doctor AI: Predicting Clinical Events via Recurrent Neural Networks.[J]. 2015, 56:301-318.
[16] Esteban C, Staeck O, Baier S, et al. Predicting Clinical Events by Combining Static and Dynamic Information Using Recurrent Neural Networks[C]// IEEE International Conference on Healthcare Informatics. IEEE, 2016:93-101.
[17] Miotto R, Li L, Kidd B A, et al. Deep patient: an unsupervised representation to predict the future of patients from the electronic health records[J]. Scientific reports, 2016, 6: 26094.
[18] Mehrabi S, Sohn S, Li D, et al. Temporal Pattern and Association Discovery of Diagnosis Codes Using Deep Learning[C]// International Conference on Healthcare Informatics. IEEE, 2015:408-416.
[19] Jacobson O, Dalianis H. Applying deep learning on electronic health records in Swedish to predict healthcare-associated infections[C]// The Workshop on Biomedical Natural Language Processing. 2016:191-195.
[20] Li H, Li X, Ramanathan M, et al. Identifying informative risk factors and predicting bone disease progression via deep belief networks[J]. Methods, 2014, 69(3):257-265.