龐偉,馬樂榮,何進(jìn)榮,丁蒼峰
(延安大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,陜西 延安 716000)
心電信號是臨床醫(yī)學(xué)領(lǐng)域患者心臟健康狀況非常重要的衡量標(biāo)準(zhǔn),成為診斷各類心臟疾病的有效手段。在分類識別心電信號的領(lǐng)域中,快速精準(zhǔn)且高效的識別算法一直是學(xué)者們探索的主要方向。普通的心電圖只能記錄、分析,表示心電圖當(dāng)時(shí)的情況,但是有很多異常情況在當(dāng)時(shí)做心電圖的時(shí)候不能被及時(shí)發(fā)現(xiàn),從而不能被記錄,動(dòng)態(tài)心電圖的出現(xiàn)解決了這個(gè)問題,在做心電圖時(shí)探測電極的安放位置有3個(gè)肢導(dǎo)聯(lián)、3個(gè)加壓肢導(dǎo)聯(lián)、6個(gè)胸導(dǎo)聯(lián),稱為十二導(dǎo)聯(lián)心電圖。對于單心拍心電信號的識別以及診斷,深度學(xué)習(xí)之前的傳統(tǒng)分類方法主要有支持向量機(jī)、模糊數(shù)學(xué)、隨機(jī)森林等。例如,F(xiàn)ENG等[1]提出將心電信號使用多重小波算法進(jìn)行濾波之后,再采用SVM分類器進(jìn)行分類與識別。VENKATESAN等[2]提出基于K最鄰近分類算法的心律失常分類方法,實(shí)現(xiàn)對正常和異常受試者的分類識別。
隨著人工智能的發(fā)展,深度學(xué)習(xí)的方法被應(yīng)用到了許多領(lǐng)域中,在近幾年的心電信號分類研究中,更多的研究人員采用了深度學(xué)習(xí)的方法。ACHARYA等[3]使用深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)來進(jìn)行心搏的識別;ALI等[4]在單心拍心電信號分類研究中,使用了AlexNet網(wǎng)絡(luò)模型,平均精度達(dá)到92%;楊春德等[5]人利用改進(jìn)的一維U-Net++模型在單心拍心電信號分類任務(wù)中,達(dá)到了98.10%的準(zhǔn)確率;張培玲等[6]使用改進(jìn)殘差網(wǎng)絡(luò)的方法進(jìn)行分類研究,先使用提出的新閾值函數(shù)對ECG單心拍信號進(jìn)行去噪處理,再使用inception模塊加殘差網(wǎng)絡(luò)的模型進(jìn)行分類,最終得到了95.1%的準(zhǔn)確率。孫夢麗等[7]與吳雪等[8]使用遷移學(xué)習(xí)的方法應(yīng)用于心電信號分類任務(wù),得到了相當(dāng)優(yōu)秀的結(jié)果;SIMONYAN等[9]利用I-DCNN的方式進(jìn)行心電信號分類,相比較傳統(tǒng)分類方法得到了性能上的提高。
大多數(shù)分類識別算法都是基于單心拍心電圖進(jìn)行分類識別,對于訓(xùn)練數(shù)據(jù)量有很大的需求,處理數(shù)據(jù)步驟繁瑣,且只能針對單心拍進(jìn)行分類,無法從患者整體的心率角度分析病灶,在一些單心拍分類任務(wù)中取得較好準(zhǔn)確率的方法,在十二導(dǎo)聯(lián)心電圖分類中,可能因?yàn)槎嗤ǖ赖挠绊懯沟脤?shí)驗(yàn)?zāi)P偷臏?zhǔn)確率不夠理想。
十二導(dǎo)聯(lián)數(shù)據(jù)集規(guī)模小,在神經(jīng)網(wǎng)絡(luò)模型構(gòu)建過程中要盡可能降低網(wǎng)絡(luò)復(fù)雜程度。文本神經(jīng)網(wǎng)絡(luò)TextCNN[10]被廣泛應(yīng)用于醫(yī)療圖像處理,由于文本神經(jīng)網(wǎng)絡(luò)TextCNN模型簡單,不能夠有效的捕捉波形的變化,因此本文提出基于卷積神經(jīng)網(wǎng)絡(luò)VGG16[11-12]與文本神經(jīng)網(wǎng)絡(luò)TextCNN模型融合分類識別算法。文本神經(jīng)網(wǎng)絡(luò)TextCNN模型融合卷積神經(jīng)網(wǎng)絡(luò)VGG16模型進(jìn)行優(yōu)化來處理十二導(dǎo)聯(lián)電信號,從而實(shí)現(xiàn)對十二導(dǎo)聯(lián)電信號分類的識別及疾病的診斷分類。
十二導(dǎo)聯(lián)心電圖由3個(gè)肢導(dǎo)聯(lián)、3個(gè)加壓肢導(dǎo)聯(lián)、6個(gè)胸導(dǎo)聯(lián)組成,包括6個(gè)肢體導(dǎo)聯(lián)(Ⅰ、Ⅱ、Ⅲ、aVR、aVL、aVF)和6個(gè)胸導(dǎo)聯(lián)(V1~V6)。單個(gè)數(shù)據(jù)集維度尺寸為12×5 000(500 Hz頻率,10 s的獲取時(shí)間),需要對數(shù)據(jù)集進(jìn)行切分,使得數(shù)據(jù)集尺寸符合神經(jīng)網(wǎng)絡(luò)輸入尺寸。為了保證后續(xù)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)與訓(xùn)練的效率,需要對十二導(dǎo)聯(lián)心電信號進(jìn)行預(yù)處理操作,主要是多通道數(shù)據(jù)歸一化。十二導(dǎo)聯(lián)心電圖數(shù)據(jù)庫將數(shù)據(jù)保存為12×5 000的二維數(shù)組格式,為了便于后續(xù)TextCNN-VGG16神經(jīng)網(wǎng)絡(luò)的卷積、池化、Dropout、全連接等操作,將十二導(dǎo)聯(lián)心電數(shù)據(jù)的二維數(shù)組表示為多通道的一維數(shù)組。
目前對于心電圖診斷方面的分類方法,大都使用傳統(tǒng)機(jī)器學(xué)習(xí)的分類方法進(jìn)行分類,得到了不錯(cuò)的準(zhǔn)確率,它們主要由數(shù)據(jù)預(yù)處理、人工提取特征以及設(shè)計(jì)分類器3部分組成。首先消除各種噪聲,再將人工提取的時(shí)域、頻域以及小波域的特征輸入分類器中,雖準(zhǔn)確率較高,但步驟相比較深度學(xué)習(xí)較為繁瑣,需要大量訓(xùn)練集,并且在動(dòng)態(tài)的心電圖分類信號中準(zhǔn)確率較低。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法可以通過更為簡單的特征模式進(jìn)行提取,從而得到更為全面的心電信號特征,實(shí)現(xiàn)心電信號的自動(dòng)分類,在臨床診斷中的應(yīng)用更為廣泛。
本文主要在TextCNN與VGG16模型融合的神經(jīng)網(wǎng)絡(luò)框架下對十二導(dǎo)聯(lián)心電圖數(shù)據(jù)集進(jìn)行自動(dòng)分類:
1)TextCNN使用多個(gè)不同大小的卷積對心電數(shù)據(jù)集進(jìn)行卷積操作,得到多個(gè)Feature Map,再對多個(gè)Feature Map進(jìn)行池化操作,將其拼接起來,最后使用Softmax全連接層進(jìn)行激活。TextCNN網(wǎng)絡(luò)模型如圖1所示。
2)VGG16是深度學(xué)習(xí)中最經(jīng)典的CNN模型之一,由5層的卷積層、3層全連接層以及Softmax輸出層構(gòu)成,層與層之間使用最大池化分開,所有隱層激活函數(shù)都使用Relu函數(shù),在殘差網(wǎng)絡(luò)集構(gòu)出來之前,VGG16在加深網(wǎng)絡(luò)結(jié)構(gòu)方向上做出了極大貢獻(xiàn),結(jié)構(gòu)圖如圖2所示。
本文在TextCNN網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,將VGG16的層數(shù)與卷積核大小復(fù)刻到TextCNN中,將TextCNN中的多個(gè)大小不同的卷積核設(shè)置為3個(gè)長度為3的卷積核與2個(gè)長度為2的卷積核,對傳入的十二導(dǎo)聯(lián)數(shù)據(jù)集進(jìn)行卷積操作,得到多個(gè)Feature Map,按順序?qū)eature Map進(jìn)行池化操作,使用大小不同的卷積核進(jìn)行卷積操作,得到的特征具有全局性,通2層全連接層,1層Softmax輸出層,最終得到分類結(jié)果,如圖3所示。
本文采用paddle競賽AIWIN心電圖智能診斷競賽公開數(shù)據(jù)集進(jìn)行試驗(yàn)[13],該數(shù)據(jù)集包含兩類ECG數(shù)據(jù),正常心率數(shù)據(jù)與非正常心率數(shù)據(jù)。
圖2 VGG16網(wǎng)絡(luò)模型
圖3 VGG16-TextCNN融合模型
該數(shù)據(jù)集的數(shù)量相對非常小,符合few-shotlearning的數(shù)據(jù)集尺寸,每條數(shù)據(jù)都由1個(gè)Mat文件構(gòu)成,標(biāo)簽單獨(dú)存放在Csv文件當(dāng)中,共包含1 600條訓(xùn)練集十二導(dǎo)聯(lián)數(shù)據(jù)記錄與400條測試集十二導(dǎo)聯(lián)數(shù)據(jù)記錄,心電數(shù)據(jù)的單位為mV,采樣率為500 Hz,每條記錄長度為5 s。文件中存儲(chǔ)了12導(dǎo)聯(lián)的電壓信號(包含了Ⅰ,Ⅱ,Ⅲ,aVR,aVL,aVF,V1,V2,V3,V4,V5和V6),十二導(dǎo)聯(lián)心電圖如圖4所示,橫坐標(biāo)表示時(shí)間t(ms),縱坐標(biāo)表示電壓U(mV),心電圖記錄的是電壓隨時(shí)間變化的曲線。
在數(shù)據(jù)集中,心電信號分為正常心拍與異常心拍兩類。在本文中采用混淆矩陣的性能指標(biāo)對模型性能進(jìn)行評判[14]。在心電信號分類輸出結(jié)果中,可以得到模型分類的正常心拍判定數(shù)與異常心拍判定數(shù),稱為正類數(shù)與負(fù)類數(shù)。所以可以分為真實(shí)情況正類(TP)、真實(shí)情況負(fù)類(TN)、模型判定的正類(FP)、模型判定的負(fù)類(FN)。為了更加直觀的對試驗(yàn)結(jié)果性能進(jìn)行評判,利用得到的混淆矩陣,計(jì)算出模型的精確率(Pre)、召回率(Recall)、平衡F分?jǐn)?shù)(F1-score)以及準(zhǔn)確率(Acc),通過上述4個(gè)指標(biāo),就可以對模型性能進(jìn)行評估。
心電圖分類模型中判斷正確的數(shù)量占總觀測數(shù)量的比重為準(zhǔn)確率:
圖4 十二導(dǎo)聯(lián)心電圖圖示
分類模型預(yù)測是正類數(shù)的所有結(jié)果中,預(yù)測對的比重為精確率:
分類模型預(yù)測正確的結(jié)果占所有正確結(jié)果的比重稱為召回率:
F1-score被定義為精準(zhǔn)率和召回率的調(diào)和平均數(shù):
在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,很容易出現(xiàn)過擬合的情況,常用的方法有數(shù)據(jù)增強(qiáng)、L1L2正則化、Dropout等。本文采用的是Dropout的方法解決過擬合現(xiàn)象,Dropout參數(shù)設(shè)置為0.5。
網(wǎng)絡(luò)中優(yōu)化器選擇為自適應(yīng)據(jù)估計(jì)(Adam)優(yōu)化器,beta1參數(shù)設(shè)置為0.9,beta2參數(shù)設(shè)置為0.999,學(xué)習(xí)率初始化為0.005。
選擇ReLU函數(shù)作為卷積池化層的激活函數(shù),在全連接層選擇Softmax函數(shù)作為激活函數(shù)。相比較Sigmoid函數(shù),在計(jì)算過程中,Sigmoid函數(shù)的計(jì)算量明顯大于ReLU函數(shù),采用ReLU函數(shù)使得整個(gè)計(jì)算過程精簡很多。而Softmax函數(shù)的目的是為了使分類結(jié)果以概率的形式展現(xiàn)出來。
ReLU函數(shù)作為神經(jīng)網(wǎng)絡(luò)中的激活函數(shù),為神經(jīng)元在線性變換wTx+b之后的非線性輸出結(jié)果,公式如下:
對于上層神經(jīng)網(wǎng)絡(luò)的輸入向量x,使用ReLU激活函數(shù)的神經(jīng)元會(huì)輸出:
其中,w為網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)層之間的權(quán)重,b為神經(jīng)網(wǎng)絡(luò)層之間的偏置。
使用交叉熵?fù)p失函數(shù)(Cross Entropy Loss)作為損失函數(shù)。對于同一個(gè)隨機(jī)變量X的2個(gè)單獨(dú)的概率分布p(x)和q(x),使用KL散度來衡量概率分布之間的差異,KL散度的公式如下:
機(jī)器學(xué)習(xí)中,p(x)表示樣本的真實(shí)分布,q(x)表示模型預(yù)測的分布,x表示分類標(biāo)簽。首先將KL散度拆開:
前者表示信息熵,后者表示交叉熵,即KL散度=信息熵+交叉熵,交叉熵公式為
由于機(jī)器學(xué)習(xí)的過程中,標(biāo)簽與數(shù)據(jù)已經(jīng)確定,所以信息熵為常量,而KL散度可以表示真實(shí)概率分布p(x)與預(yù)測概率分布q(x)的差異性,差異越小,效果越好。由于KL散度中信息熵的值為常量,所以最小化交叉熵就是最小化KL散度,且公式比KL散度更易于計(jì)算,所以采用交叉熵?fù)p失函數(shù)。
開始訓(xùn)練前,先隨機(jī)初始化權(quán)重。在模型訓(xùn)練過程中,使用K折交叉驗(yàn)證[15]方法來減少數(shù)據(jù)集劃分所帶來的影響,經(jīng)過多次數(shù)的平均可以學(xué)習(xí)得到更符合真實(shí)數(shù)據(jù)分布的模型,本文選擇K=5,為5折交叉驗(yàn)證,如圖5所示。
圖5 5折交叉驗(yàn)證
試驗(yàn)過程使用Python語言,利用Tensorflow中的Keras庫與Sk-Learn庫作為神經(jīng)網(wǎng)絡(luò)試驗(yàn)的工具。本次試驗(yàn)采用經(jīng)典的VGG16、InceptionNet、LeNet方法進(jìn)行對比分析。InceptionNet是以橫向卷積層堆疊的方法進(jìn)行分類任務(wù)的網(wǎng)絡(luò)模型,LeNet利用七層網(wǎng)絡(luò)模型進(jìn)行分類,具有卷積層、池化層、全連接層的經(jīng)典七層網(wǎng)絡(luò)模型。由于數(shù)據(jù)集數(shù)量較少,在訓(xùn)練過程中會(huì)導(dǎo)致訓(xùn)練集正確率高,但驗(yàn)證集的正確率不高,使得泛化能力太差,VGG16如 圖6所示,InceptionNet如圖7所 示,LeNet如圖8所示,橫坐標(biāo)代表訓(xùn)練波數(shù)(Epoch),縱坐標(biāo)代表準(zhǔn)確率(Acc)。
在TextCNN與VGG16Net分類模型試驗(yàn)中,訓(xùn)練集得到的準(zhǔn)確率為83.64%,而驗(yàn)證集準(zhǔn)確率為82.54%,相比較VGG16、InceptionNet、LeNet,具有良好的泛化能力,并且由于訓(xùn)練集屬于小樣本訓(xùn)練,在實(shí)際應(yīng)用當(dāng)中會(huì)有更加良好的表現(xiàn)。TextCNN與VGG16Net分類模型試驗(yàn)的準(zhǔn)確率如圖9所示。
圖6 VGG16試驗(yàn)準(zhǔn)確率
圖7 InceptionNet試驗(yàn)準(zhǔn)確率
圖8 LeNet試驗(yàn)準(zhǔn)確率
如表1所示,在消融實(shí)驗(yàn)中,VGG16模型的訓(xùn)練集準(zhǔn)確率為98.86%,驗(yàn)證集上的準(zhǔn)確率為58.64%;LeNet模型的訓(xùn)練集準(zhǔn)確率為97.42%,驗(yàn)證集上的準(zhǔn)確率為57.42%;InceptionNet模型的訓(xùn)練集準(zhǔn)確率為99.41%,但在驗(yàn)證集上的準(zhǔn)確率為54.26%;而VGG16-TextCNN的訓(xùn)練集準(zhǔn)確率為83.64%,驗(yàn)證集上的準(zhǔn)確率為82.54%。在小樣本數(shù)據(jù)集的訓(xùn)練過程中,經(jīng)典的二維卷積在心電信號數(shù)據(jù)集上由于特征提取器的大小形狀限值,使得VGG16與LeNet的驗(yàn)證集表現(xiàn)較為一般;而InceptionNet的復(fù)雜結(jié)構(gòu)在處理高維數(shù)據(jù)集的結(jié)果較為優(yōu)秀,但是在處理小樣本低維數(shù)據(jù)集的過程中會(huì)出現(xiàn)比較嚴(yán)重的過擬合情況;而VGG16-TextCNN在處理過程中既保留了數(shù)據(jù)集原有特征,也避免了嚴(yán)重的過擬合情況,有相當(dāng)優(yōu)秀的泛化能力。
圖9 VGG16Net-TextCNN試驗(yàn)準(zhǔn)確率
表1 3種試驗(yàn)方法與VGG16-TextCNN方法比較
在常規(guī)使用的公開數(shù)據(jù)集中,預(yù)處理的數(shù)據(jù)為單通道數(shù)據(jù),而ECG十二導(dǎo)聯(lián)心電圖信號是十二通道數(shù)據(jù)集,特征具有全局性,并且數(shù)據(jù)集本身樣本數(shù)量較少,所以采取比較簡單的神經(jīng)網(wǎng)絡(luò)模型,避免過擬合的發(fā)生。
本文先將Mat文件轉(zhuǎn)換稱Csv文件,再將Csv文件中二維數(shù)據(jù)切片成為一維數(shù)據(jù),通過VGG16-TestCNN模型一維卷積方法提取特征,共有三層卷積層,每個(gè)卷積層大小不一,以便于得到全局特征,再將部分提取到的特征進(jìn)行整合,最后由2個(gè)全連接層輸出分類結(jié)果,在小樣本驗(yàn)證集中準(zhǔn)確率達(dá)到82.54%,可以有效地識別正常心拍與異常心拍。
接下來的關(guān)注點(diǎn)應(yīng)在對小樣本數(shù)據(jù)集的研究上。實(shí)際生活中樣本數(shù)據(jù)不能夠完全滿足部分神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需求,使用少量數(shù)據(jù)來提升分類準(zhǔn)確率的神經(jīng)網(wǎng)絡(luò)模型,這是未來臨床診斷中的重要手段。