基于残差神经网络的心脏病预测系统的设计与实现

描述

作者:蔡增玉 ,崔梦梦 ,侯佳林 ,张建伟

引 言

心脏病已经成为威胁人类生命的一项重大疾病,目前中国的心血管疾病预防工作虽然取得了初步成效,但是仍旧面临严峻的挑战,中国心血管疾病的患病率及死亡率仍处于上升阶段。防治心血管病的态势已经刻不容缓,每10例死亡患者中,就有 4例是心血管疾病患者,心脏病的致死率占心血管疾病的50%以上。

目前我国有多种方式检测患者是否患有心脏病,如动态心电图、CTA、ECG、UCG等。患者首先需要去医院做心电图检查,经验丰富的医师通过查看患者的心电图是否有心房颤动、房性前收缩、房室和束支传导阻滞等症状,以此对患者是否患有心脏病做出诊断。传统的心脏病诊断方式会因各种主观因素对结果造成影响,许多学者对此进行了深入的研究,并将机器学习的方法引入到心脏病预测中,提出了各种基于机器学习的心脏病预测方法[1⁃10]。比较典型的方法有用支持向量机和人工神经网络两种不同的模型对数据进行建模[11];使用基于聚类和 XGboost算法进行建模[12]。其中,文献[11]中设计的模型具有较高的查重率,但训练过程中容易产生过拟合问题,造成模型的泛化能力不强;文献[12]基于聚类和XGboost 算法虽然有较高的准确率,但是当有大量的训练数据时,训练速度将变得十分缓慢。

1、 基于残差神经网络的心脏病预测系统

1.1 系统功能设计

本文主要将系统分成:用户模块、病历模块、数据预处理模块、模型训练模块和预测模块,其总体的功能结构图如图1所示。

机器学习

1)用户模块。该模块包含用户注册和用户登录两个部分。用户在注册部分通过注册操作把个人的账号、密码等信息以密文的形式写入数据库;用户在登录部分输入之前注册过的账号和密码信息,通过数据库验证系统使用权限。

2)病历模块。该模块同样包含建立病历和查看病历两个部分。用户可以通过该模块收集和查看患者的个人信息以及既往病史,方便对患者的信息进行管理,还可以对用户当前的就诊情况进行记录。

3)数据预处理模块。该模块主要通过对要训练的数据进行整理,把患者的心电图与其对应的种类标签结合在一起,为之后的训练模型做准备。

4)模型训练模块。该模块通过对大量数据的学习,提取其中的规律、准则,最终形成一个能够预测心电图的模型。

5)预测模块。该模块利用之前形成的模型对患者的心电图进行分析之后,得出患者最终是否患有心脏病以及种类和概率的结论。

1.2 系统流程设计

系统的模型构成大体可以分为4个步骤,分别为数据预处理、卷积层、池化层、全连接层。本文构建的是一个16层的卷积神经网络,如图2所示。

机器学习

为了取得更好的模型训练效果,数据集选用 2017年度 PhysioNet 计算心脏病学挑战赛提供的官方数据。首先对心电图数据进行预处理,把要训练的心电图数据集贴上对应种类的标签,形成一个整体的数据+标签的标准化数据集合,为后续的训练作准备;然后将标准化的数据输入卷积神经网络模型中迭代进行卷积、池化操作,同时为了解决网络退化问题,加入残差模块,将残差模块的数据和迭代得到的数据汇总,经过运算后输入全连接层最终得到分析结果。

1.2.1 数据预处理

数据预处理模块对数据整理起到重要作用,本文训练中用到的数据来自2017年度 PhysioNet计算心脏病学挑战赛提供的官方数据,根据官方提供的参考文档,将这些心电图贴上相应种类的标签,最终形成一个trainingset,为后续的训练做准备。该模块界面设计简单,方便用户操作。

1.2.2 卷积层

对图片进行卷积运算,第一个参数是输入心电图数据,第二个参数是卷积核,卷积具体运算就是卷积核与对应图片的像素点进行相乘然后累加之后的数值,作为特征映射的值。本系统卷积层以一维卷积的方式进行卷积,卷积核大小选取 3×1,步长为 1,通过训练网络将卷积核中的每一个数值训练出来,以期达到最好的效果。本系统在卷积的过程中,当出现卷积核的大小超过图片区域时,用 0进行边缘填充,因为 0填充的方式不会对卷积产生影响,只是辅助卷积完成。

1.2.3 池化层

池化操作对不同大小的输入具有调和作用,当需要对输入大小不同的图像进行处理时,若对输入图像的大小有限制,可以通过对池化区域的偏置进行调整,就可以使不同大小的图片在调整后达到一致。池化操作一般有两种,即最大池化和平均池化。最大池化选择该区域中最大值作为池化后的值,反向传播时,梯度通过前向传播过程的最大值反向传播,其他位置梯度为0;平均池化选择区域中的平均值作为池化后的值。本系统采用最大池化,选用滤波器大小为2×1,池化步长为2,与卷积操作相互配合,形成一个卷积、池化迭代的深层网络。

1.2.4 残差神经网络

为了解决出现的网络退化问题,在卷积神经网络中加入恒等映射模块,也称残差单元。像神经网络那样,如果直接累加上一层所学的模型,会使模型训练的难度加大,但增加带有捷径连接的残差模块时,结果就会产生不同。假设某个神经网络的输入值为x,期望输出值为H(x),训练的结果是F(x),学习率为0.01,在没加入残差模块时,输入是x=1,期望值是1.01,从1.01学习到1.02,映射输出增加为0.011.01=1%;当引入残差模块时,映射F(x)是从0.01到0.02,映射输出为0.010.01=100%,后者输出变化对权重的调整作用更明显。换句话说,残差单元的思想是差分放大器,通过去掉上层输入的相同部分,从微小变化中提升学习能力。通过这种方式解决了随着层数的加深准确率和精准度减小的问题,同时还降低了梯度消失和梯度爆炸的风险。残差网络的提出将深度学习的性能提高了一个层次,使得网络层数可以从几十层上升到几千层,为残差网络在图像领域的应用奠定了基础。

1.2.5 全连接层

通过对卷积、池化操作形成的局部特征进行权值矩阵的重组,并整合成多个完整的图像,与标准图像进行对比,如果结果一样,则反向激活相应图的权值。把原始数据经过卷积、池化操作后映射到特征平面中,全连接层会提取分布式特征,全连接层把特征整合到一起,能够极大地减少特征位置给分类产生的影响。全连接层一般设置为两层,用来解决非线性问题。由于最终得出的预测结果的类别是互斥的,所以本文的全连接层采用 softmax回归进行分类,模型优化采用adam优化器。

2、 基于残差神经网络的心脏病预测系统设计与实现

2.1系统实现

2.1.1模型训练实现 模型训练是整个预测系统的基础,该部分的主要功能是为之后的预测模块提供一个泛化能力强的模型。该功能利用tensorflow框架实现了参数可调整,通过对Batch、epochs、卷积窗口大小、池化窗口大小进行调整,可以不断提高模型的准确度,不断进行训练,直到达到模型的最优性能。

2.1.2 预测分析功能实现 预测功能是整个系统的核心部分,也是系统的主界面。该功能通过载入患者的心电图数据,然后利用训练好的模型进行结果预测。该模块实现了查找用户心电图功能,系统操作人员根据患者的名字就可以把患者的心电图数据载入模型中,方便医生操作。同时,该模块还实现了心电图预览功能。通过设置显示心电图按钮,点击之后可以先粗略地观察心电图,了解一些情况。最后实现分析功能,对患者的心电图进行分析,生成最后的分析报告。

2.2 系统性能调参测试 2.2.1 Batch 大小最优测试Batch大小即批处理的尺寸大小,它的大小决定着下降的方向。选择合适的批处理大小可以迅速找到合适的学习率,加快模型的收敛。如果批处理尺寸太大的话,虽然可以提高内存的利用率,但是会减小相应的精度,对参数的修正也更加缓慢;如果批处理尺寸太小,不仅会使学习的时间增加,甚至会使模型不收敛。Batch大小一般设置成16的倍数,便于机器的处理,通过控制其他变量不变,改变 Batch尺寸大小,查看对模型准确率的影响,如图3所示。

机器学习

通过测试发现,当Batch的大小选择为32时,模型的准确率最高,再增加Batch大小会使模型的准确率降低,所以本文选定的Batch大小为32。

2.2.2 卷积核大小最优测试

卷积核大小对模型的影响至关重要。如果卷积核的尺寸选得太大的话,会使整个模型的复杂度急剧增加;如果卷积核的尺寸选得太小的话,又会使训练的速度降低。所以选择合适的卷积核大小比较重要。通常卷积核的大小设置成偶数,形成正方形。本文采用一维卷积,通过控制其他变量不变,改变卷积核的大小查看对模型准确率的影响,如图4所示。

通过测试发现,当卷积核的大小选择为16 时,模型的准确率最高,选择小于或者大于 16 的尺寸时,模型的准确率会降低,所以本文选择卷积核大小为16。

2.2.3 池化窗口大小最优测试

池化窗口的大小也会影响着模型的准确率。当池化层的窗口选择太大的话,会在一定程度上损失信息。如果选择太小的话,会影响感受野的大小变化。本文通过控制其他变量不变,改变池化窗口的尺寸观察其对模型准确率的影响,如图5所示。

机器学习

通过测试发现,当池化窗口大小为4时,模型的准确率最高,再增加池化窗口的大小时会导致模型的准确率下降。

3、 结 语

本文采用残差神经网络以心电图的方式进行机器学习,对患者是否患有心脏病进行预估。利用残差网络具有快捷连接和恒等映射的特点,解决了网络退化、网络深度限制的问题,为学习心电图的深层次特征提供了巨大的帮助。此外,本文采用PhysioNet计算心脏病学挑战赛官方提供的8528个数据进行学习,将心脏病分为4个种类,进行实验验证。其中构建了一个16层的卷积神经模型,首先将数据以300×30大小的方式输入卷积层,然后用 16×1的卷积核进行一维卷积,经过4×1大小的滤波器进行最大池化,加上批标准化处理迭代至16层,最后加上全连接层构成16层卷积神经网络。通过整体的训练后,对未训练的一批数据进行预测,其结果准确率达到76.5%。最终,利用该技术设计了一种心脏病智能预测系统,实现了对心脏病的实时预测,提供了对患者病情的详细分析报告。利用该系统可以减轻医生的负担,给医生对病情的诊断提供了辅助判断,提高了就诊的效率,对社会医疗体系提供了帮助。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分