论文部分内容阅读
随着我国人口结构和社会环境的改变,心血管病已经超越肿瘤成为致死率第一的疾病。大多数心血管疾病常伴有心律失常,本文针对这一特征,从心电信号的自动识别和类型分析处入手,研究并提出了一种基于深度学习的心电图分类算法。首先对原始的心电信号数据集进行滤波、归一化、求取信号功率图谱和加窗函数等处理,数据经过预处理后能够更好地从其频域中提取相关特征;考虑到心电图本身具有一定的时序特性,使用长短时记忆网络来捕捉心电数据的前后依赖关系,通过多分类器实现多标签并进行相关训练。
本文采用一种改进型的LSTM的高效变体网络(GRU)将经过预处理后的心电信号作为网络的输入序列,将心电信号的特征提取并分类。评价该模型性能的指标为分类准确率,同时在2018生理信号挑战赛的数据(2018数据集)上进行了测试,取得了良好的实验结果。
随着计算机深度学习的不断发展,建立一种快速有效识别心电图的深度学习网络,对整个社会医疗领域的发展有着重要意义。利用神经网络对心电信号进行分类目前还是一个较新的领域。Andrew Y.Ng等提出了一种固定采样周期的卷积神经网络,通过固定256个采样点来生成一个标签。Lipton等提出了一种用于多标签分类的LSTM网络,该网络提取心电信号的时序特征来进行分类;Zihlmann等提出了采用卷积神经网络的架构,对心电信号进行识别和分类。
本文使用的模型为改进型的GRU网络,与传统的GRU相比,GRU在算法上增加了用于多标签的分类器机制,同时该网络所接受的输入信号为心电信号非固定周期的频域特征。
数据集与处理方法
数据集
本文使用的是2018數据集,心电图记录的采样频率保持500 Hz,训练集包含了6796个人的十二导联心电图记录,持续时间为6~60s,每种病例类型的分布如表1所示。
数据预处理
2018数据集的采样率为500 Hz,心电信号的平均持续时间为15s左右,最长的持续时间可以达到60s,这会造成数据集存在着较长的数列,而GRU模型的输入序列的合适范围是500~1000。若将2018数据集直接作为模型的输入,则会出现因为序列过长而产生反向传播过程导致梯度消失的问题。因此需要对原始数据进行预处理。
为了选择合适的输入序列长度以及提取心电信号的频域特征,使用FFT窗口函数将庞大的原始数据映射为适宜模型计算的长度序列,并在时间窗口中计算频谱图,为实现心电数据的非固定周期采样,通过加窗来尽可能减少在非整数个周期上进行FFT产生的误差;由于人体心电信号的高频成分较少,且有一定的随机性,其功率图谱的高次谐波部分峰峰之间的区别较为模糊,在选择加窗函数时,优先考虑良好频谱分辨率的具有窄主瓣的平滑窗。
由于人体心电信号是非常微弱的生理低频电信号,频率范围为0.1~35Hz,主要集中在5~20Hz;同时,肌电信号的频率为20~5000 Hz,其主要成分的频率与肌肉的类型有关,一般在30~300Hz。为了抑制噪声,需要对ECG信号进行滤波处理,选择巴特沃斯低通滤波器来滤除肌电干扰。利用滤波器对原始心电信号进行消噪处理,结果如图1所示
(a)原始心电信号
GRU网络模型
长短期记忆网络—LSTM
长短期记忆网络是一种特殊的循环神经网络,最大的特点在于引入了门机制和记忆单元,在LSTM网络中不会出现诸如梯度消失和梯度爆炸等问题。LSTM模型就像是一条流水线,不同的门和记忆单元对输入量进行一步步的深加工,在LSTM模型中,输入序列通过输入门运算后进入记忆单元,记忆单元通过输出门被运送到其他LSTM单元。图2给出了LSTM存储器单元的内部结构。
然而,由于其结构复杂性,求解LSTM模型通常需要很长的时间。为了加快训练速度,GRU被提出作为改进LSTM的简易方便的模型,目前GRU模型并未用于心电信号的识别。
改进型GRU网络
GRU就是LSTM的一个变形状态,它将遗忘门和输入门组合成了更新门,但GRU模型的计算和实现更加简单。一个典型的GRU单元由2个门组成:复位门和更新门。
类似于LSTM单元,t时刻的隐藏状态输出是由t-1时刻的隐藏状态值和t时刻的输入序列计算得来,如式(6)所示。
与传统的单一标签分类不同,心律失常往往会造成多个疾病同时存在,传统的GRU模型在多标签处理数据方面有着一定的局限性,于是本文引入了十二导联多标签分类的算法。
如图4所示,在改进后的GRU模型中,x1,x2,x3,……,xi表示经过数据预处理后的各个导联的向量,这些向量经过GRU模型的计算,输出为对应的h1,h2,h3,…,hi,然后GRU模型中添加了多标签分类层v,其中v层由keras库中multi-label算法构成,通过训练不同的病理特征,分析出各个导联输出所对应的各种疾病分布的概率值a1,a2,a3……,ai,并通过Sofimax函数层对层的输出进行计算分析,从而达到十二导联多标签分类的目的。
实验结果与讨论
实验环境
本实验所采用的设备为Windowsl0操作系统,i5四核处理器,8G运行内存。所采用的编程语言为Python3.6、C语言,并在matlab平台以及pytorch平台分别进行数据预处理和模型搭建测试的环节,pytorch平台上配合Keras以及Tensorflow深度学习框架进行库的调用和测试训练。
实验结果
为了进行模型性能的评估,引入了混沌矩阵,矩阵的每一列代表了数据预测的类别,而每一列的总数代表预测为该类别数据的数目;每一行代表了数据的实际类别,每一行的数据总数表示该类别实际的数据数目。混沌矩阵具有4个基础指标:TP,TN,FP,FN。
TP为真实值是positive,模型认为是positive的数量;TN为真实值是positive,模型认为是negative的数量;FP为真实值是negative,模型认为是positive的数量;FN为真实值是negative,模型认为是negative的数量。
为了更直观地查看模型的性能,可以分别计算此时的tpr与fpr,tpr和fpr的计算公式如下式(7)、式(8)所示;根据这组tpr以及fpr值就可以画出ROC曲线,由该ROC曲线就可以判断模型的性能,ROC曲线如图5所示。
可以很直观地看出,GRU模型对测试集中的数据进行识别的准确率达到了0.88,模型性能良好。同时对所有的测试集进行得分F的计算。实验结果如下表2所示。
可以看出在2018数据集上,该模型对AF的分类效果最好,在RBBB上的分类效果最差,对所有疾病的分类准确率均大于0.7,这表明模型具有良好的分类性能,具有一定的可行性和独特的优势。
本文提出了一种改进型的GRU网络模型来识别并分类心电信号,与主流的深度学习识别模型相比,该模型提取了心电信号的频域特征,滤波处理,消除掉不必要的干扰信号,利用多标签识别算法,更加简单,计算量也较少。缺点是在频域处理过程中,容易丢失少部分时域信息,从而降低某些罕见病症的识别准确率。在下一步工作中,需要继续研究信号的特征提取,在减少计算量的同时,保证信息特征的完全性和信号分类的准确性。
本文采用一种改进型的LSTM的高效变体网络(GRU)将经过预处理后的心电信号作为网络的输入序列,将心电信号的特征提取并分类。评价该模型性能的指标为分类准确率,同时在2018生理信号挑战赛的数据(2018数据集)上进行了测试,取得了良好的实验结果。
随着计算机深度学习的不断发展,建立一种快速有效识别心电图的深度学习网络,对整个社会医疗领域的发展有着重要意义。利用神经网络对心电信号进行分类目前还是一个较新的领域。Andrew Y.Ng等提出了一种固定采样周期的卷积神经网络,通过固定256个采样点来生成一个标签。Lipton等提出了一种用于多标签分类的LSTM网络,该网络提取心电信号的时序特征来进行分类;Zihlmann等提出了采用卷积神经网络的架构,对心电信号进行识别和分类。
本文使用的模型为改进型的GRU网络,与传统的GRU相比,GRU在算法上增加了用于多标签的分类器机制,同时该网络所接受的输入信号为心电信号非固定周期的频域特征。
数据集与处理方法
数据集
本文使用的是2018數据集,心电图记录的采样频率保持500 Hz,训练集包含了6796个人的十二导联心电图记录,持续时间为6~60s,每种病例类型的分布如表1所示。
数据预处理
2018数据集的采样率为500 Hz,心电信号的平均持续时间为15s左右,最长的持续时间可以达到60s,这会造成数据集存在着较长的数列,而GRU模型的输入序列的合适范围是500~1000。若将2018数据集直接作为模型的输入,则会出现因为序列过长而产生反向传播过程导致梯度消失的问题。因此需要对原始数据进行预处理。
为了选择合适的输入序列长度以及提取心电信号的频域特征,使用FFT窗口函数将庞大的原始数据映射为适宜模型计算的长度序列,并在时间窗口中计算频谱图,为实现心电数据的非固定周期采样,通过加窗来尽可能减少在非整数个周期上进行FFT产生的误差;由于人体心电信号的高频成分较少,且有一定的随机性,其功率图谱的高次谐波部分峰峰之间的区别较为模糊,在选择加窗函数时,优先考虑良好频谱分辨率的具有窄主瓣的平滑窗。
由于人体心电信号是非常微弱的生理低频电信号,频率范围为0.1~35Hz,主要集中在5~20Hz;同时,肌电信号的频率为20~5000 Hz,其主要成分的频率与肌肉的类型有关,一般在30~300Hz。为了抑制噪声,需要对ECG信号进行滤波处理,选择巴特沃斯低通滤波器来滤除肌电干扰。利用滤波器对原始心电信号进行消噪处理,结果如图1所示
(a)原始心电信号
GRU网络模型
长短期记忆网络—LSTM
长短期记忆网络是一种特殊的循环神经网络,最大的特点在于引入了门机制和记忆单元,在LSTM网络中不会出现诸如梯度消失和梯度爆炸等问题。LSTM模型就像是一条流水线,不同的门和记忆单元对输入量进行一步步的深加工,在LSTM模型中,输入序列通过输入门运算后进入记忆单元,记忆单元通过输出门被运送到其他LSTM单元。图2给出了LSTM存储器单元的内部结构。
然而,由于其结构复杂性,求解LSTM模型通常需要很长的时间。为了加快训练速度,GRU被提出作为改进LSTM的简易方便的模型,目前GRU模型并未用于心电信号的识别。
改进型GRU网络
GRU就是LSTM的一个变形状态,它将遗忘门和输入门组合成了更新门,但GRU模型的计算和实现更加简单。一个典型的GRU单元由2个门组成:复位门和更新门。
类似于LSTM单元,t时刻的隐藏状态输出是由t-1时刻的隐藏状态值和t时刻的输入序列计算得来,如式(6)所示。
与传统的单一标签分类不同,心律失常往往会造成多个疾病同时存在,传统的GRU模型在多标签处理数据方面有着一定的局限性,于是本文引入了十二导联多标签分类的算法。
如图4所示,在改进后的GRU模型中,x1,x2,x3,……,xi表示经过数据预处理后的各个导联的向量,这些向量经过GRU模型的计算,输出为对应的h1,h2,h3,…,hi,然后GRU模型中添加了多标签分类层v,其中v层由keras库中multi-label算法构成,通过训练不同的病理特征,分析出各个导联输出所对应的各种疾病分布的概率值a1,a2,a3……,ai,并通过Sofimax函数层对层的输出进行计算分析,从而达到十二导联多标签分类的目的。
实验结果与讨论
实验环境
本实验所采用的设备为Windowsl0操作系统,i5四核处理器,8G运行内存。所采用的编程语言为Python3.6、C语言,并在matlab平台以及pytorch平台分别进行数据预处理和模型搭建测试的环节,pytorch平台上配合Keras以及Tensorflow深度学习框架进行库的调用和测试训练。
实验结果
为了进行模型性能的评估,引入了混沌矩阵,矩阵的每一列代表了数据预测的类别,而每一列的总数代表预测为该类别数据的数目;每一行代表了数据的实际类别,每一行的数据总数表示该类别实际的数据数目。混沌矩阵具有4个基础指标:TP,TN,FP,FN。
TP为真实值是positive,模型认为是positive的数量;TN为真实值是positive,模型认为是negative的数量;FP为真实值是negative,模型认为是positive的数量;FN为真实值是negative,模型认为是negative的数量。
为了更直观地查看模型的性能,可以分别计算此时的tpr与fpr,tpr和fpr的计算公式如下式(7)、式(8)所示;根据这组tpr以及fpr值就可以画出ROC曲线,由该ROC曲线就可以判断模型的性能,ROC曲线如图5所示。
可以很直观地看出,GRU模型对测试集中的数据进行识别的准确率达到了0.88,模型性能良好。同时对所有的测试集进行得分F的计算。实验结果如下表2所示。
可以看出在2018数据集上,该模型对AF的分类效果最好,在RBBB上的分类效果最差,对所有疾病的分类准确率均大于0.7,这表明模型具有良好的分类性能,具有一定的可行性和独特的优势。
本文提出了一种改进型的GRU网络模型来识别并分类心电信号,与主流的深度学习识别模型相比,该模型提取了心电信号的频域特征,滤波处理,消除掉不必要的干扰信号,利用多标签识别算法,更加简单,计算量也较少。缺点是在频域处理过程中,容易丢失少部分时域信息,从而降低某些罕见病症的识别准确率。在下一步工作中,需要继续研究信号的特征提取,在减少计算量的同时,保证信息特征的完全性和信号分类的准确性。