李懷東,吳騰
(福州大學 機械工程及自動化學院,福建 福州 350108)
根據《中國心血管健康與疾病報告2019》[1],近年來,我國的心血管疾病死亡率仍舊居于首位,每5例死亡者中有2例死于心血管病。報告強調,為降低日益加重的心血管疾病負擔,一方面仍要強調提高醫療水平,改善醫療質量,另一方面最重要的是加強對心血管危險因素的控制,預防心血管疾病的發生。
心電信號是臨床用于診斷病人心臟健康狀態的一種綜合工具,具有無創、設備能耗低和易獲取等特點,所以在各種心律失常檢測以及心臟病病理分析中都發揮了巨大的作用。心律失常是指心臟出現異常活動或行為的情景,它是心血管疾病預防的關鍵。在過去十年里,發展了許多基于信號處理技術的自動心跳分類方法,主要包括兩個步驟:特征提取和分類。心電信號的自動分類流程首先通過對心電圖中的特征系數進行特征提取,突出異常和正常特征的區別,然后再利用相應的分類器對特征進行分類來達到識別心律目的。其中,心律失常的分類方法主要有:支持向量機[2]、神經網絡[3]、決策樹(CT)[4]和加權條件隨機域(CRF)[5]。近年來,隨著深度學習(deep learning)的大熱,越來越多的人將其應用到了心電信號的分類中[6-7]。基于深度學習的分類方法無需對心電信號特征提取,能夠根據原始的信號對其所屬的類別直接進行分類,具有高效、便捷和精準的特點。
卷積神經網絡由幾個卷積層組成,每層卷積層之后通常是接池化層,如圖1所示。在卷積層中,每一隱藏層中的每一個神經元都連接到前一隱藏層神經元的一個小區域,即感受域。其中,每個神經元學習一組權重,而每層學習一個總體偏差。隨后,滑動卷積窗口,下一隱藏層的神經元根據窗口的位置學習相應的權值。

圖1 卷積神經網絡結構
這個過程在數學中可以表示為
(1)

對于信號而言,往往具有很強的時序性,而在時序特征提取的能力上,CNN是不如循環神經網絡(RNN)的。長短時記憶神經網絡(LSTM)是一種特殊的RNN。與RNN相同,LSTM也采用了重復模塊鏈的形式,但不同之處在于重復模塊的結構不同。RNN的重復模塊只有一層,而LSTM有4層,它們以一種特殊的方式相互作用。其數學表達式如下:
ft=σ(Wf·[ht-1,xt]+bf)
(2)
it=σ(Wi·[ht-1,xt]+bi)
(3)
Ct=ft·Ct-1+it·tanh(Ws·[ht-1,xt]+bs)
(4)
ht=σ(Wo·[ht-1,xt]+bo)·tanh(Ct)
(5)
式中:xt是輸入序列;ht-1是上一隱藏層的輸出;bf、bi和bo分別表示遺忘門、輸入門和輸出門的偏置;Wf、Wi和Wo分別表示遺忘門、輸入門和輸出門的權重;Ws為當前單元的權重;Ct是當前細胞的記憶單元。其中,權重采用隨機初始化,而偏置初始化為0。
傳統的LSTM有一定的局限性,只能實現單向傳輸。它從前面到后面提取數據特征的能力較強,但對從后往前的信息識別性較差。雙向LSTM(BiLSTM)很好地解決了這個問題。雙向層實際上是由兩個方向相反的LSTM層組成:前向LSTM和后向LSTM。在每個時間步中,前向LSTM的輸出總結了之前所有時間步的局部特征,后向LSTM的輸出也總結了后續所有時間步的局部特征。將兩個LSTM層在某一時刻的局部輸出進行匯總后,通過激活函數對其進行非線性處理。因此,提取的特征可以更好地反映數據信息,達到更好的特征提取效果。
本文實驗數據選自美國麻省理工學院所提供的MIT-BIH心律失常的數據庫[8]。該數據庫包含48條雙導聯動態心電信號記錄,記錄來自于心律失常實驗室的47名受試者(記錄201和202來自同一男性),采樣頻率為360 Hz。本文采用導聯I心電數據作為實驗樣本,根據數據中的QRS波位置取波前0.4 s,波后0.5 s,再下采樣成320采樣點的心拍作為輸入數據。分類標準按照美國醫療儀器促進協會(AAMI)將原始的MIT-BIH的標簽重新分成:正常或者束支傳導阻滯節拍(N)、室上性異常節拍(S)、心室異常節拍(V)、融合節拍(F)、未能分類節拍(Q)等5類。并根據7∶3的比例將數據集劃分成訓練和測試集。原始標簽和重新分類的AAMI標簽如表1所示。

表1 AAMI標簽與MIT-BIH標簽對照表
為全面評估研究方法對心拍的分類結果,本實驗采用混淆矩陣,主要包括三大評定指標:敏感度(Se)、精確度(Pre)、F1分數。
(6)
(7)
(8)
式中:真陽性TP表示正樣本被預測為正樣本的數目;假陰性FN表示正樣本被預測為負樣本的數目;假陽性FP表示負樣本被預測為正樣本的數目。
如圖2所示,本文所搭建的神經網絡由三分支的卷積神經網絡后接一層BiLSTM及兩層多層感知機(MLP)構成。其中,每條分支由兩層卷積神經網絡組成,而每層CNN所使用的卷積核都不相同,這有助于在不同的空間尺度上提取信號的細節特征。每層卷積層后接一層批量歸一層(BN)和激活層,所使用的激活函數為ReLu,且步長均為1。對于每支路的最后一層卷積層后接步長為2的池化層,用于減小網絡結構參數,加快收斂。在卷積網絡結束后,先對每支路卷積進行拼接,然后輸入一層神經元個數為32的BiLSTM,用于提取時序特征。最后接兩層MLP,用于對分類結果進一步的細化和分類,最后一層MLP所采用的激活函數為Softmax。詳細的參數如表2所示。

圖2 本文所使用的神經網絡結構

表2 本文所使用模型的細節參數
本實驗模型在Intel i7-8750H CPU、NVIDIA GTX 1060上訓練,內存為16 GB,使用基于python3.6的tensorflow2.1框架。心拍的分割與數據集的制作在jupyter上實現,其中訓練集和測試集分別有70 479和30 208個樣本,并在訓練階段使用五折交叉驗證。五折交叉驗證通過將訓練集平均分成5個不同訓練組,取其中1份作為驗證集,剩下4份作為訓練集。在每次訓練結束后輪換訓練和驗證集,5次輪換后平均結果來降低方差,因此其結果對數據集劃分的敏感性較低,具有較強的穩定性。訓練過程中所使用的優化器為adam,學習率為0.000 1,每批次輸入32個樣本,迭代的次數為100。
測試了傳統CNN、多分支CNN及本文所提出的基于BiLSTM和多分支CNN的模型的訓練與驗證準確率,其結果如圖3所示(本刊為黑白印刷,如有疑問請咨詢作者)。從圖3可以看出,無論是在訓練還是測試階段,本文提出的模型在準確率都高于其他的模型,說明該模型對分類的性能有一定的提升。在第30次迭代后訓練和驗證集曲線平穩,沒有發生過擬合現象。

圖3 訓練和驗證集準確率的變化
使用訓練好的模型對測試集進行分類,得到混淆矩陣如表3所示。其中列是模型的預測值,行表示樣本的真實值,對角線表示正確分類的結果。可以看出模型在測試集上表現良好,對于每一類基本都將心拍成功分類,特別是對于N、V、F這三個類別表現尤為突出,這三類在F1得分上分別高達99.5%、97.1%、97.7%,而對于Q類,訓練和測試集僅有10個和5個樣本,但在樣本量少的情況下,仍有1個樣本被分類成功,說明模型充分考慮到樣本間的平衡性。

表3 分類結果的混淆矩陣表示
本文研究方法與近年來國外在MIT-BIH數據庫上的心電信號自動識別方法進行對比,主要比較S和V兩類。根據AAMI標準,S和V類的識別分類更具有臨床意義,其結果如表4所示,最好效果已加粗。可以看出,本文的方法在V和S類上雖然Pre值略低,但是效果基本持平,而且Sen和F1值高于其他文獻。作為綜合指標,S和V類的F1相較于其他文獻最好的結果分別提高了2.3和0.9。說明本文方法能在不同層面上更深提取ECG的特征,以此來達到更好的分類精度效果。

表4 本文與其他方法比較 單位:%
本文針對傳統CNN模型對細節特征方面提取的不足,使用多支路的CNN來提取更深層次的特征,同時考慮到ECG作為時序信號,結合BiLSTM模型對序列信號優勢特點,將其應用在網絡模型的搭建中,分析和討論了在訓練過程中該模型的訓練和驗證準確率變化情況、模型在測試集上的分類效果,重點比較了該模型與其他論文的Sen、Pre和F1值。實驗結果表明:在訓練階段,該模型無論在準確率還是擬合效果方面都優于之前的傳統模型;在測試階段,模型對每類的分類在不同指標上都有良好的效果;與其他論文相比,在細節與綜合得分上持平或者高于其他論文的模型。綜上可知,該模型在心電信號的自動分類上具有良好的應用前景。