使用卷积神经网络进行专家级别的心率不齐检测

使用卷积神经网络进行专家级别的心率不齐检测:Cardiologist-Level Arrhythmia Detection with Convolutional Neural Networks

摘要:

我们开发了一种能够检测多种心率不齐的算法(基于穿戴式心电图监测器采集的信号),该算法的性能超过了心脏病医师。我们构建了的数据集比前人大500倍。在此数据集上,我们训练了一个34层的卷积神经网络,其以心电图(ECG)序列为输入,输出类别(rhythm classes)。顶级心脏病专家对测试集的标记为 ground truth,在测试集上,我们将本文算法与6个心脏病医师进行了性能比较。本文的算法在召回率(灵敏度)和准确率(预测正确的比例)上都超过了心脏病医师。

1. 简介

本文的算法性能之所以好,主要有两个原因:1. 使用了深度卷积神经网络(CNN);2. 本文的数据集比前人的大两个数量级。

为了通过心电图检测心率不齐,算法必须能够识别不同类型的波,并且判断它们在时间上的复杂关系(discern the complex relationships between them over time)。这是困难的,因为不同的病人,心电图的波形不一样、噪声水平也不一样。

本文训练的 34 层 CNN 以任意长度的心电图信号为输入来检测心率不齐。图1展示了本文模型的流程。除了分类噪声和窦性心律,本文的网络还学习去分类和分割十二种心率不齐的类型(the network learns to clasify and segment twelve arrhythmia types present in the time-series)。模型在采样率为 200Hz 的心电图信号数据集上进行端到端的训练,心电图的每一秒都进行了标注,因此数据的标签是一个序列(a sequence of annotations for every second of the ECG as supervision)。

使得

图1. 我们训练的卷积神经网络从可穿戴心脏监测器采集的 ECG 信号中正确检测出了 sinus rhythm (SINUS) 和 Atrial Fibrillation (AFIB)

我们构建的数据集的大小是前人的 500 倍。该领域,最常用的 MIT-BIH 数据集包括 47 位病人的心电图信号。在本文,我们从使用 Zio Patch 监测器的 30 万位病人中收集、标记了 3 万位病人的心电图作为本文的数据集。为了使数据集内的类别平衡,本文特意选择了一些已经出现了心率不齐的病人。

我们在测试集上,将本文算法与认证医师的预测结果进行了对比。三位专家级的心脏病医师对测试集的 336 个样本的标记作为 ground truth。本文的算法在召回率(灵敏度)和准确率(预测正确的比例)上都超过了心脏病医师。

2. 模型

2.1 问题陈述

通过心电图检测心率不齐是一个序列到序列的任务,其以心电图信号 X = [ x 1 , . . . x k ] 为输入,输出一个序列标签 r = [ r 1 , . . . r n ] ,这里的 r i m 个不同类别(rhythm classes)中的一个。每一个输出标签对应输入的一个片段。整个输出结果覆盖了输入序列。

对于训练集中的单个样本,我们优化交叉熵:

L ( X , r ) = 1 n i = 1 n log   p ( R = r i | X )

这里 p ( ) 是概率值。

2.2 模型架构和训练

我们在本文的序列到序列任务中,使用卷积神经网络。模型总的架构如图 2 所示。网络以原始的心电图信号(时序)为输入,输出预测的标签序列。心电图的长度为 30 秒,采样率为 200 Hz,模型每秒输出一个新的预测值(model outputs a new prediction once every second)。本文的模型包含 33 个卷积层、1 个全连接层、1 个 softmax 层。

这里写图片描述

图2. 本文网络的架构。由于预激活残差块,对第一层和最后一层进行了定制。总体上,本文的网络包含 33 个卷积层,后面跟一个全连接层和一个 softmax 层

为了使深度网络可训练,本文的模型使用了类似 ResNet 的架构:使用了 shortcut、BN。本文的网络包含16个残差块,每个残差块包含 2 个卷积层。所有的卷积层的 filter size 为 16,filter 数为 64 k ,这里 k 从 1 开始,每 4 个残差块增加1。每个残差块后都下采样一次(factor 为 2),因此原始的输入最后被下采样为原始大小的 2 8 分之一。当一个残差块进行下采样时,shortcut 也使用 max-pool 进行下采样。

在每一个卷积层之前,我们使用pre-activation(BN + ReLU)。由于使用了预激活,网络的第一层和最后一层变得不一样。我们也在卷积层的激活函数之后使用了 Dropout(Dropout between the convolutional layers and after the non-linearity)。最后的全连接层、softmax 激活对每一个时间步产生一个 14 类的概率分布。

我们从头开始训练了网络,卷积层的参数初始化方式如 ResNet v1。使用默认参数的 Adam 优化器,当验证集上的 loss 停止下降就将学习速率除以 10。将训练过程中在验证集上最好的模型保存下来用于测试。

3. 数据

3.1 训练

我们从 29163 位病人收集、标记的 64121 个心电图信号构成了本文的数据集。心电图信号的采样频率为 200 Hz。训练集的每一个记录的长度都是 30 秒,并且可能包含多个 rhythm 类。每一个记录都被“三个心脏病专家组成的委员会”进行了标记:专家标记了信号中异常的段,并将其标记为 14 个 rhythm 类别中的一个。

30 秒记录的标签制作使用了一个基于 web 的心电图标记工具(专门用来标记心电图)。制作标签的都是国际认证的专家。标签采用了 offset 的方式。从而将输入心电图信号完全分割。为了提高不同标记人员标签的一致性,对每一个 rhythm 变化使用特定的规则(To improve labeling consistency among different annotators, specific rules were devised regarding each rhythm transition)。

我们将数据集分为一个训练集和验证集。训练集包含数据集 90% 的数据。数据集的划分过程中,训练、验证、测试集中的病人不重叠。

3.2 测试

我们收集了 328 个病人的 336 个心电图记录作为测试集。对于测试集,每一个记录的 ground truth 标记由三位心脏病专家组成的委员会商议产生:每个顶尖专家负责测试集不同的分割(意思应该是负责不同的种类的标签)。顶尖专家对每一个记录进行组讨论、产生一个一致的标签(意思是,综合各位专家的意见,为每一个记录产生一个合理的标签)。对于测试集中的每一个记录,我们也额外收集 6 个专家的独立标记(这6个专家不在委员会里)。委员会产生的 ground truth 用于对于模型和心脏病医师的性能。

3.3 Rhythm类

本文的算法识别 12 类心率不齐、窦性心率不齐、噪声 总计 14 类。心率失常有很多特征。附录中的表 2 展示了我们要分类的 14 类心电图。当“心电图采集设备从皮肤上脱离” 或 “心电图中的基线噪声使得隐含的 rhythm 的识别变得不可能时” 就给记录打上噪声标签。

单次心跳中心电图波形 以及 心脏的活动模式随时间的变化 决定了隐含的 rhythm(underlying rhythm)。在某些情况下,不同 rhythm 之间的区别可能是微小的,但对于治疗来说是非常重要的。例如,Mobitz I (Wenckebach) 和 Mobitz I I (这里称为 AVB TYPE2)很难区分。Wenckebach 被认为是良性的;Mobitz I I 被认为是恶性的,需要立即的关注。

附录中的表 2 也展示了 [训练、验证集]、[测试集] 中每一个 rhythm 类别病人的数量。

4. 结果

4.1 评价指标

我们使用了两个指标来衡量模式的准确度(将专家委员会的标记作为 ground truth)。

序列级别的准确度(F1):
Sequence Level Accuracy (F1): 我们用预测值与 ground truth 序列标签之间的平均重合度来衡量模型性能。对于每个记录,一个模型被要求 要在约 1 秒内给出预测(原文为: For every record, a model is required to make a prediction approximately once per second (every 256 samples))。这些预测被用来和 ground truth 标记进行比较。

集合级别的准确度(F1):
Set Level Accuracy (F1): 不再将每一个记录的标签看做一个序列,我们将每个 30 秒记录出现的异常作为该记录的 ground truth(去掉重复)。与序列级别的准确度不同,集合级别的准确度不考虑记录内 心率异常出现的时间。我们用 预测类别 和 ground truth 的 F1 Score 衡量模型的性能。

在 序列、集合两个级别的评价指标中,我们单独为每一个类别计算了 F1 score。我们然后使用类别加权平均来计算 总的 F1 score(和 准确率、召回率)。

4.2 模型 与 心脏病专家 的性能对比

这里写图片描述

图3. 测试集上的评估结果,本文模型的平均序列 F1 score 和 平均集合 F1 score 都超过了心脏病专家。

我们在测试集上评估了心脏病专家诊断的性能。回顾一下,测试集中每个记录有一个 ground truth(由3位心脏病专家组成的委员会产生) 和 独立标签(由委员会之外独立的 6 个心脏病专家产生)。为了评估心脏病专家在每一类上的性能,我们分别计算了 6 个心脏病专家的 F1 score,然后取平均值。

这里写图片描述

表 1 展示了心脏病专家、模型在不同 rhythm 类别上的性能。在绝大数 rhythm 上,本文模型的性能超过了心脏病专家。尤其注意的是:在 AV Block 心律不齐集(包括 Mobitz I (Wenckebach)、Mobitz II (AVB Type2)、complete heart block (CHB))上超过了人类专家。Mobitz II 和 CHB 是恶性的,而 Wenckebach 被认为是良性的,因此能够将恶性和良性分开是非常有用的。

表 1 也比较了总精度、总召回率、总 F1。心脏病专家的总分被定义为了各位独立的心脏病专家的得分的均值。模型的平均精度、平均召回率都超过了心脏病专家。

5. 分析

模型同时在序列、集合上的 F1 指标的平均值超过了人类心脏病专家。图 4 展示了测试集上模型预测值的混淆矩阵。很多心律不齐与窦性心律混淆。我们认为这是由于有时模棱两可的发病位置和心电图中发病位置的模棱两可。

这里写图片描述

图4. 模型在测试集上预测值的混淆矩阵。很多诊断错误都可以理解。比如,AVB Type2 和 Wenckebach 的混淆,因为两者通常在 ECG 信号中非常相似。

模型的大部分错误诊断是可以理解的。例如,Wenckebach 和 AVB Type2 的混淆是讲得通的,因为这两个rhythm波形非常相似。同样地,Supraventricular Tachycardia (SVT)、Atrial Fibrillation (AFIB) 经常和 Atrial Flutter (AFL) 混淆,这也是可以理解的,因为它们都是心室型心率不齐。我们也注意到 Idioventricular Rhythm (IVR) 有时也被误判为 Ventricular Tachycardia (VT),这也是有道理的,因为两者只在心率上有区别(心率都接近100次/分钟),很难区别。

最常见的混淆是 Ectopic Atrial Rhythm (EAR) 和 sinus rhythm 的混淆。主要区别是一个不规则的 P 波。因为差别很微小,所以很难去检测,尤其是当 P 波有一个小的幅值 或者 当信号中包含噪声时。

6. 相关的工作

7. 结论

本文提出的模型能够根据心电图信号 检测多种类型的心律不齐,并且性能超过了人类心脏病专家诊断的性能。模型性能如此高的关键是:大数据集、深度卷积神经网络(将心电图序列信号映射为心率不齐标记序列)

关于临床研究,未来可以研究 更多种类的心率不齐的诊断 及 其它形式的心脏病的诊断。有的使用单个 ECG 传感器不行,需要使用多个 ECG 传感器。

每年有超 3 亿的 ECG 数据被采集,基于ECG高精度的诊断可以节省临床医生和心脏病专家相当大的时间,并减少误诊。此外,我们希望 “本文的技术” 及 “低成本的心电图设备” 能够使得心脏病的诊断及检测更广泛。

附录

这里写图片描述