周克良,王威,郭春燕
(江西理工大學(xué) 電氣工程與自動化學(xué)院,江西 贛州 341000)
心音信號即心臟產(chǎn)生的聲音所形成的信號[1],是通過人體血液流通使心臟瓣膜打開或關(guān)閉時振動產(chǎn)生的聲音,是人體不可或缺的生物信號。為了更加精確地了解人體心音信號的特征[2],近年來,大量學(xué)者對心音信號的預(yù)處理進行了研究。
心音信號的預(yù)處理包括去噪、包絡(luò)提取、分段定位以及特征提取[3]。在去噪方面,文獻[4]提出了基于小波變換的心音信號降噪方法,對于心音信號的降噪有較為明顯的效果,但是由于閾值函數(shù)的復(fù)雜程度導(dǎo)致適應(yīng)性不足,方法普適性存在缺陷。針對該缺陷,文獻[5]提出了雙自適應(yīng)提升的小波變化去噪算法,在一定程度上令心音信號的預(yù)測過程與更新過程都有了適應(yīng)性。文獻[6-7]都是在小波變換去噪的基礎(chǔ)上對前文進行了改進,并且有一定的成效。但是對于小波變換而言,由于硬閾值函數(shù)的不連續(xù)以及軟閾值函數(shù)對于特定函數(shù)的不適用性都一定程度上限制了小波去噪的性能。
本文所運用的卡爾曼濾波算法需要對心音信號進行數(shù)學(xué)模型的建立。心音信號由第一心音信號(S1)、第二心音信號(S2)、第三心音信號(S3)、第四心音信號(S4)組成[8],由于S3與S4大多數(shù)情況下檢測不到,一般對心音信號的分類研究與建模在于對S1與S2的研究。文獻[9]采用HHS-EMD算法對心音信號進行特征提取與分類識別,獲得了84.5%的精確度。文獻[10]運用MFCC-SVM方法對心音信號進行特征提取與分類,精確度高達92%,然而文獻[9]與文獻[10]所選用的特征提取算法對信號的頻率與幀數(shù)要求較高,多幀數(shù)據(jù)易造成信息的損失。文獻[11]運用MFSC-CNN對心音信號進行擴維與分類,精確度達89.6%,雖然該文獻所用的方法在普適性上得到了提升,但精確度對比文獻[10]有所下降。
本文將采用非線性自回歸(NAR)神經(jīng)網(wǎng)絡(luò)對心音信號樣本進行訓(xùn)練,構(gòu)建心音信號圖(Phonocardiogram,PCG),并通過該模型作為卡爾曼濾波的實際值對心音信號的樣本進行濾波。由于NAR神經(jīng)網(wǎng)絡(luò)對時間序列的反饋和記憶功能,所建立的數(shù)學(xué)模型在普適性以及精度上預(yù)計會有明顯的提升。最后通過與理論值進行對比,計算信噪比、最小均方誤差等性能參數(shù),得出該算法的優(yōu)缺點。
為了便于對心音信號的各個波段進行詳細的了解,醫(yī)學(xué)上對心音信號的各個波段進行了詳細的命名:第一心音信號(S1)產(chǎn)生于等容收縮期,第二心音信號(S2)產(chǎn)生于等容舒張期,而第三心音信號(S3)與第四心音信號(S4)存在于心臟的舒張充盈期。通常在正常成人體內(nèi)靠S1與S2進行聽診,S3與S4持續(xù)時間極短,不易進行病理判斷,故本文不對S3與S4進行研究。正常心音信號如圖1所示。
圖1 正常心音信號模型圖
本文通過收集一系列心音信號數(shù)據(jù)(數(shù)據(jù)來自于贛州某醫(yī)院),將該類心音信號作為樣本輸入神經(jīng)網(wǎng)絡(luò)中。
典型的時間序列神經(jīng)網(wǎng)絡(luò)包括NAR與NARX神經(jīng)網(wǎng)絡(luò)。NAR神經(jīng)網(wǎng)絡(luò)中,時間序列y(t)僅與歷史值相關(guān),根據(jù)歷史值進行預(yù)測,其關(guān)系如下:
式中:t表示時間;n為時間序列的延遲階數(shù)。
NAR神經(jīng)網(wǎng)絡(luò)一般由三層神經(jīng)網(wǎng)絡(luò)構(gòu)成,其分別為輸入層、隱含層與輸出層,其基本構(gòu)成如圖2所示。
圖2 NAR神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
將已經(jīng)收集好的心音信號輸入至NAR神經(jīng)網(wǎng)絡(luò)。其中,心音信號由wav格式讀取,選取隱含層節(jié)點個數(shù)為2,函數(shù)逼近方式為梯度下降法,其定義如下:
令J(θ)最小,即模型預(yù)測心音信號與實際心音信號之間的誤差達到最小值。實驗結(jié)果如表1所示。
表1 神經(jīng)網(wǎng)絡(luò)延遲階數(shù)與性能參數(shù)
由表1可得,延遲階數(shù)與均方誤差、訓(xùn)練時長沒有明顯的對應(yīng)關(guān)系,由于延遲階數(shù)過大可能導(dǎo)致過擬合現(xiàn)象,故本文采集延遲階數(shù)m為2~6之間的數(shù)據(jù)。由實驗數(shù)據(jù)可得,選用m=4的實驗性價比更高。
卡爾曼濾波一般適用于線性離散化系統(tǒng),運用實際測量值與模型值之間的關(guān)系,根據(jù)前一步的協(xié)方差矩陣決定下一步各個數(shù)據(jù)的權(quán)重值,從而決定卡爾曼預(yù)測值。其中,離散線性的狀態(tài)方程以及觀測方程的一般形式可表示為:
式中:xk為系統(tǒng)狀態(tài)矩陣;zk為觀測矩陣;W(k)~N(0,Qk-1)為隨機高斯白噪聲輸入;V(k)~N(0,Rk)為觀測噪聲;B為噪聲驅(qū)動矩陣;uk為輸入量,而對于心音信號來說,沒有驅(qū)動信號時刻影響狀態(tài)方程,故省略該項。
對于上述線性化模型(3),模型(4),進行狀態(tài)預(yù)計更新,在本文中只需代入預(yù)測值為由NAR神經(jīng)網(wǎng)絡(luò)建立的模型值即可,無需逐步更新預(yù)測值,而實際值為需要進行降噪輸入的心音信號。接下來需要對協(xié)方差矩陣進行更新,即:
計算該系統(tǒng)的卡爾曼增益Kg,該值由上一狀態(tài)的協(xié)方差決定。
由于卡爾曼濾波需要根據(jù)上一步的預(yù)測偏差決定下一步的預(yù)測值,故預(yù)測偏差由下式給出:
對協(xié)方差矩陣P(k|k)進行更新:
之后令k=k+1,將各預(yù)測值代入相應(yīng)的方程中,回到式(5)重復(fù)估計,直到k=N停止運算,得出卡爾曼預(yù)測心音信號曲線。
本文選用的實驗數(shù)據(jù)為正常青年臨床采集的心音信號數(shù)據(jù)(數(shù)據(jù)來自于贛州某醫(yī)院),數(shù)據(jù)集包括1 000個樣本,醫(yī)院已做好分段工作,故本文選取500個第一心音信號樣本與500個第二心音信號樣本,按照本文第2節(jié)介紹的方法對心音信號進行建模。每一組數(shù)據(jù)設(shè)置訓(xùn)練樣本占總樣本數(shù)的70%,驗證集為15%,測試集為15%,由于訓(xùn)練集與測試集是分開的,故在一定程度上避免了過擬合的現(xiàn)象。
本文使用的NAR神經(jīng)網(wǎng)絡(luò)在Matlab中Neural Net Time Series中實現(xiàn),卡爾曼濾波算法由Matlab編程實現(xiàn)。所有訓(xùn)練和測試都是在PC中完成,處理器為Intel Core i7,內(nèi)存為8 GB。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練向網(wǎng)絡(luò)輸入一定量的樣本,在一定算法的調(diào)節(jié)下,不斷優(yōu)化網(wǎng)絡(luò)權(quán)值,使網(wǎng)絡(luò)的輸出與預(yù)期值相符。訓(xùn)練神經(jīng)網(wǎng)絡(luò)主要包括:網(wǎng)絡(luò)架構(gòu)的調(diào)整、各層激活函數(shù)的選擇、模型編譯優(yōu)化器的選擇,訓(xùn)練中既要使訓(xùn)練樣本均方誤差不斷減少,提高訓(xùn)練精度,也要使驗證集準確率提高,防止模型過擬合。
本文所用的性能評估指標選用信噪比(Signal-Noise Ratio,SNR)、均方誤差(MSE)評價心音信號的降噪效果。其中,信噪比即為信號的平均功率和噪聲的平均功率之比,以分貝(dB)作為度量單位,即:
均方誤差是表現(xiàn)預(yù)測數(shù)據(jù)與實際數(shù)據(jù)對應(yīng)點誤差的平方和的均值,其計算公式為:
將NAR神經(jīng)網(wǎng)絡(luò)訓(xùn)練好的模型值代入卡爾曼濾波的預(yù)測值中,再將收集到的心音信號數(shù)據(jù)輸入至實際值中,得出的結(jié)論如圖3所示。根據(jù)圖3可以明顯看出,經(jīng)卡爾曼濾波后的第一心音信號噪音比原采集的心音信號噪聲有明顯的降低。接下來需要將降噪性能量化,得出降噪前與降噪后的噪音評估指標。表2為第一心音信號在降噪前經(jīng)過NAR建模以及通過模型進行卡爾曼濾波降噪的噪聲評估指標值。
圖3 濾波前后第一心音信號對比圖
表2 S1各階段的噪聲評估參數(shù)
由表2可直觀得出降噪前的均方誤差值較大,達到了0.276,信噪比僅有8.294 3,而經(jīng)過神經(jīng)網(wǎng)絡(luò)建模預(yù)測后的心音信號對比真實值的噪音有明顯的降低,均方誤差值為4.05×10-5,信噪比達到了24.698 2。而將神經(jīng)網(wǎng)絡(luò)建模后的預(yù)測值代入卡爾曼濾波中,再輸入需要降噪的心音信號值,可見誤差值達到了10-6級數(shù),而信噪比更是大于26,可見經(jīng)過神經(jīng)網(wǎng)絡(luò)建模與卡爾曼濾波后的心音信號在噪音級數(shù)方面得到了大幅度降低。
同理,將第二心音信號的樣本輸入至神經(jīng)網(wǎng)絡(luò)中,再通過卡爾曼濾波進行降噪,結(jié)果如圖4與圖5所示。
圖4 原第二心音信號
圖5 經(jīng)降噪后的第二心音信號
由于第二心音信號較第一心音信號更為復(fù)雜,故從直觀角度來看降噪效果比第一心音信號遜色一些。表3為第二心音信號在降噪前,經(jīng)過NAR建模以及通過模型進行卡爾曼濾波降噪的噪聲評估指標值。
由表3可以得出,經(jīng)過NAR建模后的均方誤差明顯降低,信噪比也有明顯的提升,而經(jīng)過卡爾曼濾波后的效果卻不如第一心音信號明顯,這是由于第二心音信號較第一信號而言更為復(fù)雜一些,通過建模得來的數(shù)據(jù)有過擬合的可能性,故卡爾曼濾波的預(yù)測值與實際值之間相差不大,這也是之后研究中需要解決的問題。
表3 S2各階段的噪聲評估參數(shù)
本文通過對醫(yī)學(xué)知識的先驗理解,對心音信號進行了詳細區(qū)分,即S1、S2、S3與S4,其中,S3與S4在臨床檢測中一般不常被獲取到,故本文不做詳細的研究,而對S1與S2進行了詳細的研究與仿真。首先將來自醫(yī)院的數(shù)據(jù)放入NAR神經(jīng)網(wǎng)絡(luò)框架中進行訓(xùn)練與測試,在同時考慮精度與訓(xùn)練時間的情況下得到了一組較為理想的模型,再將該模型輸入卡爾曼濾波的預(yù)測值中,通過原心音信號進行濾波,得到的第一心音信號濾波值的均方誤差為3.19×10-6,對比降噪前的0.276與經(jīng)過神經(jīng)網(wǎng)絡(luò)的預(yù)測值4.05×10-5都有較為優(yōu)越的降噪性能。而得到的第二心音信號對比降噪前的0.439也有較為明顯的提升,然而對于NAR神經(jīng)網(wǎng)絡(luò)預(yù)測值而言沒有級數(shù)上的優(yōu)越性,如何解決NAR神經(jīng)網(wǎng)絡(luò)對于第二心音信號出現(xiàn)的輕微過擬合的問題將成為下一個研究的重點方向。
注:本文通訊作者為王威。