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

圖1 改進的U-Net模型
經(jīng)過對模型結(jié)構(gòu)的優(yōu)化,最終確定了U-Net網(wǎng)絡(luò)的層數(shù),其結(jié)構(gòu)參數(shù)如表1所示。

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

(4)

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

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

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

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

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

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

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

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

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

表4 所提模型的分類性能

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

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

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