基于交叉对比神经网络的心音分类
2021-11-04任灵黄玉丹陈颖
任灵,黄玉丹,陈颖
南京大学电子科学与工程学院,江苏南京210023
前言
心血管疾病目前已经成为人类的头号致死病种[1],医生能够根据心音信号在心血管疾病的早期发现症状并提供初步诊断[2]。心音分割[3-4]和心音分类[5-6]是心音分析主要方法。心音分类的典型方法有基于人工神经网络的分类[7]、基于支持向量机的分类[8]、基于隐马尔可夫模型的分类[9-10]和基于聚类的分类[11]。Liang 等[12]采用波包分解特征与人工神经网络的方法,成功区分了儿童心音信号中的天然杂音和病理性杂音,并且取得了80%的敏感性与90%的特异性。Ari 等[13]采用最小二乘支持向量机的方法判别心音信号是否正常,在测试集上的准确率达到86.72%。Bentley 等[14]使用无监督K 近邻(KNearest Neighbors, KNN)来区分正常心音和异常心音,在一个大小未知的数据库中报告了100%和87%的准确率。
由于先前的研究缺乏标准化、高质量、严格验证的心音数据库,不同研究之间的直接对比分析受到阻碍。同时许多研究并未单独划分测试集,使得模型在训练集上过拟合。本研究的心音信号来自2016年的PhysioNet 挑战赛的心音数据库[15],选择了Huang 等[16]提出的新型交叉对比神经网络(Cross-Contrast Neural Network, CCNN)区分正常与异常的心音信号。CCNN 是一种结合了时间序列分析方法与机器学习的神经网络,机器学习的方法弥补了传统特征提取方法中泛化能力不足、抗干扰性较差的问题,时间序列分析又从统计学的角度为深度学习的可解释性提供理论支持,使得CCNN 适用于数据量较小的医学问题。
1 基于CCNN的心音分类原理
1.1 基于信息的相似度度量理论(IBS)
Yang 等[17]提出了IBS,观测在两种不同的信号中,同一个序列出现的频率特征。如图1所示,每一个点代表某种序列,其所在位置代表其在信号中出现频次的排名,其中X 轴代表时间信号1,Y轴代表时间信号2。结合IBS,图1中点的散乱程度表示两个信号的相似程度。图中的点越集中在对角线附近,则表示两个信号越相似,图中的点越散乱,越远离对角线,两个信号的相似程度越低。目前IBS 的应用领域有:SARS 冠状病毒的基因组分类[18]、医学图像配准[19]、文学作品作者的鉴别等[20]。
图1 两个时间信号上不同序列特征出现频次秩的散点图Fig.1 Scatter plot of the rank-frequency distribution of different sequences on two time signals
1.2 CCNN
CCNN 由Huang 等[16]在2019年发表文章中首次提出,如图2所示该网络利用VGG的前4层得到特征概率,而后利用改进的IBS方法计算两个输入信号的相似程度,根据众多滤波器判断的结果进行投票,区分正常和异常的心音信号。
图2 CCNN网络结构Fig.2 Cross-contrast neural network(CCNN)structure
具体的训练过程如下:(1)将N个信号两两配对,组合成C2N个数据输入对,打上标签(类别相同label=0,不同为label=1);(2)将每批数据输入CCNN 的前半部分,在第四个卷积层获得大小为w×h×d的特征图(w×h×d=28×28×512);(3)计算特征图(w×h)中大于某个阈值的元素个数,得到d维特征向量=[p1,p2,…,pd];(4)将一个批次C2N个关系对得到的特征向量p→x、p→y输入改进后的IBS 模型,计算损失,将梯度反向传播给网络的参数,更新网络的权重;(5)反复执行过程(1)~(4),直到模型在验证集上的损失值不再下降或预测的准确率不再上升为止。
本研究使用softsign函数代替逻辑判断的阈值计数操作,同时对特征向量进行归一化操作,归一化的方法如下:
其中,fi,j代表第i号特征图中的第j个像素值,d和M分别是最后一层卷积层的维度和输出特征图的像素个数。CCNN 在原有IBS 方法的基础上提出一种改进算法—Modified IBS 算法(简称ModIBS),将IBS的值归一化到0~1。设原始IBS 值为Normal IBS,简称NorIBS,公式如下:
其中,Rx,i是第x个数据输出概率里第i个概率值的排名,Fi是第i个滤波器在输入x和y中的概率熵之和,Z是归一化系数。
随机打乱概率向量的其中之一,得到混乱状态下的IBS值,命名为RevIBS。
α为指数放大因子,最终的损失函数采用交叉熵计算:
2 实验方法
2.1 预处理
本研究在2016年PhysioNet/Cinc 挑战赛提供的开源心声数据集上展开[15],原始数据为2 000 Hz 的wav 格式心音信号。数据预处理流程如下:首先,读入2 000 Hz 采样的一维时间序列,对原序列进行1 000 Hz 的降采样。然后,根据心音信号的频率范围,使用25~400 Hz 的带通滤波器进行滤波。最后,对序列做平滑处理。心音信号的预处理过程如图3所示。
图3 心音信号预处理流程图Fig.3 Preprocessing of heart sound signals
本研究选取VGG 网络进行特征提取,其输入信号的维度为224×224×3。采用长度为512 的窗口截取原始信号并叠加汉明窗,通过短时傅里叶变换得到频谱图,将频谱图的前224个幅度特征存储为1×224大小的数组。以步长256 滑动窗口,重复上述步骤,直到取满224 个窗口为止。对每一个1×224 的特征进行一阶差分和二阶差分并和原数组叠加,最终输出224×224×3 的频谱图。在变换后的数据上划分训练集与测试集(比例为4:1),使用训练集进行CCNN网络迭代训练。
2.2 训练与测试
本研究的训练与测试流程如图4所示。
图4 基于CCNN的心音信号分类的训练和测试流程图Fig.4 Flowchart of training and testing of heart sound signal classification based on CCNN
2.2.1 模型训练假设一个批次的数据大小为N张图像,两两配对得到C2N个数据输入对。由于计算平台GPU 内存有限,本文采取批量梯度下降的方法对网络进行训练。为了保证输入数据的0、1平衡性,具体数据输入方法如下:(1)每次从训练集中顺序读取1个锚点文件,假设其为正常心音;(2)从训练集剩余的文件中分别挑选x- 1张和y张正常、异常心音频谱图,使得以下公式成立:
从高校办学职能出发,高校投入成本及功能产出的形式是多样的,尤其在建立指标体系时,各种功能、成本指标量化的数据具有不同的量纲,因此,对功能指标、成本指标无量纲处理是价值管理理论与方法应用于高校绩效考核中必须解决的重要环节。在实际应用中,可引入功能绩点与成本级点的概念,功能绩点反映的是功能产出的水平,成本级点反映的是资源投入的情况,制定统一的定量标准,并对照标准进行定量计算,实现功能与成本数据的无量纲化。
(3)选取正常心音和异常心音的个数分别为x和N-x的近似正整数,组成数据大小为N的批次,输入网络;(4)计算损失,将梯度反向传播给网络的参数,更新网络的权重;(5)重复步骤(1)~(4),直到遍历完训练集中的所有锚点文件。
为了解决网络的过拟合与陷入局部最优的问题,本研究在CCNN 的基础上,加入了可动态调整的学习率和L2 正则化。其中,学习率决定梯度对CCNN 网络权重调整幅度的大小;L2 正则化则可以提高模型的泛化能力并且防止过拟合。图5和图6展示了训练过程。
图5 准确率和损失值随着训练步骤进行的变化趋势Fig.5 Variation trends of accuracy and loss value with the training steps
图6 TP和TN随着训练步骤进行的变化趋势Fig.6 Variation trends of TP and TN with the training steps
训练过程中随着训练步数的推进,训练集的准确率逐渐上升,损失值逐渐下降,同时真阴率(TN)、真阳率(TP)也稳步上升。本研究划分出20%数据作为验证集,为了避免过拟合问题,当模型在验证集上的准确率开始下降时停止训练。这样的训练方式在维持数据输入均衡性的同时保证训练的稳定性,通过将信号两两组成信号对的方法,有效填补数据,缓解了深度神经网络难以在小数据集上收敛的问题。
2.2.2 模型测试将第2.2.1 小节训练得到的模型用于心音信号的测试。采用与训练集数据完全相同的预处理方式将未知正常或异常的心音信号转化为频谱图,并且将未知心音信号与训练集中的正常和异常心音信号进行两两组合构成信号对,如图4b所示,以预测结果为0(两幅图像来源于同一分类)最多的类别作为最终分类结果。
3 模型评估
3.1 评价准则
心音记录的分类分为3个层次:正常、异常、不确定,总分根据分类的各项指标综合计算[6]。
总体得分Score、灵敏度Se、特异性Sp定义如下:
表1 分类结果具体定义Tab.1 Definitions of the classification results
3.2 测试结果
本研究在测试集上进行了10 次5 折交叉验证,结果如表2所示。本研究选取了常用的机器学习方法与CCNN 进行对比,结果如表3所示。可以看到,上述几种方法中,CCNN 对心音分类的效果最好。CCNN的预期是经过训练后,同一类别的两幅图像中的点应当聚集在对角线附近,而对于不同类别的两种信号,其特征分布则呈现出散乱的状态。为了验证实验预期,本文选择3 段心音信号,其中2 段来自正常心音信号,1段来自异常心音信号。
表2 CCNN测试结果Tab.2 CCNN test results
表3 常用的机器学习方法与CCNN进行对比Tab.3 Comparison between commonly-used machine learning methods and CCNN
观察这两组心音信号的特征分布在训练前后的变化。图7展示的为第四层卷积在训练前和训练后的特征分布。可以看到,对于相同类别的信号,从图7a 到图7b 呈现出往对角线聚集的趋势,而对于不同类别的信号,从图7c 到图7d 呈现远离对角线的散乱趋势。图8展示了3段不同心音信号的原始频谱图(图像大小224×224)与通过几种滤波器后输出的频谱图(图像大小28×28)。
图7 模型训练过程中分布的变化Fig.7 Distribution changes during model training
图8 不同心音信号的原始频谱图与通过几种滤波器后的频谱图Fig.8 Original spectrograms of different heart sound signals and spectrograms filtered by different filters
从心音信号的维度来看,同一个滤波器对不同的心音信号有着不同的响应。可以明显地看出,394号滤波器对正常心音信号响应更强,27 号滤波器在异常信号上的响应更强,而72 号滤波器不管对正常信号还是异常信号的响应都没有明显的强弱关系,代表了某种区分度较小的模式。从这3 个典型的滤波可以看出,不同滤波器表现出不同的区分模式,而这些不同的滤波器,在一次次迭代的过程中更新它们的权重,最终可以得到一组最能区分正常与异常心音信号的权重数据,达到了最初对CCNN 结合时间序列分析方法的设想。
这种新的网络结构与训练方法,同时利用深度卷积神经网络与IBS方法的优点,针对医学数据做出了改进,一定程度上克服了诸如数据量少、数据集差异不明显的弊端。而与传统机器学习中人工设计特征的方法相比,深度神经卷积网络的引入可以由网络提取出对分类有用的特征,大大简化特征提取流程。其中两两组合信号的方式给网络提供更多的信息,放大不同类别心音信号间的差异性,并且一定程度上扩充了心音数据的数据量。这种方法尤其适用于数据难以获取,并且数据数量较少的医学场景。
4 结语
本文受到IBS 与CNN 的启发,将新型深度神经网络CCNN 用于心音信号的分类。在此基础上,采用了IBS 中序列相似性的度量方法,借助CNN 的强大特征表现能力,对动态生成的信号进行分类。本文采用的训练方法主要有以下3 个主要特点:(1)结合统计学的思想,将先验知识加入神经网络的特征提取过程,使网络具备良好的泛化性;(2)使用交叉对比的输入模式扩展数据集,引入了除内容信息之外的对比信息;(3)CCNN 前半部分的特征抽取网络架构灵活易调整。
综上所述,本文利用CCNN 在心音数据集上取得了较好的结果(灵敏度为0.834 6,特异性为0.962 3,综合得分为0.898 5),证明CCNN 在医学数据集上的可行性,为小数据深度学习提供一种新思路。