陳宇飛,張 博,林 楠,曹仰杰
(鄭州大學 軟件與應用科技學院,鄭州 450000)
心血管疾病(CardioVascular Disease,CVD)是一系列涉及人體內運送血液的器官和組織的疾病,是全球死亡和發病的首要原因[1].而心律不齊(cardiac arrhythmia)是發病率最高的心血管疾病,據統計數據顯示,心律失常在普通人群中的發生概率在50%以上,而在患有心血管疾病的人群中,其發生概率上升到85%以上.心律不齊的出現,嚴重危害著患者的身體健康,同時也對患者的心理健康造成了一定程度的影響.心電圖(ElectroCardioGram,ECG)是記錄心臟電信號的過程,它可以反映出心臟興奮的產生、傳導和恢復過程中的生物電位變化,是診斷心律不齊的重要依據.
目前,心律不齊的檢測是基于識別ECG中正常與異常心跳,但ECG數據量龐大,而醫療專家人數有限,造成醫生的任務量非常繁重.使用計算機輔助ECG分析工具可以減輕醫生的工作量,提高工作效率.目前,計算機輔助ECG分析方法中大部分都是基于傳統的機器學習方法,如自組織映射[2]、獨立成分分析[3]、神經網絡[4],支持向量機[5],路徑森林[6]等.雖然傳統的機器學習方法在諸如MIT-BIH等標準數據庫上取得了較好的分類結果,然而這些方法需要手動設計特征,造成工作量較大,嚴重影響算法的實際應用.因此,為了克服傳統機器學習方法的缺點,一些研究者提出了基于深度學習的識別方法[7-10].深度學習方法可以自動提取ECG特征并分類,從而省去了手工提取特征的環節.研究表明,在識別精度和訓練速度方面,深度學習方法要優于傳統的機器學習方法[8,10].
卷積神經網絡(Convolutional Neural Network,CNN)是當前深度學習應用最為廣泛機器學習方法,它在圖像識別、語音識別等方面獲得良好表現,最近也已被用于醫學研究領域.文獻[8]使用CNN自動識別和分類5種不同的ECG心跳類型,其在有噪聲數據和去噪聲數據的準確率分別為93.47%和94.03%,說明了CNN在生物醫學信號領域具有較大的潛力.文獻[9]構建了一個34層卷積神經網絡以診斷14類心律不齊,準確率可以媲美經驗豐富的醫生.但過多的網絡層數增加了訓練難度,學習速率也慢.文獻[10]提出了一種ECG-CNN模型,其在11760條記錄上分類結果的特異性達到了93.59%,但靈敏度僅為61.98%,該方法以犧牲靈敏度為代價而提高特異性,增加了漏診的風險.上述方法中,由于模型結構復雜,造成模型運算量大,訓練時間長,識別準確率不高等問題.
針對傳統深度神經網絡在心律不齊檢測中存在的訓練時間長、運算量大、識別率不高等問題,本文提出了一種簡潔、高效的卷積神經網絡模型(Simple but Efficient CNN,SE-CNN)用于自動檢測ECG心律不齊,該模型使用單導聯ECG數據構建了一個一維卷積神經網絡,在網絡層數、訓練參數、運算時間等方面具有優勢.在保證模型良好訓練性能情況下,使其能夠以較快的訓練速度達到一個較高的識別精度.通過使用MIT-BIH心律失常數據庫的數據進行驗證,SE-CNN的準確率為96.41%,表明本文提出的方法具有良好的ECG識別性能及應用價值.

SE-CNN的基本結構如圖1所示,其基本結構包括3部分:卷積層(C1,C3)、池化層(S2,S4)、全連接層(F1,F2,F3).通過卷積層和池化層交替執行提取特征,并將提取到的特征作為全連接層的輸入進行分類.接下來,本文將描述每個層的工作原理.

圖1 SE-CNN網絡結構
1)卷積層
卷積層由層C1,C3組成,與傳統二維CNN[11]不同,SE-CNN的卷積層均由大小為9*1的卷積核與上一層的特征圖進行獨立的一維卷積(卷積核數目均為30),再加上一個偏置,最后傳遞給一個非線性激活函數(如ReLU)而得到卷積層的輸出.層C1,C3分別由30個1*352,30個1*168的特征圖組成,計算過程如公式(1)所示:
(1)

2)池化層
池化層由層S2,S4組成,也稱為取樣層.卷積層是池化層的輸入,卷積層的一個特征面與池化層中的一個特征面一一對應.池化層目的是降低卷積層輸出的特量的維度,減少過擬合現象,使SE-CNN更加健壯.目前主流的方法有最大池化(max-pooling)和均值池化(mean-pooling),最大池化是取局部接受域中值最大的點,均值池化是對局部接受域中的所有值求均值[12,13].SE-CNN的池化層對卷積層的每個特征圖均進行尺度2*1的最大池化操作,因此S2和S4分別由30個1*176,30個1*84的特征圖組成.
3)全連接層
經過多個卷積層和池化層提取特征圖之后,用全連接層(F1,F2,F3)連接所有特征,最后用softmax邏輯回歸(softmax regression)進行分類.SE-CNN的輸出是輸入時間序列中所對應標簽的預測概率分布.SE-CNN從第5層開始為全連接層,第7層為輸出層,輸出單元數為5,計算過程如下:
(2)
(3)
(4)

在卷積層C1中,使用30個9*1的卷積核對輸入的ECG信號進行卷積操作,得到30個特征圖,每個特征圖的大小為(1*352).在池化層S2中,對C1的每個特征圖進行尺度為2*1的最大池化操作,特征圖數目仍為30,經池化之后每個特征圖的大小為(1*176).C3設置了30個特征圖,用9*1的卷積核對S2進行卷積,此時特征圖大小為(1*168).在S4層中,對C3的每個特征圖進行尺度為2*1的最大池化操作,特征圖數目為30,此時特征圖的大小為(1*84).在全連接層F1中,設置80個神經元,與S4層的特征圖進行全連接.在全連接層F2中,設置70個神經元,與F1層的神經元進行全連接.輸出層F3是與F2的一個全連接層,輸出層F3設置5個神經元以對應5種ECG心跳類型.
MIT-BIH數據庫[14]共有48組心電數據,每組數據時長約30分鐘,采樣率為360Hz,共有650000個采樣點,且每條記錄標記了QRS波位置以及每個心拍對應疾病注釋類型.每組數據包含兩個導聯的心電信號,由于雙導聯間數據與其導聯內數據之間的關系是相互獨立的,且本實驗研究以一維模型為基本條件,所以從每組ECG數據中選取單導聯作為本實驗數據進行研究.
3.2.1 數據去噪
在實際臨床檢測中,心電信號通常被各種噪聲干擾,比如工頻干擾、基線漂移、肌電干擾等.為了使心電數據效果會更加精確,需要對數據進行相應的去噪處理.目前,大多數文獻采用的去噪方法有低通濾波、帶陷濾波器、小波變換以及零相移濾波器等[15-18].根據MIT-BIH數據特點,本文選用60Hz陷波濾波器去除工頻干擾,并用小波變換去除高頻噪聲和基線漂移.
3.2.2 數據分類
MIT-BIH數據在每個心跳周期都標注有疾病注釋,根據實驗需求,將每組數據以R峰為中間點,向兩端共取360個采樣點作為一個數據樣本.48組數據總共采集110281個樣本,共對應24種標簽注釋.將MIT-BIH數據集中的心電節拍按照AAMI標準分為五大類,分別是正常(Normal,N)、室上性異常(Supraventricular ectopic,S)、心室異常(Ventricular ectopic,V)、融合(Fusion,F)、未分類的(unknown,Q).
3.2.3 增加數據與歸一化
在分類后的心電數據中,每種心拍之間數據量差距較大,具有明顯的數據不平衡現象,影響SE-CNN的特征學習,從而最終影響識別精確度.目前解決數據不平衡問題的方法主要有采樣法、加權法以及對原始數據加噪處理等[8,19].然后根據心電類數據具有周期性等特點,通過“平移起始點”[19]法,總共生成465000個數據樣本,每類心拍數量之比達到1∶1,這樣不僅增加了訓練樣本數,解決了數據不平衡的問題,還增強了識別算法的魯棒性.最后對每個樣本數據再用Z-score歸一化方法對數據進行完善.
在機器學習方法中,通常用精確率(Accuracy,Acc)、靈敏度(Sensitivity,Sen)、特異度(Specificity,Spec)來評估算法的性能.Acc代表了該算法檢測出真實患病的樣本和真實無病的樣本總和占所有樣本的比率,Acc越高,說明該算法檢測出樣本真實情況的能力越強.Sen代表了該算法對這種疾病的檢測能力,Sen越高,說明本算法檢測此類疾病的能力越強.Spec代表了該算法對無病的檢測能力,Spec越高,說明本算法檢測無病的能力越強.它們的定義如下:
(5)
(6)
(7)
其中,True Positive (TP)、False Positive (FP)、False Negative (FN)、True Negative (TN)分別是屬于該類且被分類器分為該類的樣本數,不屬于該類但被分類為該類的樣本數,屬于該類但被分類為不屬于該類的樣本數,不屬于該類且被分類為不屬于該類的樣本數.
本文采用10倍交叉驗證[20]策略,將心電數據分成10份,9份作為訓練數據,剩余1份作為測試數據,交叉驗證重復10次試驗,每次試驗都會得出相應的評估結果精確率、靈敏度、特異度.最后,將10次結果的平均值作為算法整體性能的估計.本文工作在具有2個Intel Xeon E5-2650處理器和128G內存的服務器上進行訓練.

圖2 原始數據混淆矩陣圖
本文分別使用原始MIT-BIH數據和去噪后的MIT-BIH數據進行試驗.圖2和圖3分別表示原始數據和去噪數據的實驗混淆矩陣,其中S、N、V、F和Q分別代表五類心拍.為了驗證SE-CNN的有效性,與文獻[8]中的研究成果進行對比(見表1).文獻[8]是以R峰為檢測中心,將ECG信號分割成260個采樣點,使用Daubechies6小波濾波器進行去噪[21],與本文相同的是都是使用的Z-score方法對每個樣本數據進行歸一化處理.文獻[8]中CNN模型采用的是9層網絡架

圖3 去噪數據混淆矩陣
構,分別是3個卷積層,3個池化層以及3個全連接層.CNN(A)和CNN(B)分別是用原始數據和無噪音數據對這9層網絡架構訓練得到的CNN模型.在CNN(A)和CNN(B)上的準確率分別是93.47%和94.03%.對于本文提出的SE-CNN模型,原始數據和去噪數據對應的識別準確率分別是95.42%和96.41%,表明去噪后的效果較好.對比可知,不管是在原始數據上的試驗結果,還是在去噪數據上的實驗結果,SE-CNN模型取得的結果均優于文獻[8]中模型的結果,且CNN(A)和CNN(B)均是9層的網絡結構,而本論提出的SE-CNN模型是7層,表明本文提出的模型復雜度較小且檢測精度較高,具有一定的優越性.
最后,將本文算法與傳統心律不齊檢測算法進行比較(見表2).值得說明的是,所有對比方法的結果均是在MIT-BIH數據集上獲取的.由表2可知,本文算法與傳統算法的精度比較接近,然而傳統方法需要手工提取特征,本文提出的算法結合了傳統心律不齊檢測方法所需的基本步驟,不需要手工編碼特征,實現了端到端的ECG心律不齊的檢測五分類.

表1 不同CNN分類模型的實驗結果

表2 傳統心律不齊檢測算法與本文算法的比較
DWT:Discrete Wavelet Transform,ICA:Independent Component Analysis,PCA:Principal Component Analysis,RR:RR intervals,WPD:WaveletPacket Decomposition.GMM:Gaussian Mixture Model,LS-SVM:Least Square-Support Vector Machine,NN:Neural Network,PNN:Probabilistic Neural Network,RF:Random Forest,SVM:Support Vector Machine.
本文提出了一種簡潔、高效的卷積神經網絡模型SE-CNN用于ECG心律不齊的自動檢測.針對傳統深度神經網絡訓練時間長、運算量大、以及表現性能不高等問題,本文采用具有較少層數的一維卷積神經網絡對單導聯ECG信號進行識別,在簡化了模型復雜度的同時保證良好了的訓練性能.與其它基于CNN的檢測方法相比,本文提出的方法具有更高的識別率和運算效率;與傳統檢測方法相比,SE-CNN擺脫了手工編碼特征的依賴,實現了端到端的ECG心律不齊的檢測.進一步工作是以SE-CNN為算法基礎,使用多導聯ECG信號以提高心律不齊檢測的精度,并將其應用于其它心血管疾病的檢測.