顧佳艷,蔣明峰,李 楊,張鞠成,王志康
1(浙江理工大學(xué) 信息學(xué)院,杭州 310018)
2(浙江大學(xué) 醫(yī)學(xué)院 附屬第二醫(yī)院,杭州 310019)
心電圖(ECG)在臨床中被用于生理信號的常規(guī)監(jiān)測,是心臟電活動的圖形表示,產(chǎn)生的信號由多個心跳組成,每個心跳都包含幾個連續(xù)的波.專業(yè)人員可對此進行如心肌梗死(MI)、房顫(AF)和心力衰竭(HF)[1]等多類心臟疾病的診斷,但評估不規(guī)則ECG 信號通常是耗時且主觀的過程[2].因此,在過去的幾十年中,計算機輔助診斷技術(shù)已被廣泛應(yīng)用于自動識別心律不齊的分類中[3].
早期的研究主要針對的是傳統(tǒng)機器學(xué)習(xí)方法,主要分為特征提取和分類器兩部分,特征提取包括均值、主成分分析[4]、傅立葉變換、小波變換[5–7]等,分類器則主要采用SVM[2,5]、隨機森林[8]、神經(jīng)網(wǎng)絡(luò)[9,10]等.傳統(tǒng)方法具有可解釋性的優(yōu)點,但相對自學(xué)能力較弱,通常無法學(xué)習(xí)潛在的抽象模式,需要足夠的人工干預(yù),在特征提取和特征選擇上花費大量時間.同時面對現(xiàn)實中的噪聲和個體差異問題,其泛化能力較弱.
為了解決以上的這些問題,近些年,一些學(xué)者提出了基于深度學(xué)習(xí)的方法.與傳統(tǒng)方法不同,深度神經(jīng)網(wǎng)絡(luò)(DNNs)是由多個處理層組成的計算模型,在不需要通過大量的數(shù)據(jù)預(yù)處理、特征工程的基礎(chǔ)上,將原始數(shù)據(jù)通過逐層抽象后得到更高層次的特征表達,從而極大地提高模型的分類精度.在足夠充分的訓(xùn)練樣本的前提下,克服了傳統(tǒng)機器學(xué)習(xí)算法輸入輸出相互獨立的局限性[11],同時使模型具備更優(yōu)秀的泛化性和可移植性.深度學(xué)習(xí)的方法使基于計算機的智能決策系統(tǒng)的開發(fā)及其在許多領(lǐng)域的實施取得可觀的成效,為進一步提高ECG 自動分類的準(zhǔn)確性和可擴展性提供了又一個機會.近年來,在DNNs 方面進行了一些新的嘗試,例如殘差塊[12],深度卷積神經(jīng)網(wǎng)絡(luò)[13],深度殘差卷積神經(jīng)網(wǎng)絡(luò)[14],具有長短期記憶模塊的RNN[15]和深度長短期記憶網(wǎng)絡(luò)[16]等.為了有效地選擇特征信息并增強模型的可解釋性,注意力機制在心律失常的分類中得到了重視[17,18].但是,提高臨床應(yīng)用中的分類準(zhǔn)確性還有很長的路要走.
本文提出了一種基于多頭注意力機制的房顫檢測算法,對正常類(N)、房顫類(A)、其他類(O)和噪聲類(~)4個類別進行分類,模型主要分成全局特征提取,局部特征提取,特征強化3 部分.以級聯(lián)的方式,利用深度殘差網(wǎng)絡(luò)(ResNet)和雙向長短期記憶網(wǎng)絡(luò)(Bi-LSTM),對原始心電信號進行特征提取,隨后引入多頭注意力機制,有選擇的聚焦于重點信息進行提取,形成特征向量用于最終分類.經(jīng)過實驗證明,該模型在分類性能上有很大的提升.
本文提出的端到端的模型數(shù)據(jù)流程如圖1所示,核心部分為局部特征提取、全局特征提取、特征強化3個部分.局部特征提取部分由深度殘差網(wǎng)絡(luò)構(gòu)成,在網(wǎng)絡(luò)層數(shù)增加的同時可以有效解決梯度彌散的問題.由局部特征提取部分生成的特征圖,通過在全局特征提取部分的雙向長短期記憶網(wǎng)絡(luò),有效地融合近鄰的位置信息,并通過多空間的自主學(xué)習(xí),獲得全局特征之間的相關(guān)性.最后通過Softmax 層進行正常類(N)、房顫類(A)、其他類(O)和噪聲類(~)4個類別的分類.
本文提出的模型的局部特征提取部分由深度殘差網(wǎng)絡(luò)(ResNet)實現(xiàn).深層卷積神經(jīng)網(wǎng)絡(luò)中的卷積運算可以有效地從原始心電信號中提取形態(tài)特征.當(dāng)深度神經(jīng)網(wǎng)絡(luò)達到飽和狀態(tài)時,增加網(wǎng)絡(luò)層數(shù)或神經(jīng)元數(shù)量會導(dǎo)致網(wǎng)絡(luò)退化,模型性能降低.在深層網(wǎng)絡(luò)中引入殘差塊,可以解決梯度消失和梯度爆炸的問題,使得在訓(xùn)練層數(shù)更深的網(wǎng)絡(luò)時,具有更高的性能.殘差塊的原理如圖2所示.將前面若干層的輸出數(shù)據(jù)跳過多層而引入到后面數(shù)據(jù)層的輸入部分.用F(x)表示沒有跳躍連接的兩層網(wǎng)絡(luò),則殘差塊可以表示為H(x)=F(x)+x,引入x更為豐富的參考數(shù)據(jù).我們利用疊加的殘差卷積模塊來學(xué)習(xí)局部特征,并將長序列的心電信號壓縮成一個更短的局部特征向量序列.
本文根據(jù)Hannun 等[19]提出的端到端的模型進行優(yōu)化,將原始心電信號輸入到幾個初始層中,輸出特征映射隨后由16個殘差塊依次進行處理.殘差塊有兩種形式,都包括兩個一維卷積層、一個批處理規(guī)范化層、一個激活函數(shù)層、一個dropout 層和一個最大池化層.每個卷積層有32×2k卷積核,長度為16 (k由0 開始,每經(jīng)過4個殘差塊遞增一次).區(qū)別在于,第2個至第16個殘差塊比第1個殘差塊多了批處理規(guī)范化層、激活函數(shù)層、dropout 層3 層.該殘差網(wǎng)絡(luò)共包括了33個卷積層和16個最大池化層.當(dāng)特征圖通過池大小為2的最大池化層時,特征映射的長度將減半,當(dāng)池大小為1 時,對特征圖沒有任何影響,所以在ResNet這部分中只有8 層發(fā)揮了作用.因此最終以28因子對原始輸入進行下采樣,經(jīng)過局部特征提取部分,輸出長度是輸入長度的1/256.每個殘差塊的參數(shù)如表1所示.
將提取的局部特征向量逐個輸入到雙向長短期記憶網(wǎng)絡(luò)層(Bi-LSTM)進行全局特征提取.經(jīng)過深度殘差網(wǎng)絡(luò)從原始心電信號中提取的局部特征代表了心臟電活動的時域過程,通常可以使用遞歸神經(jīng)網(wǎng)絡(luò)以參數(shù)共享的方式進行處理.RNN的一個成功實現(xiàn)是LSTM,由Hochreiter 等人[20]提出.引入一個門控機制,包括3 層:1)遺忘門,2)輸入門和3)輸出門,該機制通過對前一個時間步中的信息量的記憶,使得整個網(wǎng)絡(luò)在其內(nèi)部狀態(tài)下更容易學(xué)習(xí)序列之間的長期依賴關(guān)系[21].傳統(tǒng)的LSTM 模型往往忽略了未來階段的信息,只處理正向的數(shù)據(jù).與LSTM 不同,雙向長短期記憶網(wǎng)絡(luò)是一個具有輸入層、兩個隱層和一個輸出層的遞歸神經(jīng)網(wǎng)絡(luò),正反兩個LSTM 層的輸出合并為一個局部聚焦的全局特征向量.從理論上講,利用Bi-LSTM 可以充分考慮輸入數(shù)據(jù)中隱藏的全局信息.Graves和Schmidhuber實驗證明,這種雙向網(wǎng)絡(luò)比單向LSTM 體系結(jié)構(gòu)更加有效[22].Bi-LSTM 結(jié)構(gòu)如圖3所示.本文提出模型中的兩個LSTM 層的單元數(shù)都是128,這意味著每個局部聚焦的全局特征向量的長度都是128.
注意力機制由Treisman和Gelade 提出,是一種模擬人腦注意力機制的模型.通過計算注意力的概率分布,來突出某個關(guān)鍵輸入對輸出的影響,進一步捕捉序列中的重要信息,從而優(yōu)化模型并作出更為準(zhǔn)確的判斷.Bahdanau 等人[23]最早將該模型應(yīng)用在機器翻譯任務(wù)上,此后注意力機制就被廣泛地應(yīng)用到各種任務(wù)中.注意力機制的思想核心是通過計算權(quán)重矩陣使得模型有選擇的聚焦于重要信息,他的本質(zhì)是一個查詢(query)到一系列鍵值對(key-value)的映射.自注意力機制(self-attention)僅關(guān)注自身并從中抽取相關(guān)信息,而不需要借助其他額外的信息,即注意力發(fā)生在數(shù)據(jù)源內(nèi)部元素之間.Q、K、V均為雙向長短期記憶網(wǎng)絡(luò)輸出的特征值,分別輸入不同的全連接層獲得學(xué)習(xí)矩陣,隨后將Q映射到一系列K,即計算Q和K之間的相似度作為權(quán)重.使用Softmax 函數(shù)對權(quán)重進行歸一化并最終獲得權(quán)重與V的加權(quán)和.自注意力如式(1)所示.
圖2 殘差塊結(jié)構(gòu)
表1 殘差塊參數(shù)
圖3 雙向長短期記憶網(wǎng)絡(luò)結(jié)構(gòu)
多頭自注意力機制的原理是將Q、K、V映射到不同的子空間中,各個空間各自進行自注意力計算,互不干擾,最后將各個子空間的輸出拼接在一起,從而使模型能夠捕獲序列中更多的上下文信息,進一步提高特征表達能力.同時作為一個集成的作用,可以防止過擬合.多頭自注意力機制如式(2)所示.每個注意力機制函數(shù)只負(fù)責(zé)最終輸出序列中一個子空間,本文提出的最優(yōu)模型中為heads-8,將輸入Q,K,V由原來的256 維度變成了32 維度,即1/8,各個子空間之間互相獨立,將多個空間的輸出拼接后輸入全連接層獲得最終特征輸出.
每一個頭中的自注意力機制被定義為:
其中,Q,K,V是輸入的心電信號矩陣,Wo是學(xué)習(xí)矩陣,h是子空間數(shù)量.
由于Softmax 函數(shù)的性質(zhì),當(dāng)輸入值極大時,該函數(shù)將落在梯度極小的地方.因此,比例因子用以抵消這種影響.
我們將PhysioNet 2017 挑戰(zhàn)賽的公開數(shù)據(jù)集[24]應(yīng)用于模型的訓(xùn)練和測試,該心電信號數(shù)據(jù)集包含4個心律類別:正常類(N)、房顫類(A)、其他類(O)和噪聲類(~)4 類.2017年P(guān)hysioNet 挑戰(zhàn)賽公開數(shù)據(jù)集的數(shù)據(jù)格式如表2所示.該數(shù)據(jù)集由8528個單導(dǎo)ECG數(shù)據(jù)記錄組成,每個記錄都以300 Hz的頻率采樣,長度約為9~61 s.
實驗分別將精度(precision),召回率(recall),F1得分(F1)、準(zhǔn)確率(accuracy)作為評估所提出模型的性能的標(biāo)準(zhǔn).
其中,TP為真陽性,TN為真陰性,FP為假陽性,而FN為假陰性.
表2 2017年P(guān)hysioNet 挑戰(zhàn)賽公開數(shù)據(jù)集
批量歸一化用于確保每個卷積層之前網(wǎng)絡(luò)的平滑收斂.同時,使用ReLU 激活函數(shù)可以有效地提高網(wǎng)絡(luò)的學(xué)習(xí)效率,并顯著的減少深度學(xué)習(xí)網(wǎng)絡(luò)中收斂所需的迭代次數(shù).交叉熵函數(shù)用于評估輸出標(biāo)簽和參考標(biāo)簽之間的差異,如式(7)所示.交叉熵的值越小,實際輸出和預(yù)期輸出的分布越緊密.根據(jù)交叉熵,可以建立模型訓(xùn)練中的停止機制.當(dāng)交叉熵值在8個周期內(nèi)都沒有變化時,模型訓(xùn)練將自動停止.此外,實驗均在配備Tesla v100-sxm2 GPU的服務(wù)器中進行,統(tǒng)一采用2017年挑戰(zhàn)賽公開數(shù)據(jù)集進行訓(xùn)練和測試.模型基于Python 3.6和Keras 2.1.6 框架進行開發(fā).
其中,r表示標(biāo)簽,而P(X,i)是模型將標(biāo)簽i分配給輸入X的概率.
實驗中所有模型的參數(shù)設(shè)置均為最佳值,并且取結(jié)果的最優(yōu)值進行比較.為了保證實驗的公平性,所有的實驗都將Adam 優(yōu)化器的初始學(xué)習(xí)率設(shè)置為10?2,Dropout 設(shè)置為0.3.本文中的所有實驗采用2017年P(guān)hysioNet 挑戰(zhàn)賽公開數(shù)據(jù)集作為數(shù)據(jù)用于模型的訓(xùn)練和評估,并將90%訓(xùn)練集,10%作為測試集.為了驗證本文所提出的模型性能的優(yōu)越,進行了如下幾個同類別的對比實驗:1)ResNet[19]:吳恩達提出的34 層端到端的深度殘差網(wǎng)絡(luò)模型;2)ResNet+Bi-LSTM:在深度殘差網(wǎng)絡(luò)的基礎(chǔ)上加入雙向長短期記憶網(wǎng)絡(luò);3)CL3[25]:PhysioNet 2017 參賽模型,單層CNN 結(jié)合多層LSTM 模型;4)QRS-LSTM[26]:PhysioNet 2017 參賽模型,Pan-Tompkins R 峰檢測算法獲得QRS 數(shù)據(jù)結(jié)合多層LSTM.由表3結(jié)果所示,本文提出的基于多頭注意力機制的分類模型在分類性能上優(yōu)于同類模型.
表3 不同模型分類結(jié)果比較
本文模型首先采用深度殘差網(wǎng)絡(luò)提取心電信號的局部特征,實驗ResNet 結(jié)果表明,殘差塊在提升模型性能上具有良好的表現(xiàn).但是該特征過于分散,無法進行最終分類.因此,我們將局部特征向量序列輸入到一個Bi-LSTM 層中提取全局特征.Bi-LSTM 善于描述時間行為,但很難處理很長的序列.經(jīng)過局部特征學(xué)習(xí)后,心電信號的序列長度得以壓縮,從而提高基于Bi-LSTM學(xué)習(xí)全局特征的有效性,這就是在全局特征提取部分前加入局部特征提取部分的原因,實驗ResNet+Bi-LSTM 也表明兩個模塊的結(jié)合性能優(yōu)于單個ResNet模型的性能.Bi-LSTM 某一步的輸出表現(xiàn)為一組局部聚焦的全局特征,特征受該步附近輸入影響.為了得到更具代表性的特征向量,本文將Bi-LSTM 層的輸出傳入多頭注意力機制層對特征進行重點提取.多個模塊通過級聯(lián)的方式將相連接并發(fā)揮各自模塊的作用,提升整體模型的性能.
多頭注意力機制是在原始注意力機制的基礎(chǔ)上,將學(xué)習(xí)分散到不同子空間中,獲取更多層面的不同位置特征.但分類性能并不是隨子空間的增加而線性提升,過多的子空間數(shù)量可能會引起過擬合,反而會對模型的分類精度造成影響.為此,本文又做了3個對比實驗,對應(yīng)的是heads-2,heads-4 以及heads-16,僅僅改變了本文提出模型中特征強化部分的子空間數(shù)量.根據(jù)表3的結(jié)果顯示,heads-4和heads-8 指標(biāo)相近,明顯優(yōu)于heads-2和heads-16.根據(jù)圖4的混淆矩陣顯示,heads-8 對房顫類別的分類準(zhǔn)確率高達0.93,明顯優(yōu)于對比實驗.同時,結(jié)合所有的對比實驗,可由圖5發(fā)現(xiàn),heads-2,heads-4,heads-16,ResNet的準(zhǔn)確率呈現(xiàn)波動狀,而heads-8的準(zhǔn)確率在所有實驗中收斂的更快以及更穩(wěn)定.由此可以體現(xiàn)本文提出的模型在收斂性能上也有較好的表現(xiàn).
圖4 不同實驗混淆矩陣
本文提出了一種基于多頭注意力機制的心律失常分類算法,對房顫、正常、噪聲、其他4 類進行分類,并通過多個實驗,驗證了該網(wǎng)絡(luò)模型的可行性.本文算法的核心之處在于首先采用深度殘差網(wǎng)絡(luò)提取心電信號的局部特征,然后將特征圖傳入雙向長短期記憶網(wǎng)絡(luò)層,最后傳入多頭注意力機制層對特征進行重點提取.但是,這項工作的局限性在于它僅使用2017年P(guān)hysioNet 挑戰(zhàn)賽的公開數(shù)據(jù),并且未在其他公開數(shù)據(jù)庫中進行過培訓(xùn)和測試,也未應(yīng)用于醫(yī)院中實際患者的測量數(shù)據(jù).盡管優(yōu)化模型為改善房顫的自動分類提供了有效的方法,但它并不適合實際的臨床診斷和實際患者的應(yīng)用.同時,該模型中心血管疾病的分類僅限于房顫、噪聲、正常和其他4個類別.將來,我們的目標(biāo)是將模型的自動分類擴展到更廣泛的疾病領(lǐng)域中去.
圖5 不同實驗準(zhǔn)確率