摘要
心音听诊是早期筛查心脏病的有效诊断方法。为了提高异常心音检测性能,提出了一种基于双向长短时记忆(Bi⁃directional long short⁃term memory,Bi⁃LSTM)网络和自注意力机制(Self⁃attention mechanism,SA)的心音分类算法。对心音信号进行分帧处理,提取每帧心音信号的梅尔频率倒谱系数(Mel⁃frequency cepstral coefficients,MFCC)特征;将MFCC特征序列输入Bi⁃LSTM网络,利用Bi⁃LSTM网络提取心音信号的时域上下文特征;通过自注意力机制动态调整Bi⁃LSTM网络各时间步输出特征的权重,得到有利于分类的更具鉴别性的心音特征;通过Softmax分类器实现正常/异常心音的分类。在PhysioNet/CinC Challenge 2016心音数据集上对所提出的算法使用10折交叉验证法进行了评估,得到0.942 5的灵敏度、0.943 7的特异度、0.836 7的精度、0.886 5的F1得分和0.943 4的准确率,优于对比的典型算法。实验结果表明,该算法在无需进行心音分段的基础上就能有效实现异常心音检测,具有潜在的临床应用前景。
目前,心血管疾病在我国城乡居民疾病死亡构成比中占据首
在现有的大多数心音分类算法中,首先要对心音信号进行心音分段,即确定每个心动周期中第一心音(S1)、心脏收缩期(Systole)、第二心音(S2)和心脏舒张期(Diastole)4个状态的位置区间,为心音特征提取与心音分类提供定位基准。心音分段是对心音信号进行分类的前提和基础,心音分段的精度对心音分类的性能具有至关重要的影响。然而,对于一些受病理性杂音及噪音干扰严重的异常心音来说,由于心动周期的结构并非是有规则的,所以准确地对心音信号进行分段的难度较大。为了避免受心音分段的定位精度不高而造成心音分类性能下降的影响,本文提出一种无需进行心音分段的心音分类算法。
心音信号是准周期性的,每个心音信号的周期称之为心动周期(Cardiac cycle)。每个心动周期含有S1、收缩期、S2和舒张期4种状态。在心音自动分析技术中,国内外研究人员提出了大量的心音分类方法,主要分为基于传统机器学习的分类方法和基于深度学习的分类方法两大类。
基于传统机器学习的心音分类方法先提取人工设计的心音特征,然后再采用基于支持向量机(Support vector machine,SVM)、朴素贝叶斯或隐马尔可夫模型(Hidden Markov model,HMM)的分类器进行心音分类。Deng
基于深度学习的心音分类方法采用深度神经网络自动提取心音特征并完成心音分类。Chen
上述心音分类方法均需要在特征提取前有效地完成心音分段,即定位心动周期的S1、收缩期、S2、舒张期4种状态。然而,心音分段一直是心音自动分析技术中极具挑战性的难题,因此一部分研究人员开始研究无需分段的心音分类方法,从而规避因分段不佳给最终分类结果带来的影响。
Singh
鉴于Bi⁃LSTM网络对时间序列具有良好的建模能力,提出了一种基于Bi⁃LSTM网络和自注意力机制的心音分类算法,其原理框图如

图1 基于Bi-LSTM网络和自注意力机制的心音分类原理框图
Fig.1 Block diagram of heart sound classification based on Bi-LSTM and self-attention mechanism
首先,对心音信号进行分帧处理,提取每帧心音信号的MFCC特征;接着,将MFCC特征序列输入Bi⁃LSTM网络,利用Bi⁃LSTM网络提取心音信号的时域上下文特征;然后,在此基础上再通过自注意力机制动态调整Bi⁃LSTM网络各个时间步输出特征的权重,得到有利于分类的更具鉴别性的心音特征;最后,通过Softmax分类器实现正常/异常心音的分类。
心音信号是一种一维时序信号,尽管通过傅里叶变换将其映射至频域能够呈现信号的频谱分布,然而这种变换会导致时域信息的丧失,无法反映频谱分布随时间的动态变化。为了解决该问题,很多时频分析方法应运而生,其中,短时傅里叶变换(Short⁃time Fourier transform,STFT)是最经典的时频分析方
(1) |
梅尔频率倒谱和倒谱的区别在于,梅尔频率倒谱的频带划分是在梅尔标度上等距划分的,比用于正常的对数倒频谱中的线性间隔的频带更能反映人耳的感知能力与声音频率之间的非线性关系。相关实验验证了MFCC能够有效表示心音信号的特
心音MFCC特征的提取流程主要包括分帧、加窗、快速傅里叶变换、Mel标度转换、计算对数能量和离散余弦变换等操作,具体步骤如下:
(1)分帧、加窗。首先对每个心音片段进行分帧处理,使得每帧的心音信号近似为平稳信号;紧接着对每帧心音信号进行加窗操作,以避免频谱泄漏现象。但加窗使得每一帧两端的信号变弱,为了缓解该问题,帧与帧之间有一定的重叠,相邻两帧的起始位置的时间差叫做帧移。本文选择汉明(Hamming)窗,窗长与帧长相同。设每个心音片段包含的帧数为,分帧、加窗后的第帧信号为,其中表示帧序号,;表示第帧信号的采样点序号,,为每帧心音信号的采样点总数。
(2)快速傅里叶变换。对加窗操作后的每帧心音信号进行快速傅里叶变换,得到各帧心音信号的频谱,其中第帧信号频谱的计算公式为
(2) |
式中:为频域中的频率索引,为快速傅里叶变换的点数。在此基础上对频谱取模平方可得到对应的功率谱,将时域信号转换为频域上的能量分布。
(3)Mel标度转换。用Mel滤波器组对功率谱进行滤波和标度转换处理。Mel滤波器组的频率响应为
(3) |
式中:为滤波器序号,,为Mel滤波器组中滤波器的个数,研究中一般取1
(4)计算对数能量。对Mel标度转换的结果进行取对数运算,第帧心音信号的对数能量的计算公式为
(4) |
取对数运算可实现对心音频谱动态范围的压缩,放大低能量下的能量差异。
(5)离散余弦变换。为了减少滤波器重叠造成的能量相关性,对第帧心音信号的对数能量进行离散余弦变换,得到第帧信号的MFCC,计算公式为
(5) |
式中为第帧信号MFCC的阶数索引。
这样,从每一帧心音信号中提取到一个维的MFCC特征向量,将每一帧的MFCC特征向量按帧顺序排列起来,得到每个心音片段的MFCC特征向量序列,其中表示第帧心音信号的MFCC特征向量。
循环神经网络(Recurrent neural network,RNN)在处理较长输入序列时存在梯度消失或梯度爆炸的问题,这导致其难以捕捉输入序列中的长期依赖关系。针对这一问题,LSTM网络通过引入遗忘门、输入门和输出门3种门控单元作为内部机制来调节信息流,从而有效地处理较长输入序列并捕捉长期依赖关系。但LSTM网络只能从前向后获取输入序列信息,不能充分利用输入序列中的下文信息。而Bi⁃LSTM网络由两个结构相同、方向相反的LSTM层组成,即包含前向LSTM层和后向LSTM层,如

图2 Bi-LSTM网络结构示意图
Fig.2 Bi-LSTM network architecture
对于每个心音片段,将帧心音信号的MFCC特征序列作为Bi⁃LSTM网络的输入。设第个时间步当前神经元的输入为,前向LSTM层隐藏状态和后向LSTM层隐藏状态分别提取正、反向时域特征,分别如
(6) |
(7) |
式中:和分别为前向LSTM层中当前神经元和前一个神经元的隐藏状态向量,和分别为后向LSTM层中当前神经元和前一个神经元的隐藏状态向量。
将正、反两个方向隐藏层提取的特征向量进行拼接,得到第个时间步的时域上下文特征向量,如
(8) |
式中:表示对特征向量进行拼接的函数。
Bi⁃LSTM网络个时间步的时域上下文特征向量组成输出特征序列。
自注意力机制允许输入序列中的每个元素都与序列中的其他所有元素进行交互,通过计算每个元素对其他所有元素的注意力权重,然后将这些权重应用于对应元素的表示,从而得到一个加权和的输出表示。自注意力机制不依赖于外部信息或先前的隐藏状态,完全基于输入序列本
本文通过自注意力机制来动态调整Bi⁃LSTM网络各个时间步输出特征的权重,得到有利于分类的更具鉴别性的心音特征。将Bi⁃LSTM网络输出的特征序列作为自注意力层的输入。自注意力层首先为特征序列中的每个输入向量分别生成一个查询向量、一个键向量和一个值向量,其中,、、、的维度均为Bi⁃LSTM网络隐藏状态维度;接着计算每个查询向量与键向量之间的点积,其中,得到一个大小的注意力分数矩阵,该矩阵中的每个元素表示每个查询向量与键向量之间的相关性分数,其中,,;然后使用函数对注意力分数矩阵进行归一化,在应用Softmax之前,通常会除以一个缩放因子来稳定梯度;最后使用归一化后的注意力权重对值向量进行加权求和,加权求和的结果是自注意力机制的输出,包含了输入序列中所有位置的加权信息。自注意力层最终的输出特征向量为
(9) |
使用Softmax分类器对自注意力层输出的特征向量进行分类,将心音信号分为正常心音或异常心音两种类别。设为心音信号所属类别的编号,表示正常心音,表示异常心音,任意一个心音信号以一定的概率被分类为正常心音或异常心音。
将Softmax分类器定义为
(10) |
式中:为一个2行1列的列向量,每行的表示特征向量被分类为第类的概率,;为Softmax分类器待估计的参数,并且构成参数矩阵,为的转置。
对于,选择为最大值所对应的作为Softmax分类器输出的心音类别编号,即
(11) |
在训练分类模型时,将与训练样本标注的类别编号做比较,如果一致,则分类正确,否则分类错误。常用的交叉熵损失函数为
(12) |
式中:表示特征向量被分类为第类的概率,为示性函数,当时,;当时,。
在正常/异常心音二分类任务中,为了缓解心音数据集样本的类别不平衡问题,即正常心音的样本数目远远多于异常心音的样本数目的不平衡问题,本文采用类加权交叉熵损失函数来训练分类模型。
类加权交叉熵损失函数是对交叉熵损失函数的一种改进,通过为每个类别分配一个权重实现不同类别的加权处理,以调整不同类别的重要性。设、分别表示正常心音和异常心音的权重系数,类加权交叉熵损失函数的表达式为
(13) |
在本文中,为了加大异常心音被错误预测为正常心音的代价,设置,等于正常心音的训练样本数与异常心音的训练样本数之比值。
为了验证所提出的心音分类算法的有效性,使用PhysioNet/CinC Challenge 2016数据
由于数据集中的每一条心音记录时长不同,本文对每一条心音记录进行切分以截取固定时长的心音片段为研究对象。为了保证切分后的心音片段至少包含一个完整心动周期,将数据集中的每一条心音记录切分为多个时长为2 s的心音片段,并丢弃时长不足2 s的部分,最终得到34 490个心音片段,其中包含26 410个正常心音片段,8 080个异常心音片段。
实验基于TensorFlow深度学习框架,实验硬件环境为搭载Linux内核的台式机,硬件配置为NVDIA Geforce GTX1080TI GPU。实验中,使用类加权交叉熵损失函数和Adam优化算法对分类模型进行训练,初始学习率设置为0.001,衰减率为1e-6,批量大小为32,训练轮次为20,丢弃率设置为0.5。按照10折交叉验证的方法对数据集进行划分,将数据集按9∶1的比例划分为训练集与测试集,每次选择一个不同的测试集,进行10次实验。每次实验使用的训练集包含23 769个正常心音片段,7 272个异常心音片段;测试集包含2 641个正常心音片段,808个异常心音片段。对这10次实验的灵敏度、特异度、精度、F1得分和准确率取平均作为心音分类模型的性能指标。
使用灵敏度(Sensitivity)、特异度(Specificity)、精度(Precision)、F1得分、准确率(Accuracy)评估模型分类性能,其计算公式分别为
(14) |
(15) |
(16) |
(17) |
(18) |
式中:表示测试样本中标签为异常心音且被正确预测为异常心音的样本数目,即真阳性;表示测试样本中标签为异常心音但被错误预测为正常心音的样本数目,即假阴性;表示测试样本中标签为正常心音但被错误预测为异常心音的样本数目,即假阳性;表示测试样本中标签为正常心音且被正确预测为正常心音的样本数目,即真阴性。
心音信号是一种时变的非平稳信号,具有短时平稳性,一般认为在10~30 ms的时间内心音信号是平稳

图3 帧长对分类性能的影响
Fig.3 Impact of frame length on classification performance
在确定帧长后,再进一步选择合适的帧移。实验中,固定帧长为20 ms,以5 ms的时间间隔在5~15 ms范围内调整帧移的取值,测试不同的帧移对灵敏度、特异度、精度、F1得分和准确率的影响,其结果如

图4 帧移对分类性能的影响
Fig.4 Impact of frame shift on classification performance
对使用LSTM、Bi⁃LSTM以及引入自注意力机制的Bi⁃LSTM+SA网络模型进行了对比实验,并在模型训练过程中分别使用交叉熵损失函数和类加权交叉熵损失函数,实验结果如
损失函数 | 网络模型 | F1 | ||||
---|---|---|---|---|---|---|
交叉熵损失函数 | LSTM | 0.809 9 | 0.921 2 | 0.758 8 | 0.783 5 | 0.895 2 |
Bi⁃LSTM | 0.852 4 | 0.932 4 | 0.794 2 | 0.822 3 | 0.913 7 | |
Bi⁃LSTM+SA | 0.874 3 | 0.940 6 | 0.818 4 | 0.845 4 | 0.925 1 | |
类加权交叉熵损失函数 | LSTM | 0.920 8 | 0.926 4 | 0.792 9 | 0.852 1 | 0.925 1 |
Bi⁃LSTM | 0.930 3 | 0.934 6 | 0.813 1 | 0.867 8 | 0.933 7 | |
Bi⁃LSTM+SA | 0.942 5 | 0.943 7 | 0.836 7 | 0.886 5 | 0.943 4 |
从
此外,从

图5 Bi-LSTM+SA模型使用不同损失函数时的混淆矩阵
Fig.5 Confusion matrix of Bi-LSTM+SA model with different loss functions
通过分析,交叉熵损失函数常用于衡量标签类别和预测类别之间的差异,不关注训练样本的类别分布,因此当正常心音样本数远大于异常心音样本数时,使模型对异常心音的检测能力不足,从而导致更多的漏诊;类加权交叉熵损失函数通过调整正常/异常心音类别的权重,起到平衡正常和异常心音类别的作用,从而提升模型对异常心音检测的性能。
为了评估本文心音分类算法的有效性,将本文算法与现有其他心音分类算法进行了对比实验,实验结果如
分类算法 | 特征提取 | 分类网络 | F1 | ||||
---|---|---|---|---|---|---|---|
文献[ | 时频域组合特征 | ANN | 0.880 2 | 0.942 8 | 0.824 8 | 0.851 6 | 0.928 1 |
文献[ | Log⁃Mel谱 | CNN | 0.893 6 | 0.895 2 | 0.723 0 | 0.723 0 | 0.894 8 |
文献[ | 频谱图 | CNN | 0.872 3 | 0.851 1 | 0.640 4 | 0.738 6 | 0.856 1 |
文献[ | MFSC | ResNet+CBMA | 0.894 1 | 0.912 8 | 0.758 4 | 0.820 7 | 0.908 5 |
本文算法 | MFCC | Bi⁃LSTM+SA | 0.942 5 | 0.943 7 | 0.836 7 | 0.886 5 | 0.943 4 |
从
提出的基于Bi⁃LSTM网络和自注意力机制的心音分类算法无需进行心音分段,可避免因心音分段的定位精度不高而造成心音分类性能下降的影响。该算法对未经分段的心音信号进行分帧处理,提取每帧心音信号的MFCC特征作为Bi⁃LSTM网络的输入,利用Bi⁃LSTM网络提取心音信号的时域上下文特征,通过自注意力机制动态调整Bi⁃LSTM网络各个时间步输出特征的权重,得到有利于分类的更具鉴别性的心音特征。在PhysioNet/CinC Challenge 2016心音数据集上的实验结果表明,融合自注意力机制的Bi⁃LSTM网络能够更好地捕捉上下文长期依赖关系,有效提升心音信号的分类性能。此外,针对心音数据集样本的类别不平衡问题,选用类加权交叉熵损失函数训练分类模型,能使模型更加关注异常心音样本,可有效提升异常心音检测的性能。总体来说,本文算法在无需进行心音分段的基础上就能有效实现异常心音检测,在心血管疾病的辅助诊断中具有潜在的临床应用前景。
参考文献
马丽媛,王增武,樊静,等. 《中国心血管健康与疾病报告2022》要点解读[J].中国全科医学, 2023, 26 (32): 3975-3994. [百度学术]
MA Liyuan, WANG Zengwu, FAN Jing, et al. Interpretation of report on cardiovascular health and diseases in China 2022[J]. Chinese General Practice, 2023, 26 (32): 3975-3994. [百度学术]
SHAHMOHAMMADI M, LUO H X, WESTPHAL P, et al. Hemodynamics-driven mathematical model of first and second heart sound generation[J]. PLoS Computational Biology, 2021, 17(9): 1009361. [百度学术]
陈尧. 心音心电信号处理的神经网络方法[D]. 成都: 四川大学, 2021. [百度学术]
CHEN Yao. Research and applications on phonocardiogram and electrocardiogram with neural networks[D]. Chengdu: Sichuan University, 2021. [百度学术]
胡晓静,王春宇,张成强,等. 新生儿先天性心脏病筛查技术的现状及智能化发展趋势[J].复旦学报(医学版), 2022, 49 (1): 107-113. [百度学术]
HU Xiaojing, WANG Chunyu, ZHANG Chengqiang, et al. Current status and intelligent development trend of the screening technology for neonatal congenital heart disease[J]. Fudan University Journal of Medical Sciences, 2022, 49 (1): 107-113. [百度学术]
徐玮泽,俞凯,徐佳俊,等. 先天性心脏病心音听诊筛查的人工智能技术应用现状[J].浙江大学学报(医学版), 2020, 49 (5): 548-555. [百度学术]
XU Weize, YU Kai, XU Jiajun, et al. Artificial intelligence technology in cardiac auscultation screening for congenital heart disease: Present and future[J]. Journal of Zhejiang University(Medical Sciences), 2020, 49 (5): 548-555. [百度学术]
DENG S W, HAN J Q. Towards heart sound classification without segmentation via autocorrelation feature and diffusion maps[J]. Future Generation Computer Systems, 2016, 60: 13-21. [百度学术]
MILANI M G M, ABAS P E, DE S L C, et al. Abnormal heart sound classification using phonocardiography signals[J]. Smart Health, 2021, 21: 100194. [百度学术]
GUVEN M, UYSAL F. A new method for heart disease detection: Long short-term feature extraction from heart sound data[J]. Sensors, 2023, 23 (13): 5835. [百度学术]
CHEN Y C, WEI S S, ZHANG Y T. Classification of heart sounds based on the combination of the modified frequency wavelet transform and convolutional neural network[J]. Medical & Biological Engineering & Computing, 2020, 58: 2039-2047. [百度学术]
ZHU L X, QIAN K, WANG Z H, et al. Heart sound classification based on residual shrinkage networks[C]//Proceedings of 2022 44th Annual International Conference of the IEEE Engineering in Medicine & Biology Society (EMBC). Glasgow: IEEE, 2022: 4469-4472. [百度学术]
LI Z S, CHANG Y, SCHULLER B W. CNN-based heart sound classification with an imbalance-compensating weighted loss function[C]//Proceedings of 2022 44th Annual International Conference of the IEEE Engineering in Medicine & Biology Society (EMBC). Glasgow: IEEE, 2022: 4934-4937. [百度学术]
SINGH S A, MAJUMDER S, MISHRA M. Classification of short unsegmented heart sound based on deep learning[C]//Proceedings of 2019 IEEE International Instrumentation and Measurement Technology Conference (I2MTC).[S.l.]: IEEE, 2019: 1-6. [百度学术]
ZHANG W J, HAN J Q, DENG S W. Abnormal heart sound detection using temporal quasi-periodic features and long short-term memory without segmentation[J]. Biomedical Signal Processing and Control, 2019, 53: 101560. [百度学术]
KRISHNAN P T, BALASUBRAMANIAN P, UMAPATHY S. Automated heart sound classification system from unsegmented phonocardiogram (PCG) using deep neural network[J]. Physical and Engineering Sciences in Medicine, 2020, 43: 505-515. [百度学术]
LI T, YIN Y, MA K, et al. Lightweight end-to-end neural network model for automatic heart sound classification[J]. Information, 2021, 12 (2): 54. [百度学术]
张俊飞,张贵英. 改进残差神经网络实现心音分类[J].计算机工程与科学, 2022, 44 (8): 1514-1520. [百度学术]
ZHANG Junfei, ZHANG Guiying. An improved residual neural network for heart sound classification[J]. Computer Engineering & Science, 2022, 44 (8): 1514-1520. [百度学术]
DAUBECHIES I, LU J, WU H T. Synchrosqueezed wavelet transforms: An empirical mode decomposition-like tool[J]. Applied and Computational Harmonic Analysis, 2011, 30 (2): 243-261. [百度学术]
RUBIN J, ABREU R, GANGULI A, et al. Classifying heart sound recordings using deep convolutional neural networks and Mel-frequency cepstral coefficients[C]//Proceedings of 2016 Computing in Cardiology Conference (CinC). [S.l.]: IEEE, 2016: 813-816. [百度学术]
LI F, ZHANG Z, WANG L L, et al. Heart sound classification based on improved Mel-frequency spectral coefficients and deep residual learning[J]. Frontiers in Physiology, 2022, 13: 1084420. [百度学术]
ARORA V, LEEKHA R, SINGH R, et al. Heart sound classification using machine learning and phonocardiogram[J]. Modern Physics Letters B, 2019, 33 (26): 1950321. [百度学术]
OLIVEIRA J, NOGUEIRA D, RENNA F, et al. Do we really need a segmentation step in heart sound classification algorithms[C]//Proceedings of 2021 43rd Annual International Conference of the IEEE Engineering in Medicine & Biology Society (EMBC). [S.l.]: IEEE, 2021: 286-289. [百度学术]
VASWANI A, SHAZEER N, PARMAR N, et al. Attention is all you need[C]//Proceedings of 31st Conference on Neural Information Processing Systems. Long Beach: NIPS, 2017: 1-15. [百度学术]
LIU C, SPRINGER D, LI Q, et al. An open access database for the evaluation of heart sound algorithms[J]. Physiological Measurement, 2016, 37 (12): 2181. [百度学术]