我国研究人员再创佳绩!Nature子刊Medicine发布了一篇重磅文章——《使用人工智能评估和准确诊断儿科疾病》,在业界引发了不小的反响。这是中国研究团队首次在顶级医学杂志发表有关自然语言处理(NLP)技术基于文本型电子病历(EMR)做临床智能诊断的研究成果!团队成员来自广州市妇女儿童医疗中心、加州大学圣地亚哥分校基因医学研究所、医学工程研究所希利眼科研究所、依图科技等多家机构。
这项人工智能程序,可以像医生一样准确地检测出测试结果、健康记录甚至手写笔记,诊断儿童疾病。从流感、哮喘到威胁生命的肺炎和脑膜炎,该系统的准确率始终与初级保健儿科医生相当,甚至有所超越:AI程序诊断出呼吸道感染和鼻窦炎准确率为95%;不常见的疾病的确诊率也很高:急性哮喘(97%)、细菌性脑膜炎和水痘(93%)以及单核细胞增多症(90%)。
Nature杂志在一份新闻稿件中表示:这项技术可能来的正是时候。近年来,由于疾病的范围、诊断测试和治疗方案都呈指数级增长,这就使得医生的决策过程变得更加复杂。但是伯明翰大学工程学Duc Pham教授表示:从结果来看,该系统的表现确实优于初级医生,但它绝对不能完全取代临床医生。无论使用多少训练样例,都无法保证100%正确的结果。
本文的作者之一,张康教授也表示:“医生和AI的关系,可以类比于人类驾驶员和在其监督下的自动驾驶汽车。它只会让医生在更短的时间内以更低的成本做更好的事情。”基于人工智能(AI)的方法已成改变医疗保健的有力工具。虽然机器学习分类器(MLCs)已经在基于图像的诊断中显示出其强大的性能,但对各种大规模电子健康记录(EHR)数据的分析仍然具有挑战性。
在本文,作者表明MLC可以以类似于医生使用的假设 - 演绎推理的方式查询EHR,并且发现以前的统计方法所没有找到的关联特性。作者的模型采用一种自动化的自然语言处理系统,使用深度学习技术从EHR中提取临床相关信息。本研究共分析了1362559名儿科患者就诊于某大型转诊中心的10160万个数据点,对该框架进行了训练和验证。
儿科诊断框架的工作流程图首先提取数据,基于深度学习构建NLP模型,对数据进行语义分析,其次将数据进行结构化,最后对这些完全结构化的数据库用疾病分类器处理,预测临床诊断。大型儿科队列中诊断框架的层次结构:使用分层逻辑回归分类器,来建立基于解剖学划分的诊断系统。基于器官的方法,首先将器官系统按照大类可以划分为5类,分别是呼吸系统疾病、系统性全身性疾病、神经精神疾病、泌尿生殖系统疾病、胃肠道疾病。
然后将每个大类再细分成器官子系统,甚至更具体的诊断组。在诊断层级的第一级,分类器能准确地辨别出,大量儿科患者的器官系统之间,存在哪些广泛解剖学分类。接下来诊断层级的第二级,我们拿呼吸系统疾病诊断举例。在呼吸系统疾病的诊断中,分类器可以辨别上呼吸状况和下呼吸状况。在上呼吸道系统内,可以进一步区分最常见的急性上呼吸道感染:鼻窦炎和喉炎,二者诊断准确度均超过95%。
哮喘被归类为呼吸系统中的一个独立类别,诊断系统准确地区分了无并发症的哮喘、咳嗽变异性哮喘和急性哮喘急性发作。人类医生确诊的315661次主要呼吸道疾病中,AI够正确预测其中的295403例,精确度达到92%。使用F1score来评估不同组(行)的诊断性能(Root是诊断分类的第一级)。表中第二列是AI的诊断结果,后面的1组和2组都是初级医师诊断结果,剩下的3组结果分别由三个高级医师给出。
可以看出,机器学习模型比初级医师组表现更好,但比三个经验丰富的医师组略差。AI诊断系统方法介绍。数据收集。我们的数据收集自广州妇女儿童医学中心,来自该机构的567498名儿科患者中获得了1362559次门诊的电子病历。时间范围从2016年1月至2017年7月。患者年龄中位数为2.35岁,40.11%为女性。
我们使用广东省增城妇女儿童医院的一组独立儿科患者的11926例就诊记录,将我们的AI系统和人类医生的表现进行对比。NLP模型构建。我们建立了原始信息提取模型,从电子病历的原始数据中提取出关键概念和相关类别,并将其转换为查询-答案组合的新格式的临床数据。这些数据将相关症状进行分组,通过表示模型依赖的确切特征来进行诊断,从而提高了可解释性。
三名医生策划并验证了这些模式,其中包括患者主诉、现有病史,体检和实验室报告。自然语言处理信息提取模型的设计。NLP框架有多个组成部分:词典构建、符号化、单词嵌入、图构建,以及使用LSTM架构的句子分类。词典构建。我们通过阅读训练数据中的句子,并选择临床相关单词以用于查询-答案模型构建来生成词典。词典的关键词由我们的医生策划,并使用中文医学词典生成。
接下来,根据医生的临床知识和经验,以及专家共识修订词典中的错误。迭代运行程序,直到找不到现有疾病和体检的新的概念为止。然后使用这些句子来训练单词嵌入模型。架构设计。架构由医生策划的问题列表组成,用于提取症状信息以进行诊断。比如问题有“患者是否发烧?”和“患者是否咳嗽?”。答案包括关键位置和数字函数。前者对解剖的位置进行编码,如肺或胃肠道。
因此,该值可以是分类变量,也可以是二进制数,具体取决于要素类型。然后,我们为每种类型的病例数据构建一个模式:由当前疾病的病史和患者主诉,体检与实验室检查构成。然后将此架构用于文本新格式的建模。架构设计的基本原理是增强不同医院之间的数据的互操作性,以便将来进行进一步研究。此外,与使用有可能被识别出的原始病例相比,以新格式提供病例也有助于保护患者的隐私。符号化与词嵌入。
由于缺乏公开的标记临床中文数据资源,我们为分词建立了标准数据集。我们使用pythonTensorflow包中的word2vec来嵌入具有100个特征的4,363个令牌,以表示高维空间中单词的语义和相似性。LSTM模型训练集和测试集的构建。我们创建了一个用于训练问答提取模型的小数据集,并在训练和验证队列中对问答信息进行了手动注释。对于答案为是/否的问题,我们使用0或1来表示。
对自由文本协调过程使用之前描述的基于注意力的LSTM建模。我们使用Tensorflow实现并训练模型。我们将NLP模型应用于所有电子病历中。我们没有调整超参数,而是使用LSTM模型的默认或常用的超参数设置。分层多标签诊断模型。诊断的层级结构由专家医生研究确定,采用基于解剖学的分类系统进行,因为这是在人类医师评估患者时制定差异化诊断的常见做法。
首先,将诊断范围分至一般器官系统(比如呼吸系统、神经精神病学或胃肠系统)。在每个器官系统内,再进一步分为子系统(如上呼吸道和下呼吸道),并将“全身”专门标记为一个系统,适用于全身性多器官疾病的情况。模型训练和验证。来自问答模型的数据由混合分类变量和是/否形式的答案组成。因此,我们首先通过访问矩阵将分类和答案转换为统一的二进制特征。
然后将数据随机分成训练组(包括总访问数据记录的70%)和测试组(剩余的30%)。然后通过构建问答矩阵,在训练和测试队列中对每个访问记录进行注释。对于每个中间节点,我们基于直接子项训练了多类线性逻辑回归分类器。子项的所有子类都折叠到子项的级别。使用Sklearn类逻辑回归来训练多类别分类器,使用默认的l1正则化惩罚(Lasso),模拟医生基于有限数量的症状进行的诊断。对疾病的层级聚类。
为了评估聚类结果的稳健性,我们首先将数据随机分成两半,一半用于训练,另一半用于测试,并独立地重新生成训练和测试数据的两个聚类图。我们通过在相应高度独立地切割相关的树形图,将训练和测试聚类图中的叶子分配给10个类别。使用调整的Rand指数(ARI)24评估训练和测试数据之间的类别分配一致性。结果表明我们的聚类图是稳健的。无人监督聚类NLP从儿科疾病中提取文本特征(灰色框内是聚类块)。
在一些病例中,系统使用相关的ICD-10代码进行聚类诊断,说明具备检测与人类定义的分类系统一致的临床特征的趋势。但是,另一些时候,系统会将相关类型的诊断分为一类,但不包括该类别中的其他非常类似的诊断。比如将“哮喘”和“咳嗽变异性哮喘”分到同一组中,但该类中不包括“急性哮喘恶化”,该病与“急性鼻窦炎”组合在一起。
在许多情况下,即使没有任何定向标记或分类系统,系统也成功建立了相关诊断的广泛分组,这表明我们开发的临床特征成功学习了建模和诊断的条件之间的关键的相似性和差异。AI系统与人类医生的表现对比。我们选择了20名儿科医生,根据多年的临床实践经验对11926条病历记录进行手动标记。这五个小组的医生涵盖住院医师到主任医师,临床实践从3年到25年不等。
每组中的医生从独立验证数据集中读取2981个临床记录的随机子集并分配诊断。每条患者记录被随机分配并由四名医师(每组一名)评分。我们使用F1评分评估了每个医师组在前15个诊断类别中的诊断表现。