錢煒 鄭威 徐偉 劉健
(江蘇科技大學電子信息學院 鎮(zhèn)江 212003)
心臟疾病是一種嚴重威脅人類,特別是50歲以上中老年人健康的常見病,具有高患病率、高致殘率和高死亡率的特點[1]。所以心臟疾病的早期預防和檢測已經(jīng)成為重中之重,而心電圖是目前檢測心臟疾病最有效的手段,它檢測到的心電信號波形是由T波、P波、QRS波、U波組成的一種周期性的波形[2]。波形的變化反應出病人是否患有心臟疾病,但是心電信號極易受到外界因素的干擾,比如醫(yī)療設備的干擾,生理活動,身體活動產(chǎn)生的運動干擾等等。嚴重影響了波形和心電信號的細節(jié)信息給醫(yī)療檢測帶來了困難。針對這一情況,國內(nèi)外提出了許多心電信號去噪方法。比如小波變換法,它可以在去除心電信號噪聲的同時去除傳統(tǒng)的高斯噪聲,但是在實驗中發(fā)現(xiàn)利用小波變換法完成心電信號降噪后得到的心電信號的幅值出現(xiàn)了降低的現(xiàn)象。經(jīng)驗模態(tài)分解法[3~4],這種方法可以分析多組信號達到快速降噪的效果,但是在降噪過程中有可能會丟失信號的有用信息。自適應濾波法[5],它是一種常用的去噪方法,算法實現(xiàn)簡單,但是這種算法具有局限性不能去除所有的心電信號噪聲。還有頻譜分解法[6],改進的小波變換[7~8]等等。這些方法都存在一些問題。
隨著時代的發(fā)展,大數(shù)據(jù)時代來臨,網(wǎng)上存在的大量心電信號數(shù)據(jù)完全可以支撐用深度學習的方法實現(xiàn)心電信號去噪,在大數(shù)據(jù)的支持下深度學習方法可以更好地學到數(shù)據(jù)的本質(zhì)特征[14]。所以本文利用降噪自動編碼器[9]形成深度神經(jīng)網(wǎng)絡完成心電信號降噪,提高心電信號算法的降噪能力。
本文采用的基礎網(wǎng)絡模型Auto-Encoder(AE)是20世紀80年代晚期提出的,它是一種無監(jiān)督的數(shù)據(jù)維度壓縮方法,使用了反向傳播算法,讓網(wǎng)絡輸出值等于網(wǎng)絡輸入值[10]。
自動編碼器屬于最基本的一種神經(jīng)網(wǎng)絡,最基本的AE可以看做一個簡單的三層神經(jīng)網(wǎng)絡結(jié)構(gòu):一個輸入層、一個隱藏層和一個輸出層,其中輸出層與輸入層的網(wǎng)絡節(jié)點是相同的。它的目的是在經(jīng)過神經(jīng)網(wǎng)絡的編碼解碼過程將輸入信號重建得到輸出信號,最理想的情況是輸入信號與輸出信號相同。具體的網(wǎng)絡結(jié)構(gòu)如圖1所示。
圖1 自動編碼器網(wǎng)絡結(jié)構(gòu)
自動編碼器的編碼解碼過程可以表示為
編碼過程:
編碼過程:
其中w1,b1是屬于編碼的權(quán)重和偏置,w2,b2是屬于解碼的權(quán)重和偏置。編碼器的激活函數(shù)sf屬于非線性變換,通常采用sigmoid,tanh和rule等函數(shù)。解碼器的激活函數(shù)sg一般采用sigmoid函數(shù)或者恒等函數(shù)。所以自動編碼器的網(wǎng)絡參數(shù)θ={w1,w2,b1,b2}。當輸入信號x與重建信號y的誤差很小時,代表自動編碼器的神經(jīng)網(wǎng)絡已經(jīng)訓練完成。用重構(gòu)誤差函數(shù)L(x,y)來表示x和y的誤差。
如果解碼器的激活函數(shù)sg為恒等函數(shù),那么重構(gòu)誤差函數(shù):
如果解碼器的激活函數(shù)sg為sigmoid函數(shù)時,則重構(gòu)誤差函數(shù):
2.2.1 降噪自動編碼器(DAE)模型
傳統(tǒng)的自動編碼器只是通過最小化輸入信號與重構(gòu)信號之間的誤差來獲取信號的有用信息,縮小重構(gòu)誤差只能使模型學習到輸入信號,所以這個模型在提取數(shù)據(jù)特性上還需要改進。為了解決傳統(tǒng)自動編碼器的抗干擾能力差的問題,學者提出了降噪自動編碼器模型(DAE)[10~11,13],它的原理和AE基本相同,區(qū)別在于它在輸入信號輸入模型的過程中人為地添加了噪聲干擾,然后用含噪聲的輸入信號樣本重新構(gòu)建出無噪聲的干凈的輸出信號。這種訓練方式使降噪自動編碼器可以學習到輸入信號基本的數(shù)據(jù)特征,幫助提取輸入信號更深層的特征表達。DAE模型如圖2所示,DAE也是通過輸入信號和重構(gòu)信號之間的誤差來調(diào)整網(wǎng)絡參數(shù)達到誤差最小化,這個訓練方式與傳統(tǒng)的自動編碼器相同,它的不同點主要在于輸入信號x不是直接輸入網(wǎng)絡,隱藏層的特征表達不是由原始輸入信號通過編碼函數(shù)得到,而是由含噪聲的輸入信號樣本得到。用這種方式可以提高模型的抗干擾能力,增加噪聲魯棒性約束。
圖2 降噪自動編碼器結(jié)構(gòu)
降噪自動編碼器具體的模型訓練過程如圖2所示,原始輸入信號x通過降噪自動編碼器以一定概率把輸入層節(jié)點的值置為0,從而得到含噪聲的輸入數(shù)據(jù)x*,被破壞的輸入數(shù)據(jù)通過編碼函數(shù)映射到隱藏層得到隱藏層的特征表達h,h通過解碼函數(shù)映射到輸出層得到輸出數(shù)據(jù)z,通過原始輸入數(shù)據(jù)x和輸出數(shù)據(jù)得到重構(gòu)誤差函數(shù)L(x,z)。
DAE的編碼過程:
DAE的解碼過程:
根據(jù)自動編碼器和上面公式可得所DAE整體的損失函數(shù)為
根據(jù)上述式(8)通過梯度下降算法求得損失函數(shù)的最小值得到網(wǎng)絡的最佳參數(shù)。
2.2.2 SDAE網(wǎng)絡模型結(jié)構(gòu)
本文通過堆疊多個降噪自動編碼器形成的深度神經(jīng)網(wǎng)絡[15]。首先,輸入信號會根據(jù)DAE的基本原理,訓練得到第一個隱含層,丟棄DAE的解碼部分;然后,用訓練得到的隱含層作為輸入信號,再次使用DAE的工作原理,訓練得到第二個隱含層,并且再次丟棄DAE的解碼部分,從下到上完成堆疊DAE形成多層降噪自動編碼器。網(wǎng)絡結(jié)構(gòu)如圖3所示。
基于降噪自動編碼器的心電信號去噪方法實驗流程圖如圖4所示。
圖4 實驗流程圖
本文使用的是PhysioNet/MIT-BIH中的心律失常數(shù)據(jù)庫(MIT-BIH Arrhythmia Database),隨機選取100號到119號共19條心電數(shù)據(jù),每個心電信號數(shù)據(jù)選取2000到2300個心電周期,共計38000到43700個心電周期組成心電信號數(shù)據(jù)集。分別給每個ECG記錄疊加基線漂移[12](BW),肌電干擾[12](MA),電極干擾[12](EM)三種不同的噪聲(噪聲信號來自MIT-BIH數(shù)據(jù)庫中的噪聲數(shù)據(jù)庫),生成含噪聲的心電信號對網(wǎng)絡進行訓練和測試。其中訓練樣本為102到113號心電數(shù)據(jù)和117號心電數(shù)據(jù)。構(gòu)造的訓練樣本分為無標簽的心電信號和有標簽的含噪聲心電信號兩部分。網(wǎng)絡訓練完成后利用118號數(shù)據(jù)進行測試。保證訓練集和測試集沒有重合部分,保證實驗的嚴謹性。
網(wǎng)絡預訓練就是采用非監(jiān)督的逐層訓練方法,對網(wǎng)絡的各個隱藏層進行逐步訓練,然后把各個網(wǎng)絡層單獨訓練得到的權(quán)重作為多層降噪自動編碼器的初始網(wǎng)絡參數(shù)。本次實驗使用103號,117號,110號,113號心電信號數(shù)據(jù)集作為無標簽純凈的心電數(shù)據(jù)訓練降噪自動編碼器的參數(shù),把得到的參數(shù)作為構(gòu)建神經(jīng)網(wǎng)絡的參數(shù)初始值,完成網(wǎng)絡預訓練。
把網(wǎng)絡預訓練使用的心電信號數(shù)據(jù)集分別疊加三種不同的噪聲信號形成有標簽的含噪聲的心電數(shù)據(jù)訓練樣本對整體的網(wǎng)絡參數(shù)進行調(diào)優(yōu),利用BP算法將所有層的網(wǎng)絡參數(shù)進行微調(diào)得到最優(yōu)網(wǎng)絡參數(shù),達到重構(gòu)誤差最小化要求,神經(jīng)網(wǎng)絡訓練完成。
本實驗利用信噪比(SNR)和均方根誤差(RMSE)來評價降噪自動編碼器(DAE)和多層降噪自動編碼器(SDAE)的去噪效果,原始心電信號為x(n),經(jīng)過降噪處理后的得到的心電信號為xm(n),所以就可以求出降噪之后的心電信號和剩余噪聲信號的SNR:
均方根誤差:
DAE是由一個輸出層,一個隱藏層和一個輸出層組成,隱藏層的個數(shù)影響了神經(jīng)網(wǎng)絡學習數(shù)據(jù)的能力,那么對心電信號降噪也會造成影響。所以本文利用降噪自動編碼器設置不同的隱藏層數(shù)搭建神經(jīng)網(wǎng)絡完成心電信號降噪。為了保證本實驗的嚴謹性,都利用118號心電信號數(shù)據(jù)進行實驗,用一個降噪自動編碼器(DAE)形成淺層神經(jīng)網(wǎng)絡,用兩個降噪自動編碼器(SDAE)堆疊形成深度神經(jīng)網(wǎng)絡。為了保證輸入的心電信號擁有一個完整的心電周期,根據(jù)PhysioNet/MIT-BIH數(shù)據(jù)庫中的參考注釋和采樣頻率,設置輸入層和輸出層神經(jīng)元個數(shù)設置為270,隱藏層神經(jīng)元都設置為135。則DEA網(wǎng)絡結(jié)構(gòu)為270-135-270,SDAE網(wǎng)絡結(jié)構(gòu)為270-135-135-270。分別給118號心電信號疊加信噪比為0的基線漂移,肌電干擾,電極干擾三種不同的噪聲,得到含噪聲的心電信號。用這兩個神經(jīng)網(wǎng)絡分別對疊加了三種不同噪聲的118號樣本進行實驗。
4.2.1 濾除基線漂移實驗結(jié)果對比
圖5從上到下依次顯示的是118號原始心電信號,疊加了BW噪聲的118號心電信號波形圖,經(jīng)過DAE濾除BW噪聲后得到的心電信號結(jié)果圖,經(jīng)過SDAE濾除BW噪聲后得到的心電信號結(jié)果圖。經(jīng)過DAE處理后心電信號的信噪比為14.36dB,經(jīng)過SDAE處理后信噪比為18.16dB,均方根誤差分別為0.077,0.045。
圖5 濾除基線漂移實驗結(jié)果對比
4.2.2 濾除電極干擾實驗結(jié)果對比
圖6從上到下依次顯示的是118號原始心電信號,疊加了EM噪聲的118號心電信號波形圖,經(jīng)過DAE濾除EM噪聲后得到的心電信號結(jié)果圖,經(jīng)過SDAE濾除EM噪聲后得到的心電信號結(jié)果圖。從實驗對比可以看出,經(jīng)過DAE處理后心電信號的信噪比為13.21dB,經(jīng)過SDAE處理后信噪比為19.38dB,均方根誤差分別為0.089,0.037。
圖6 濾除電極干擾實驗結(jié)果對比
4.2.3 濾除肌電干擾實驗結(jié)果對比
圖7從上到下依次顯示的是118號原始心電信號,疊加了肌電干擾噪聲的118號心電信號波形圖,經(jīng)過DAE濾除MA噪聲后得到的心電信號實驗結(jié)果圖,經(jīng)過SDAE算法濾除MA噪聲后得到的心電信號實驗結(jié)果圖。從實驗對比可以看出,經(jīng)過DAE處理后心電信號的信噪比為14.95dB,經(jīng)過SDAE處理后信噪比為19.54dB,均方根誤差分別為0.067,0.038。
圖7 濾除肌電干擾實驗結(jié)果對比
4.2.4 實驗分析
從以上實驗結(jié)果和經(jīng)過算法降噪處理之后得出的信噪比SNR可以看出,無論是單隱藏層的降噪自動編碼器還是雙隱藏層的降噪自動編碼器都有效地去除了三種噪聲,但從DAE算法和SDAE算法的去噪效果的細節(jié)來看,DAE去除噪聲的能力還是遜色于SDAE。原因在于只有一個隱藏層的降噪自動編碼器(DAE)形成的淺層神經(jīng)網(wǎng)絡無法深度記憶心電信號的本質(zhì)特征,所以學習能力一般,降噪之后的ECG信號波形雖然大致與原始信號一樣,但是波形明顯加粗仍有一些噪聲殘余,P波的幅度受到了一定程度的影響,降噪效果不理想,而兩層隱藏層的多層降噪自動編碼(SDAE)形成的深度神經(jīng)網(wǎng)絡,對數(shù)據(jù)進行更深層次的學習,使其能夠更有效地去除噪聲,基本還原了原始心電信號的形態(tài)。
為了體現(xiàn)SDAE算法對心電信號去噪效果的優(yōu)越性,分別與DAE算法和文獻[7]中提到的S變換法三種去噪算法進行對比。
表1 不同信噪比下濾除基線漂移
表2 不同信噪比下濾除電極干擾
表3 不同信噪比下濾除肌電干擾
從上面三個表可以看出S變換法在對心電信號降噪的過程中,算法的降噪效果取決于心電信號中所含噪聲的多少即信噪比的大小,當信噪比越大時降噪效果越好,反之降噪效果越差,而本文提到的DAE算法和SDAE算法的降噪效果是相對穩(wěn)定的,無論信噪比如何變化都能穩(wěn)定的去除心電信號噪聲。所以從降噪的穩(wěn)定性來看S變換法遠低于本文提到的算法。從降噪效果來看無論是DAE算法還是SDAE算法的降噪能力都遠遠超過了S變換法。
本文利用降噪自動編碼器對噪聲抗干擾能力強的優(yōu)點同時結(jié)合多層降噪自動編碼器能有效地提取心電信號本質(zhì)特征的特點完成心電信號降噪。在心電信號降噪過程中,完全可以利用多層降噪自動編碼器完成降噪處理。通過實驗表明多層降噪自動編碼器相比于傳統(tǒng)ECG去噪算法在面對非線性、非平穩(wěn)的噪聲時具有更好的降噪效果。單隱藏層的降噪自動編碼器(DAE)的去噪能力也遠低于多層降噪自動編碼器(SDAE),所以深度神經(jīng)網(wǎng)絡在學習深層次的數(shù)據(jù)特征比淺層神經(jīng)網(wǎng)絡更具有優(yōu)勢,那么在訓練網(wǎng)絡的過程中適當?shù)脑黾与[藏層層數(shù),可以提高算法的去噪能力。從理論上網(wǎng)絡模型可以無限增加網(wǎng)絡深度,隱藏層層數(shù)越多,節(jié)點越多,在訓練模型上的效果越好,甚至會達到100%預測精度,但是層數(shù)的增多,網(wǎng)絡參數(shù)也會增多,導致模型復雜度過高,就會出現(xiàn)神經(jīng)網(wǎng)絡模型過擬合的情況。所以今后研究的方向是考慮網(wǎng)絡訓練的有效深度,選擇合適的網(wǎng)絡結(jié)構(gòu)使模型能達到較好的預測效果的同時不會出現(xiàn)過擬合的情況。