李鋒,王澤南
(東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201620)
心電圖(electrocardiogram,ECG)是記錄心臟電信號(hào)的常用方式[1],醫(yī)護(hù)人員通過(guò)分析心電圖數(shù)據(jù),可以較為準(zhǔn)確地判斷心臟的健康狀況。目前,大量的科研學(xué)者已經(jīng)開(kāi)始嘗試采取計(jì)算機(jī)技術(shù)來(lái)分析心電圖數(shù)據(jù),從而實(shí)現(xiàn)在無(wú)醫(yī)學(xué)監(jiān)督下對(duì)個(gè)體心臟狀況的實(shí)時(shí)監(jiān)測(cè)。
1998年,Silipo R等人提出了用人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)的方法對(duì)三種異常的 ECG 信號(hào)進(jìn)行分類[2],他們采用了多種ANN 結(jié)構(gòu),配合不同的預(yù)處理方法,驗(yàn)證了ANN在面對(duì)ECG波形時(shí)具有良好的適用性。Lagerholm M[3]等人構(gòu)建了自組織的神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)ECG信號(hào)的無(wú)監(jiān)督聚類,通過(guò)麻省理工心率失常數(shù)據(jù)庫(kù)中16類心電數(shù)據(jù)進(jìn)行實(shí)驗(yàn),得到了較準(zhǔn)確的分類結(jié)果。之后,Benali R[4]等人結(jié)合小波變換與神經(jīng)網(wǎng)絡(luò)對(duì)正常心電信號(hào)和4類異常心電信號(hào)進(jìn)行了分類,也獲得了較高的分類準(zhǔn)確率。Ac?r N[5]等人提出了通過(guò)最小二乘支持向量機(jī)(Least Squares Support Veotor Maohine,LSSVM)的方法對(duì)ECG信號(hào)進(jìn)行分類,該方法在對(duì)特征向量空間降維處理的基礎(chǔ)上,用快速LSSVM算法對(duì)心電數(shù)據(jù)進(jìn)行分類。在文獻(xiàn)[6]中,Shen CP采用了一種自適應(yīng)算法來(lái)提取數(shù)據(jù)特征,然后結(jié)合支持向量機(jī)(Support Vector Machine,SVM)和K均值聚類對(duì)樣本數(shù)據(jù)集進(jìn)行分類。
本課題組長(zhǎng)期研究軀感網(wǎng)和機(jī)器學(xué)習(xí),并設(shè)計(jì)出一種便攜式心電采集設(shè)備,實(shí)現(xiàn)對(duì)心電數(shù)據(jù)的采集。本文主要在國(guó)際公開(kāi)數(shù)據(jù)庫(kù)和實(shí)驗(yàn)室采集的移動(dòng)心電數(shù)據(jù)基礎(chǔ)上,使用心電數(shù)據(jù)相鄰點(diǎn)斜率和RNN相結(jié)合的方法,實(shí)現(xiàn)心電信號(hào)的異常診斷。
為了便于通過(guò)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)心電信號(hào)異常的自動(dòng)診斷,系統(tǒng)首先需要分析心電數(shù)據(jù)的內(nèi)在特性,提取特征序列作為神經(jīng)網(wǎng)絡(luò)的輸入。心電信號(hào)特征提取目前已有眾多成熟的算法,例如Palacios-Enriquez A提出基于小波變換的方法[7];Soorma N提出了一種基于HHT變換的特征提取方法[8]。
由于這些變換算法會(huì)丟失心電數(shù)據(jù)本身的物理含義,本文選用相鄰數(shù)據(jù)點(diǎn)斜率組成的數(shù)據(jù)串作為心電數(shù)據(jù)的特征,并將該數(shù)據(jù)串作為循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入。
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neuron Network,RNN)可以很好地處理序列類數(shù)據(jù)。與一般的神經(jīng)網(wǎng)絡(luò)不同,循環(huán)神經(jīng)網(wǎng)絡(luò)除了層與層之間的全連接,還包含了前一個(gè)節(jié)點(diǎn)的輸出對(duì)當(dāng)前節(jié)點(diǎn)的影響,即隱藏層的節(jié)點(diǎn)不再是獨(dú)立的,隱藏層輸入包含輸入層的數(shù)據(jù)和前一節(jié)點(diǎn)的輸出[9]。隱藏層各節(jié)點(diǎn)都會(huì)受到之前節(jié)點(diǎn)的影響,為避免之前節(jié)點(diǎn)數(shù)據(jù)過(guò)度參與當(dāng)前節(jié)點(diǎn)的計(jì)算,一般會(huì)引入遺忘率α作為前一輸出的權(quán)重[10]。
本文后續(xù)實(shí)驗(yàn)的數(shù)據(jù)是基于矩陣轉(zhuǎn)換而成的序列數(shù)據(jù),該序列數(shù)據(jù)前后數(shù)據(jù)點(diǎn)存在關(guān)聯(lián)性,因此利用RNN來(lái)處理該數(shù)據(jù)具有較好的適用性。
本文首先通過(guò)濾波等方式對(duì)心電數(shù)據(jù)進(jìn)行預(yù)處理,然后計(jì)算相鄰點(diǎn)的斜率并進(jìn)行組合,形成特征序列輸入到神經(jīng)網(wǎng)絡(luò),完成異常檢測(cè)。
本文神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)集來(lái)自Physio Bank數(shù)據(jù)庫(kù),共計(jì)1600條數(shù)據(jù)。根據(jù)該數(shù)據(jù)庫(kù)中已標(biāo)記的病理標(biāo)簽,本文將訓(xùn)練集數(shù)據(jù)標(biāo)記為四類:正常、心肌梗塞、房室阻滯和房性早搏,四類數(shù)據(jù)各有400條記錄。測(cè)試數(shù)據(jù)集使用實(shí)驗(yàn)室采集的共1491條用戶數(shù)據(jù),測(cè)試數(shù)據(jù)集包含正常242條,心肌梗塞398條,房室阻滯415條,房性早搏436條。部分實(shí)驗(yàn)數(shù)據(jù)如表1所示。
在信號(hào)處理過(guò)程中,由于心電信號(hào)在采集過(guò)程中會(huì)受到工頻干擾、基線漂移、肌電干擾、電極移動(dòng)等因素的影響[11],本文在進(jìn)行心電特征提取前對(duì)數(shù)據(jù)進(jìn)行了高斯濾波,避免噪聲對(duì)心電數(shù)據(jù)特征提取的影響。
心電信號(hào)是一個(gè)多分量信號(hào),為保證心電信號(hào)原本物理意義的完整性,本文選擇提取相鄰點(diǎn)斜率作為特征。每一時(shí)刻的斜率計(jì)算公式如公式(1)所示。



表1 原始心電數(shù)據(jù)表

表2 相鄰點(diǎn)斜率結(jié)果表
神經(jīng)網(wǎng)絡(luò)進(jìn)行異常檢測(cè)時(shí),單一的斜率值無(wú)法作為神經(jīng)網(wǎng)絡(luò)的輸入,因此需要將每一串斜率值進(jìn)行拼接,即將每個(gè)斜率值按時(shí)序組合成一個(gè)一維數(shù)據(jù)串。以patient005為例,其組合結(jié)果如圖1所示。此時(shí)的數(shù)據(jù)串包含斜率特征和時(shí)序特征,這樣可以實(shí)現(xiàn)多維特征的異常診斷從而提升神經(jīng)網(wǎng)絡(luò)的診斷準(zhǔn)確率。

圖1 patient005一維數(shù)據(jù)串結(jié)構(gòu)圖
2.4.1 LSTM構(gòu)建
本文選用長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)進(jìn)行異常心電檢測(cè)。LSTM在RNN基礎(chǔ)上進(jìn)行了改進(jìn),能更好的處理序列數(shù)據(jù)[12]。本文LSTM網(wǎng)絡(luò)結(jié)構(gòu)共分為三層:輸入層、隱藏層和輸出層,結(jié)構(gòu)如圖2所示。

圖2 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
網(wǎng)絡(luò)的輸出層4個(gè)節(jié)點(diǎn)分別對(duì)應(yīng)類型心電圖概率值。
針對(duì)輸入層,通過(guò)實(shí)驗(yàn)得到節(jié)點(diǎn)數(shù)為50個(gè)時(shí)時(shí)間復(fù)雜度和空間復(fù)雜度在可接受范圍,神經(jīng)網(wǎng)絡(luò)通過(guò)窗口滑動(dòng)將數(shù)據(jù)串依次輸入到節(jié)點(diǎn)進(jìn)行計(jì)算。
隱藏層節(jié)點(diǎn)個(gè)數(shù)沒(méi)有實(shí)際的參照標(biāo)準(zhǔn),本文通過(guò)實(shí)驗(yàn),將節(jié)點(diǎn)個(gè)數(shù)設(shè)置為60。隱藏層節(jié)點(diǎn)個(gè)數(shù)與準(zhǔn)確率的對(duì)應(yīng)關(guān)系如表3所示。

表3 隱藏層節(jié)點(diǎn)與準(zhǔn)確率關(guān)系表
由于隱藏層前后節(jié)點(diǎn)互相連接,因此前一節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn)輸入時(shí)的遺忘率亦會(huì)影響神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)效率以及分類結(jié)果。本文經(jīng)實(shí)驗(yàn)分析后將遺忘率α設(shè)為0.75。遺忘率對(duì)實(shí)驗(yàn)結(jié)果的影響如表4所示。

表4 遺忘率與準(zhǔn)確率關(guān)系表
在隱藏層通過(guò)公式2計(jì)算t時(shí)刻各個(gè)節(jié)點(diǎn)的狀態(tài)。

其中f(x)為激勵(lì)函數(shù),分別為輸入層和隱藏層偏置,分別為輸入層和隱藏層權(quán)重。

其中,s(t=2950)為隱藏層最終的節(jié)點(diǎn)狀態(tài),由于滑動(dòng)窗口每次移動(dòng)1個(gè)單位,故節(jié)點(diǎn)狀態(tài)數(shù)=數(shù)據(jù)串長(zhǎng)度-窗口長(zhǎng)度+1=2999-50+1=2950,因此隱藏層節(jié)點(diǎn)最終狀態(tài)為s(t=2950)。分別為輸出層的權(quán)重和偏置。通過(guò)公式5將該結(jié)果轉(zhuǎn)換為最終的輸出結(jié)果

p1:待測(cè)心電屬于正常的概率;
p2:待測(cè)心電屬于心肌梗塞的概率;
p3:待測(cè)心電屬于房室阻滯的概率;
p4:待測(cè)心電屬于房性早搏的概率。
2.4.2 神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程
在構(gòu)建完成網(wǎng)絡(luò)結(jié)構(gòu)后,需要對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練步驟如下:
Step1:初始化網(wǎng)絡(luò)結(jié)構(gòu),將所有權(quán)重和偏置賦值為一個(gè)隨機(jī)值;
Step2:讀取一條心電數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò);
Step3:分別計(jì)算輸入層,隱藏層和輸出層的輸出;
Step5:獲得判別結(jié)果并計(jì)算損失函數(shù)。損失函數(shù)計(jì)算方法將在2.4.3節(jié)進(jìn)行闡述;
Step6:根據(jù)梯度下降算法調(diào)整各個(gè)權(quán)重和偏置。
在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中,重復(fù)Step2至Step6,當(dāng)損失函數(shù)誤差e≤0.001或訓(xùn)練集數(shù)據(jù)被遍歷時(shí),神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)束,將待測(cè)心電數(shù)據(jù)輸入到網(wǎng)絡(luò)中即可得到異常檢測(cè)結(jié)果。
2.4.3 損失函數(shù)計(jì)算
本文使用真實(shí)病理標(biāo)簽對(duì)應(yīng)節(jié)點(diǎn)的概率值計(jì)算損失函數(shù),計(jì)算方法如公式6所示。

其中R為其病理標(biāo)簽對(duì)應(yīng)節(jié)點(diǎn)的概率。例如,將某房室阻滯病人的心電數(shù)據(jù)傳入神經(jīng)網(wǎng)絡(luò),通過(guò)公式6和公式8計(jì)算得到再將得到的利用公式4進(jìn)行計(jì)算:

本文根據(jù)準(zhǔn)確率(CA)(公式11)評(píng)判實(shí)驗(yàn)的整體性能。

其中,Y表示檢測(cè)結(jié)果正確的數(shù)據(jù)記錄數(shù)量,T表示測(cè)試數(shù)據(jù)總數(shù)量。
本文對(duì)測(cè)試數(shù)據(jù)集的1491條記錄進(jìn)行分析,實(shí)驗(yàn)結(jié)果如表5所示。

表5 病理判別結(jié)果表
由表5可知,心肌梗塞與房室阻滯容易產(chǎn)生誤判,正常與房性早搏容易產(chǎn)生誤判。主要原因?yàn)楸徽`判的兩類病理在早期心電數(shù)據(jù)上區(qū)別較小,雖經(jīng)過(guò)PWD處理,但依然存在誤判的可能性。經(jīng)過(guò)計(jì)算,本文算法準(zhǔn)確度可達(dá)97.0%,因此該算法具有一定有效性和實(shí)用性。
本文利用相鄰數(shù)據(jù)點(diǎn)間的斜率進(jìn)行拼接得到一維數(shù)據(jù)串,然后將數(shù)據(jù)串通過(guò)循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行異常診斷,實(shí)驗(yàn)數(shù)據(jù)證明其分類效果良好,但對(duì)早期病理的數(shù)據(jù)仍存在誤判可能,還需一些改進(jìn)。本文實(shí)驗(yàn)只是針對(duì)四類心電異常進(jìn)行診斷,課題組在此基礎(chǔ)上還將針對(duì)各類病例的診斷進(jìn)行進(jìn)一步研究。