摘 要:为了建立一维时间序列的心音信号模型,通过医院采集数据,采用非线性自回归(NAR)神经网络对S1与S2心音信号进行建模,在得到心音信号的预测值后,对心音信号使用卡尔曼滤波方法进行降噪。为验证融合算法对于心音信号降噪的可行性与优越性,进行了一系列仿真实验。在同时考虑精度与训练时间的情况下得到了一组较为理想的模型,再将该模型输入卡尔曼滤波的预测值中,通过原心音信号进行滤波,对比降噪前的第一心音信号滤波值的均方误差,有较为优越的降噪性能。得到的第二心音信号对比降噪前也有较为明显的提升。实验结果表明,融合算法在信噪比以及均方误差等降噪性能上有明显的优越性。
关键词:心音信号;非线性自回归;卡尔曼滤波;心音信号建模;心音信号降噪;降噪性能
周克良,王 威,郭春燕;现代电子技术 2021年 11月 1日第 44卷第 21期
0 引 言
心音信号即心脏产生的声音所形成的信号[1] ,是通过人体血液流通使心脏瓣膜打开或关闭时振动产生的声音,是人体不可或缺的生物信号。为了更加精确地了解人体心音信号的特征[2] ,近年来,大量学者对心音信号的预处理进行了研究。
心音信号的预处理包括去噪、包络提取、分段定位以及特征提取[3] 。在去噪方面,文献[4]提出了基于小波变换的心音信号降噪方法,对于心音信号的降噪有较为明显的效果,但是由于阈值函数的复杂程度导致适应性不足,方法普适性存在缺陷。针对该缺陷,文献[5]提出了双自适应提升的小波变化去噪算法,在一定程度上令心音信号的预测过程与更新过程都有了适应性。文献[6?7] 都是在小波变换去噪的基础上对前文进行了改进,并且有一定的成效。但是对于小波变换而言,由于硬阈值函数的不连续以及软阈值函数对于特定函数的不适用性都一定程度上限制了小波去噪的性能。
本文所运用的卡尔曼滤波算法需要对心音信号进行数学模型的建立。心音信号由第一心音信号(S1)、第二心音信号(S2)、第三心音信号(S3)、第四心音信号(S4)组成[8] ,由于 S3 与 S4 大多数情况下检测不到,一般对心音信号的分类研究与建模在于对 S1 与 S2 的研究。文献[9]采用 HHS?EMD 算法对心音信号进行特征提取与分类识别,获得了 84.5% 的精确度。文献[10]运用MFCC?SVM 方法对心音信号进行特征提取与分类,精确度高达 92%,然而文献[9]与文献[10]所选用的特征提取算法对信号的频率与帧数要求较高,多帧数据易造成信息的损失。文献[11]运用 MFSC?CNN 对心音信号进行扩维与分类,精确度达 89.6%,虽然该文献所用的方法在普适性上得到了提升,但精确度对比文献[10]有所下降。
本文将采用非线性自回归(NAR)神经网络对心音信号 样本进行训练,构建心音信号图(Phonocardiogram, PCG),并通过该模型作为卡尔曼滤波的实际值对心音信号的样本进行滤波。由于 NAR 神经网络对时间序列的反馈和记忆功能,所建立的数学模型在普适性以及精度上预计会有明显的提升。最后通过与理论值进行对比,计算信噪比、最小均方误差等性能参数,得出该算法的优缺点。
1 心音信号的系统模型
为了便于对心音信号的各个波段进行详细的了解,医学上对心音信号的各个波段进行了详细的命名:第一心音信号(S1)产生于等容收缩期,第二心音信号(S2)产生于等容舒张期,而第三心音信号(S3)与第四心音信号(S4)存在于心脏的舒张充盈期。通常在正常成人体内靠 S1 与 S2 进行听诊,S3 与 S4 持续时间极短,不易进行病理判断,故本文不对 S3 与 S4 进行研究。正常心音信号如图 1所示。
2 NAR 神经网络系统辨识
本文通过收集一系列心音信号数据(数据来自于赣州某医院),将该类心音信号作为样本输入神经网络中。
典型的时间序列神经网络包括 NAR 与 NARX 神经网络。NAR 神经网络中,时间序列 y ( t )仅与历史值相关,根据历史值进行预测,其关系如下: y ( t ) = f ( y ( t - 1 ),?, y ( t - n ) ) (1)式中:t表示时间;n为时间序列的延迟阶数。
NAR 神经网络一般由三层神经网络构成,其分别为输入层、隐含层与输出层,其基本构成如图 2所示。
将已经收集好的心音信号输入至 NAR 神经网络。其中,心音信号由 wav 格式读取,选取隐含层节点个数为 2,函数逼近方式为梯度下降法,其定义如下:
令 J ( θ )最小,即模型预测心音信号与实际心音信号之间的误差达到最小值。实验结果如表 1所示。
由表 1 可得,延迟阶数与均方误差、训练时长没有明显的对应关系,由于延迟阶数过大可能导致过拟合现象,故本文采集延迟阶数 m 为 2~6 之间的数据。由实验数据可得,选用 m =4的实验性价比更高。
3 卡尔曼滤波算法
卡尔曼滤波一般适用于线性离散化系统,运用实际测量值与模型值之间的关系,根据前一步的协方差矩阵决定下一步各个数据的权重值,从而决定卡尔曼预测值。其中,离散线性的状态方程以及观测方程的一般形式可表示为: xk = Axk - 1 + Buk - 1 + Wk (3) z k = Hxk + Vk (4)式 中 :xk 为 系 统 状 态 矩 阵 ;z k 为 观 测 矩 阵 ;W ( k ) ~ N ( 0,Qk - 1 )为随机高斯白噪声输入;V ( k ) ~N ( 0,Rk )为观测噪声;B 为噪声驱动矩阵;uk 为输入量,而对于心音信号来说,没有驱动信号时刻影响状态方程,故省略该项。
对于上述线性化模型(3),模型(4),进行状态预计更新,在本文中只需代入预测值为由 NAR 神经网络建立的模型值即可,无需逐步更新预测值,而实际值为需要进行降噪输入的心音信号。接下来需要对协方差矩阵进行更新,即: P ( k | k - 1 ) = APk - 1 AT + Qk - 1 (5)计算该系统的卡尔曼增益 Kg,该值由上一状态的协方差决定。 Kg = Pk HT ( k )[ H ( k ) Pk H ] T ( k ) + R ( k ) -1 (6)由于卡尔曼滤波需要根据上一步的预测偏差决定下一步的预测值,故预测偏差由下式给出: e = Z ( k ) - X?( k | k - 1 ) (7)接下来对系统状态的卡尔曼预估值X?( k | k )进行更新。 X?( k | k ) = X?( k | k - 1 ) + Kg*e (8)式中 X?( k | k - 1 )为第 k时刻的预测值。根据式(8)可以得出,k 时刻系统的最优值为 k-1 时刻的状态估计值加上带卡尔曼增益权值项的预测偏差。当观测误差远远大于估计误差,则 Kg 值将会很小,即 k 时刻的预测值约等于 k 时刻的状态估计值;而当 k 时刻状态估计值误差远远大于观测误差,则此时 Kg 较大,k 时刻的状态估计值更倾向于观测值。
对协方差矩阵 P ( k | k )进行更新: P ( k | k ) = [ I - KgH ( k ) ] P ( k | k - 1 ) (9)之后令 k = k + 1,将各预测值代入相应的方程中,回到式(5)重复估计,直到 k = N 停止运算,得出卡尔曼预测心音信号曲线。
4 实验验证与分析
4.1 实验数据设置
本文选用的实验数据为正常青年临床采集的心音信号数据(数据来自于赣州某医院),数据集包括1 000个样本,医院已做好分段工作,故本文选取 500 个第一心音信号样本与500个第二心音信号样本,按照本文第2节介绍的方法对心音信号进行建模。每一组数据设置训练样本占总样本数的 70%,验证集为 15%,测试集为 15%,由于训练集与测试集是分开的,故在一定程度上避免了过拟合的现象。
4.2 实验环境设置
本文使用的 NAR 神经网络在 Matlab 中 Neural Net Time Series 中实现,卡尔曼滤波算法由 Matlab 编程实现。所有训练和测试都是在 PC 中完成,处理器为 Intel Core i7,内存为 8 GB。
4.3 实验结果
神经网络的训练向网络输入一定量的样本,在一定算法的调节下,不断优化网络权值,使网络的输出与预期值相符。训练神经网络主要包括:网络架构的调整、各层激活函数的选择、模型编译优化器的选择,训练中既要使训练样本均方误差不断减少,提高训练精度,也要使验证集准确率提高,防止模型过拟合。
本 文 所 用 的 性 能 评 估 指 标 选 用 信 噪 比(Signal ? Noise Ratio,SNR)、均方误差(MSE)评价心音信号的降噪效果。其中,信噪比即为信号的平均功率和噪声的平均功率之比,以分贝(dB)作为度量单位,即: R = 10 × lg ( S N ) (10)均方误差是表现预测数据与实际数据对应点误差的平方和的均值,其计算公式为:
将 NAR 神经网络训练好的模型值代入卡尔曼滤波的预测值中,再将收集到的心音信号数据输入至实际值中,得出的结论如图 3所示。根据图 3可以明显看出,经卡尔曼滤波后的第一心音信号噪音比原采集的心音信号噪声有明显的降低。接下来需要将降噪性能量化,得出降噪前与降噪后的噪音评估指标。表 2 为第一心音信号在降噪前经过 NAR 建模以及通过模型进行卡尔曼滤波降噪的噪声评估指标值。
由表 2 可直观得出降噪前的均方误差值较大,达到了 0.276,信噪比仅有 8.294 3,而经过神经网络建模预测后的心音信号对比真实值的噪音有明显的降低,均方误差值为 4.05×10-5 ,信噪比达到了 24.698 2。而将神经网络建模后的预测值代入卡尔曼滤波中,再输入需要降噪的心音信号值,可见误差值达到了 10-6 级数,而信噪比更是大于 26,可见经过神经网络建模与卡尔曼滤波后的心音信号在噪音级数方面得到了大幅度降低。
同理,将第二心音信号的样本输入至神经网络中,再通过卡尔曼滤波进行降噪,结果如图 4与图 5所示。由于第二心音信号较第一心音信号更为复杂,故从直观角度来看降噪效果比第一心音信号逊色一些。表 3 为第二心音信号在降噪前,经过 NAR 建模以及通过模型进行卡尔曼滤波降噪的噪声评估指标值。
由表 3可以得出,经过 NAR 建模后的均方误差明显降低,信噪比也有明显的提升,而经过卡尔曼滤波后的效果却不如第一心音信号明显,这是由于第二心音信号较第一信号而言更为复杂一些,通过建模得来的数据有过拟合的可能性,故卡尔曼滤波的预测值与实际值之间相差不大,这也是之后研究中需要解决的问题。
5 结 论
本文通过对医学知识的先验理解,对心音信号进行了详细区分,即 S1、S2、S3 与 S4,其中,S3 与 S4 在临床检测中一般不常被获取到,故本文不做详细的研究,而对 S1 与 S2 进行了详细的研究与仿真。首先将来自医院的数据放入 NAR 神经网络框架中进行训练与测试,在同时考虑精度与训练时间的情况下得到了一组较为理想的模型,再将该模型输入卡尔曼滤波的预测值中,通过原心音信号进行滤波,得到的第一心音信号滤波值的均方误差为 3.19 × 10-6 ,对比降噪前的 0.276与经过神经网络的预测值 4.05 × 10-5 都有较为优越的降噪性能。而得到的第二心音信号对比降噪前的 0.439也有较为明显的提升,然而对于 NAR 神经网络预测值而言没有级数上的优越性,如何解决 NAR 神经网络对于第二心音信号出现的轻微过拟合的问题将成为下一个研究的重点方向。