王建榮,尉向前,辛彬彬,高睿豐,李國翚
(1.天津大學 智能與計算學部, 天津 300350;2.山西大學 自動化與軟件學院, 太原 030006;3.天津開發區奧金高新技術有限公司 產品研發部, 天津 300457)
心血管疾病(CVD)是造成全球范圍內高死亡率的主要原因。心血管疾病的發病率在世界各地分布不均勻,低收入和中等收入國家受到的影響尤為嚴重。盡管在心血管疾病防治方面取得了一些成就,但心血管疾病造成的影響仍然很大,防控工作繼續面臨重大挑戰[1-3]。
心電圖分析是診斷心血管疾病的重要依據。而且心電圖也包含了大量的信息。12導聯心電信號包含了更完整的信息。然而,面對海量的心電圖數據,完全依靠專業的心電專家診斷顯然是不現實的。此外,人為診斷難免會遇到各種突發因素,即便是心臟專家的檢測也有可能出現誤診、漏診[4-5]。
深度學習通過使用多層神經網絡,可以有效地表達復雜的非線性函數,并直接從原始信號數據中學習特征,無需人工進行特征提取和選擇。然而,深度學習需要足夠的數據來準確地適應問題中復雜的映射關系。隨著動態心電技術的發展,心電信號數據的快速增加,深度學習在智能心電識別中需要的數據量完全得到了滿足。Gayatri等[6]采用頻域分析(FFT)、時頻域分析(STFT)和特征向量心電信號分析(FVESA)等多種信號處理技術提取數據。記錄患者的信號,并與預先輸入的信號進行比較,以檢測心房顫動等心律失常。而Li等[7]提出了一種基于多域特征提取的心電識別系統。將改進的小波閾值法應用于心電信號預處理,以去除噪聲干擾。Crippa等[8]提出了一種有效的基于最小復雜度模型統計識別的多類節拍分類器。該方法利用karhunen變換(KLT)的分離特性,從心電信號中提取其自然模態的多元關系。然后,利用優化期望最大化(EM)算法尋找高斯混合模型的最優參數,重點是減少參數數量。Martis等[9]在特征提取階段提出了一種新的濾波方法,首次將PCA與ICA結合使用在PNN淺層概率神經網絡上,達到98.91%的準確度。Lowry等[10]提出了一種基于形態學特征和高階統計的模型(HOS)的心律失常檢測方法。然而臨床采集的心電信號長度是可變的,可能包含混合的心律失常情況。對于深度學習能否對變長心電信號進行準確分類的問題,還沒有進一步研究[11-12]。
普通的卷積神經網絡(CNN)可以提高網絡對于圖像縮放、失真和變換等的魯棒性,同時也使得網絡模型變得更加簡單。然而,單層CNN的局限性在于,它只能捕捉圖像的淺層特征,無法獲取圖像的深層信息。為了解決這個問題,本文中提出了一種基于U-Net網絡和注意力機制結合的心電圖異常分類模型,其中包含9層 CNN 的卷積核及卷積數量,還在卷積層的最后一層引入了LSTM和注意力機制,通過注意機制之后選擇交叉熵損失函數。實驗過程中不斷地調整參數組去訓練損失優化。實驗結果表明,改進模型對比改進之前的分類準確率有所提高。
傳統的U-Net模型結構是由Ronneberger等[13]在2015年首次提出一種用于圖像分割的卷積神經網絡,其中包含了一個對稱的編碼器和解碼器結構。由于心電圖信號的特殊性,需要對傳統的U-Net模型進行改進,以適應12導聯心電分類任務。受到U-Net網絡中的編碼、解碼的啟發,以及跳躍連接思想,編碼器部分由卷積層和池化層交替組成,用于將輸入的心電信號不斷縮小,提取相應的特征。解碼器部分由反卷積層和卷積層交替組成,用于將編碼器提取到的特征進行上采樣。在編碼器和解碼器之間,還有一個中間層,稱為“跳躍連接層”,用于將編碼器的特征圖與解碼器的特征圖進行連接,以保留更多的低層次特征信息,提高特征提取能力。解碼是將編碼后的數據重新轉換成原始數據的過程。在深度學習中,編碼和解碼的思想也被應用于自編碼器(autoencoder)等模型中。自編碼器的編碼過程可以看作是對原始數據的壓縮,解碼過程則相當于對數據的解壓縮和還原。
本文中多類心律失常檢測的任務是12導聯心電記錄自動識別8類心電異常和正常類別信號。該模型要求以12導聯心電圖記錄為輸入,輸出預測標簽。原始U-Net是用于圖像分割的,故而其卷積核大部分是三維,而本文中將12導聯心電數據中的每個導聯數據轉化為一個15 000*12的矩陣輸入模型,故而本文中使用的卷積核大小為16*1,使用相同卷積獲得同樣大小的輸出特征映射。這樣可以避免在拼接時的裁切操作,然后在U-Net網絡解碼的最后一層加入注意力模塊。
改進的U-Net網絡結構如圖1所示,包括了一維卷積,最大池化上采樣和跳躍連接模塊,由于最后輸入的心電信號長度遠大于最后分類所需用到的特征長度,所以模型中的用來擴充大小上采樣操作少于用來壓縮大小下采樣操作。最初輸入的數據大小為(15 000*12),然后通過反復的卷積和最大池化操作將數據處理為(58*512)時開始進行上采樣,(256+512)代表將前一步(117*256)大小的特征與上采樣后(117*512)的特征拼接,得到一個(117*768)的特征圖用于下步操作。

圖1 改進的U-Net模型
經過對模型結構的優化,最終確定了U-Net網絡的層數,其結構參數如表1所示。

表1 改進U-Net的結構參數
由于輸入的心電數據是長序列,且沒有進行任何去噪處理,而注意力機制[14]可以幫助模型自動學習長序列中的抗干擾能力,同時還能對抗噪聲,所以本文中提出了Attention-LSTM的模型,結合 LSTM 結構和注意力機制,使其在特征提取中更關注包含有效特征的數據片段,從而進一步提升 ECG 信號異常預測的精度。提出的模型包括11個卷積層、一個LSTM層和一個注意力模塊,其內部計算可以表述為
funet j=U-Net(Xj)
(1)
fLSTM j=LSTM(funet j)
(2)
fatt j=Attention(fLSTM j)
(3)
式中:U-Net、LSTM和Attention分別表示U-Net網絡層、LSTM層和Attention模塊;funet j、fLSTM j和fatt j分別表示第j個批次這3個模塊的輸出。模型訓練時交叉熵損失函數為

(4)

編碼后的心電信號經過注意力模塊后由Softmax函數對注意力中輸出的權重實現分類,其計算公式為
ujt=tanh(WwfLSTMjt+bw)
(5)

(7)
將編碼后的心電信號fLSTM j輸入單層網絡中,得到fLSTM j的隱藏狀態,表示為ujt;然后測量與可訓練向量的相似度,αjt是重要性權重向量,需要經過Softmax函數進行歸一化。然后,計算編碼后的心電信號與其對應的權向量的加權和fatt j。Ww、uw、bw是隨機初始化的可訓練參數。
圖2為改進U-Net算法的實現流程圖。

圖2 基于注意力機制的U-Net算法流程
首先在輸入數據后對數據進行一系列預處理,包括數據降采樣、歸一化處理、等長處理數據劃分等。隨后初始化網絡中所有參數,利用ATT_U-Net模型對劃分好的數據進行特征提取和分類預測,通過預測結果與真實的值計算損失函數,然后根據損失利用反向傳播算法更新模型參數,反復訓練到設定次數時,使用學習率衰減方案減小學習率,直到模型收斂時停止訓練并保存訓練好的模型。若當前模型為測試階段,則利用已經訓練好并保存的心電信號分類模型對測試集數據進行預測,并輸出預測結果。
本文中使用2018年中國生理信號挑戰賽所發布的數據集。包括以下9類樣本:N代表正常類別、AF代表房顫、I-AVB代表一度房室傳導阻滯、LBBB代表左束支傳導阻滯、RBBB代表右束支傳導阻滯、PAC代表房性期前收縮、PVC代表室性期前收縮、STD代表ST 段壓低、STE代表ST 段抬升。數據長度最長為60 s,最短為6 s。一共有6 877條數據用來訓練,此外還有不公開的2 954條記錄作為測試集,因此在6 877條數據中劃分了測試集和訓練集。數據的采樣率為 500 HZ[15],具體分布情況見表2。

表2 CPCS數據集分布
操作系統為Window10,硬件環境:CPU為Intel i5-10500,內存大小為64 GB,GPU為 NVIDIA GeForce 1060 4 GB。軟件環境為Pycharm2021.2.2,Python 3.9中的keras 2.0框架。
數據集中的原始數據以500 Hz采樣,在常見的心電信號中500 Hz是較高的采樣率,單位長度內包含更多的采樣點,這將給網絡造成負擔。為了降低計算成本,心電信號從500 Hz降采樣到原來的一半。這種縮減操作加快了訓練過程,并且不會從ECG信號中丟失太多有效特征信息用于后續處理。降采樣的信號作歸一化處理。歸一化后的心電信號保留了原始信號的基本特征和形態,同時消除了信號幅度和長度的影響,使信號處理更加方便和準確。而且經過歸一化處理后的心電信號具有相同均值和標準差。因此歸一化后的心電信號更容易進行比較和分析。此外,歸一化可以使不同長度和幅度范圍的心電信號在模型訓練中更容易收斂,有助于提高模型的性能。數據集中的心電信號的長度不一致,為了訓練方便,將所有信號統一補零到相同的長度60 s。歸一化的計算公式為

(8)
式中:μ為原始數據的平均值;δ為原始數據的標準差;x為需要經過歸一化處理的數據。
所提出的模型的輸入是預處理的ECG信號。它是一個三維矩陣,維度為(32,15 000,12),或更靈活地表示為(None,15 000,12)。第一個維度是批量大小,在本實驗中設置為32;第二個維度是信號長度,其中采樣頻率為250 Hz,持續時間為60 s;第三個維度是通道號(即導聯號)。
一維卷積層初始化采用 he_normal[16]初始化方法。“he_normal”是深度學習模型中使用的一種權重初始化方法。權重初始化是在訓練前對神經網絡初始權重的設定過程。通過使用“he_normal”初始化方法,權重初始化的方式可以確保所有層上的激活和梯度的方差大致相同。這有助于提高神經網絡在訓練過程中的穩定性和收斂性。模型中的Dropout 參數設置為0.2,批batch大小設置為32。采用學習率衰減方案將初始學習率設置為 0.001。若訓練大于50個epoch則將學習率改為0.000 1。損失函數采用交叉熵損失函數,優化器選擇Adam 優化器[17]。
本文研究的心電圖分類為多分類問題,因此采用精準率、召回率、F1分數作為模型的評價指標。
精準率:高的準確率表明模型或系統能夠準確地識別相關信息,而低的準確率表明模型或系統在結果中包含了大量不相關的信息。計算方法為真陽性數量(TP)除以真陽性數量(TP)與假陽性數量(FP)的和。公式定義如下:

(9)
召回率:高召回率表明模型或系統能夠識別出大量相關信息,而低召回率表明相關信息正在被遺漏。計算方法為真陽性數量(TP)除以真陽性數量(TP)與真陰性數量(FN)的和。公式定義如下:

(10)
F1分數:F1分數的計算是精準率和召回率的調和平均值,F1分數的取值范圍為0~1,數值越高性能越好。公式定義如下:

(11)
如圖3為所提出的模型在訓練時的損失函數曲線。可以看到模型在10個epoch以后開始收斂,在70個epoch時不再下降。表3列出了分類的混淆矩陣元素,所提出的模型在12導聯心電心律失常分類任務中取得了不錯的效果,在識別房顫(AF)、和右束支傳導阻滯(RBBB)這2類心律失常時的精準率、召回率、F1值都可以達到90%以上,表4為所提模型的分類性能。從圖3可以看出,該模型在從 STD 信號中識別正常信號時犯的錯誤最多。考慮到不同類別的心電圖記錄數量,觀察到UNET_LSTM_ATT對性能影響最大的是正常信號和STE信號之間的區分錯誤。

表3 所提模型在測試集上的混淆矩陣元素

表4 所提模型的分類性能

圖3 訓練損失函數曲線
在對不足60 s的數據填充時,雖然可以保留原始信息,但是會在一定程度上引入噪音。注意力模塊的能力是專注于心電信號異常的部分并抑制不重要的噪音部分。所以UNET_LSTM_ATT可以從ECG信號中提取更具代表性的特征。不過UNET_LSTM_ATT對ST段的變化不敏感,可能是因為噪聲很容易覆蓋這些微小的變化。
表5中對比了U-Net模型在改進過程中加入LSTM層,以及繼續加入注意力模塊的分類性能,可以看出在加入LSTM層后對于Normal類、AF類的F1值上升了0.02,而對STE段的識別結果F1值上升了0.05,平均性能提升了0.014,而在加入注意力模塊后PAC類、PVC類、STD類和STE類的識別效果均在3種模型中表現最佳,尤其在識別STE(ST段抬高)類中提升明顯,而在識別9類異常的平均F1值也可以達到0.825。這說明在加入注意力機制后對模型性能會有明顯提升。

表5 所提模型與不加LSTM層和注意力機制的模型在測試集上的性能
將CNN-LSTM模型、ATI-CNN與所提出的模型進行對比分析。所有的模型均使用同一個公共數據集,采用提出的預處理算法對訓練數據集進行預處理。在數據預處理后,將數據輸入3個對比模型進行訓練,并在劃分好的測試集上進行評估。最后,對這些模型的預測概率求平均值,得到最終概率,如表6所示,所提出的模型在6類指標中均取得了最好的效果,且得到了最高的平均F1值。

表6 本文中提出的模型與各對比模型在驗證集上各類別的F1值
提出一種結合注意力機制的U-Net網絡對12導聯異常心電信號進行智能識別和分類。數據先通過等長處理和歸一化,利用U-Net網絡提取特征,再用注意力模塊計算注意力權重向量,將提取到的特征向量用來進行心電信號分類。最后,利用CPSC-2018數據集進行驗證。實驗結果表明:在U-Net網絡中加入注意力模塊可以有效提高多導聯心電信號的分類精度。所提模型取得了較好的分類效果,在識別房顫(AF)和右束支傳導阻滯(RBBB)心律失常時的精準率、召回率、F1值都可以達到90%以上,平均F1值可以達到82.5%。最后還對不加入注意力模塊和LSTM層的模型進行了性能對比,加入注意力機制的模型相較普通的U-Net網絡平均F1值提升3.2%。