包志強(qiáng),趙志超,王宇霆
(西安郵電大學(xué) 通信與信息工程學(xué)院,陜西 西安 710121)
心電信號(hào)(electrocardiogram,ECG)為反映人體心臟活動(dòng)的一種時(shí)間序列[1]。目前心電自動(dòng)分類診斷常用離散小波變換[2,3]、特征選擇[4,5]、隱馬爾可夫模型(HMM)[6,7]、混合專家[8]等技術(shù)。Subramanian B等[3]提出了一種小波變換技術(shù)用于心電信號(hào)節(jié)拍的壓縮。Teijeiro T等[5]提出一種對(duì)心電圖的外展解釋,獲得每一次心跳的一組定性形態(tài)學(xué)和節(jié)律特征的方法。Jorge Oliveira等[6]提出隱馬爾可夫模型用于心電圖節(jié)拍分割和分類。這些方法需要一定的信號(hào)先驗(yàn)知識(shí)以及經(jīng)常需要專家輸入,這些限制了該方法的應(yīng)用。
研究者們將目光轉(zhuǎn)向卷積神經(jīng)網(wǎng)絡(luò)[9-11],將快速傅里葉變換和卷積神經(jīng)網(wǎng)絡(luò)結(jié)合并取得不錯(cuò)的效果[12,13]。Tahmid Abtahi等[12]比較了直接卷積、基于快速傅里葉變換的卷積和快速傅里葉重疊加卷積,發(fā)現(xiàn)快速傅里葉重疊加卷積較前兩者減少了運(yùn)行時(shí)間。Mihir Mody等[13]提出了一種避免內(nèi)存增長(zhǎng)的頻域算法,直接對(duì)系數(shù)進(jìn)行傅里葉變換,在頻域內(nèi)進(jìn)行有效的二維卷積。
為了減少卷積運(yùn)算的復(fù)雜度,本文在改進(jìn)的基于快速傅里葉變換的卷積模型上提出一種改進(jìn)的模型快速傅里葉變換-卷積神經(jīng)網(wǎng)絡(luò)(fast Fourier transform-convolutional neural network,F(xiàn)FT-CNN),該模型卷積部分首先以固定步長(zhǎng)對(duì)心拍數(shù)據(jù)進(jìn)行劃分,接著對(duì)所劃分的數(shù)據(jù)首尾均以首尾數(shù)據(jù)延長(zhǎng)固定個(gè)長(zhǎng)度,然后對(duì)所補(bǔ)數(shù)據(jù)經(jīng)過(guò)快速傅里葉變換并與卷積核相乘,最后經(jīng)過(guò)快速傅里葉逆變換并分別相加,本文將該模型應(yīng)用于一維心拍信號(hào)實(shí)現(xiàn)了4種心拍的預(yù)測(cè),在減少運(yùn)行復(fù)雜度的基礎(chǔ)上取得了較好的預(yù)測(cè)效果,有效提高了運(yùn)算效率。
傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的卷積使用的是一種滑動(dòng)窗口的技術(shù),需要卷積核在數(shù)據(jù)上滑動(dòng),在每個(gè)滑動(dòng)位置處卷積核與相應(yīng)的數(shù)據(jù)之間執(zhí)行乘法累積,如式(1)所示
(1)
由于卷積神經(jīng)網(wǎng)絡(luò)在分類方面的優(yōu)越性,在以往心拍分類中,一維卷積神經(jīng)網(wǎng)絡(luò)[14]和二維卷積神經(jīng)網(wǎng)絡(luò)[11]模型都會(huì)被使用。卷積的過(guò)程是提取特征重要的部分,而恰恰卷積是傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)最耗時(shí)的部分,大約接近于90%的時(shí)間用于卷積階段[12],為了有效地提高網(wǎng)絡(luò)的運(yùn)行效率,本文基于快速傅里葉重疊以及加法卷積提出了一種深度學(xué)習(xí)算法。原始一維心拍數(shù)據(jù)為L(zhǎng)_1,卷積核的長(zhǎng)度為L(zhǎng),為了使模型能夠不受數(shù)據(jù)長(zhǎng)短的影響,對(duì)原始心拍數(shù)據(jù)進(jìn)行統(tǒng)一長(zhǎng)度操作,通過(guò)計(jì)算,將所有數(shù)據(jù)統(tǒng)一補(bǔ)零至L_2,補(bǔ)零后的數(shù)據(jù)表示如式(2)所示
L_2=[(0,…,0),L_1,(0,…,0)]
(2)
將補(bǔ)零后的數(shù)據(jù)按固定長(zhǎng)度L依次切割為n個(gè)塊數(shù)據(jù)如式(3)所示,并對(duì)每個(gè)數(shù)據(jù)兩端各補(bǔ)5個(gè)首尾值,補(bǔ)值后數(shù)據(jù)d(n)表示如式(4)所示
d1(n)=L_2(nL-L+1,nL)
(3)
(4)
對(duì)每一塊數(shù)據(jù)分別做快速傅里葉變換,再對(duì)卷積核做快速傅里葉變換,將每塊數(shù)據(jù)頻域的結(jié)果和卷積核頻域的結(jié)果相乘,每一塊乘積B(n)如式(5)所示
(5)
對(duì)每一塊乘積分別做快速傅里葉逆變換,接著將逆變換的結(jié)果分別相加起來(lái)得到本文定義的卷積結(jié)果,如式(6)所示
(6)
傳統(tǒng)的一維卷積神經(jīng)網(wǎng)絡(luò)與本文提出的模型FFT-CNN中卷積結(jié)構(gòu)如圖1所示。傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)卷積部分是先以卷積核的長(zhǎng)度5個(gè)采樣點(diǎn)按照步長(zhǎng)一個(gè)采樣點(diǎn)取數(shù)據(jù),接著實(shí)現(xiàn)數(shù)據(jù)和卷積核的相乘和相加,得到卷積后的結(jié)果。本文模型中提出的卷積部分首先將心拍數(shù)據(jù)按照3個(gè)采樣點(diǎn)進(jìn)行劃分,并且在首尾位置分別延長(zhǎng)一個(gè)單位,數(shù)據(jù)分別補(bǔ)為首尾的數(shù)據(jù),將每個(gè)延長(zhǎng)的數(shù)據(jù)分別通過(guò)快速傅里葉變換,再與卷積核相乘,對(duì)乘積經(jīng)過(guò)快速傅里葉逆變換,最后把每個(gè)數(shù)據(jù)的結(jié)果相加起來(lái)則得到本文模型定義的卷積。最終,將卷積的結(jié)果經(jīng)過(guò)池化實(shí)現(xiàn)特征的降維,進(jìn)而壓縮參數(shù),再經(jīng)過(guò)全連接層將前面的特征綜合起來(lái),最后經(jīng)過(guò)softmax函數(shù)輸出4種類型的概率值,通過(guò)反向傳播不斷更新網(wǎng)絡(luò)參數(shù),一次次迭代得到最終網(wǎng)絡(luò)模型,最后通過(guò)概率值判斷類別。
圖1 傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)和本文模型的卷積結(jié)構(gòu)
FFT-CNN與BP網(wǎng)絡(luò)類似,都是通過(guò)反向傳播來(lái)進(jìn)行權(quán)重和偏置的調(diào)節(jié),使用梯度下降法更新。
1.3.1 反向傳播步驟
(1)實(shí)現(xiàn)網(wǎng)絡(luò)的前向傳播,并得到每個(gè)節(jié)點(diǎn)的輸出值;
(2)求出該網(wǎng)絡(luò)的損失函數(shù);
(3)計(jì)算輸出層樣本值與輸出的殘差δnl;
(4)計(jì)算出其余每層各節(jié)點(diǎn)的殘差δl;
(6)根據(jù)梯度下降法更新權(quán)值w和偏置b。
1.3.2 殘差傳遞
(1)損失函數(shù)
對(duì)于一個(gè)樣本集{(x1,y1),(x2,y2),…,(xn,yn),每個(gè)樣本的損失函數(shù)定義如式(7)所示
(7)
此損失函數(shù)為softmax損失函數(shù),softmax層最后輸出每個(gè)類別的概率值,式中sj表示的是輸出量s的第j個(gè)值,表示的是這個(gè)樣本屬于第j類的概率,j的范圍為從1到類別的個(gè)數(shù)T,所以y是一組1*T的向量,且里面的T個(gè)值只有一個(gè)值為1,其它的T-1個(gè)值均為0。為1的那個(gè)值就是真實(shí)標(biāo)簽對(duì)應(yīng)的位置,其它都是0。
(2)輸出層的殘差與其它層略有不同,對(duì)于輸出層nl的每個(gè)節(jié)點(diǎn)i的殘差計(jì)算公式如式(8)所示
(8)
(3)由于池化層的操作是將輸出的特征層每一個(gè)元素對(duì)應(yīng)卷積層一塊區(qū)域。所以需要將池化層的殘差上采樣傳遞到卷積層。殘差計(jì)算如式(9)-式(10)所示
(δl+1)′=(δl+1)
(9)
(10)
卷積層的殘差為卷積核轉(zhuǎn)置與上采樣后的殘差做卷積運(yùn)算,再乘以激活函數(shù)的導(dǎo)數(shù)。由于本文的結(jié)構(gòu)在前項(xiàng)傳播中沒有進(jìn)行池化,故只需將池化層的殘差順利搬移到卷積層。
1.3.3 參數(shù)更新
由上面得到的殘差,進(jìn)而計(jì)算出損失函數(shù)對(duì)權(quán)值w,偏置b的偏導(dǎo)數(shù)。計(jì)算公式如式(11)-式(12)所示
(11)
(12)
對(duì)于權(quán)值w的偏導(dǎo),由于在進(jìn)行前向卷積的時(shí)候?qū)?shù)據(jù)和卷積核都用到了快速傅里葉變換,在此處更新時(shí)同樣要用到快速傅里葉變換。傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)對(duì)權(quán)值w的偏導(dǎo)為第l層的數(shù)據(jù)直接與第l+1層的殘差相乘,本文的模型里,要首先對(duì)第l層的數(shù)據(jù)做快速傅里葉變換,接著將快速傅里葉變換的結(jié)果與第l+1層的殘差相乘進(jìn)而得到損失函數(shù)對(duì)權(quán)值w的偏導(dǎo)。
對(duì)于一個(gè)矩陣維度為1×4,卷積核維度為1×3,輸出維度則為1×2,則反向傳播的殘差也是1×2矩陣。按照上面的描述,對(duì)權(quán)值w的偏導(dǎo)表示如式(13)所示
(13)
令數(shù)據(jù)的快速傅里葉變換如式(14)所示
(14)
對(duì)權(quán)值w的偏導(dǎo)重新表示如式(15)所示
(15)
則對(duì)這個(gè)卷積核矩陣每一個(gè)卷積核的偏導(dǎo)表示如式(16)-式(18)所示
(16)
(17)
(18)
對(duì)于偏置b的偏導(dǎo)同常規(guī)的偏置一樣為第l+1層的殘差。
REN Jie, HUANG Hai-dong, WANG Qin, YANG Yu-guang, HUANG Yi, LI Qiang, BAI Chong
根據(jù)上面得到的對(duì)權(quán)值w,偏置b的偏導(dǎo)數(shù),進(jìn)而根據(jù)梯度下降法更新權(quán)值w和偏置b。計(jì)算公式如式(19)-式(20)所示
(19)
(20)
ECG記錄了人體心臟在一個(gè)周期的活動(dòng)情況[15],ECG由眾多個(gè)心電節(jié)拍組成,也簡(jiǎn)稱心拍。一個(gè)心拍表示了心臟的一次搏動(dòng),正常的一次心拍包含P波、QRS波和T波,如圖2所示。人類的心臟病態(tài)各異,心拍的形態(tài)也千變?nèi)f化。
圖2 正常心拍波形
為了驗(yàn)證所提出模型FFT-CNN的分類效果,采用來(lái)自某機(jī)構(gòu)真實(shí)的心電數(shù)據(jù),該數(shù)據(jù)共包含兩個(gè)通道,本文選取了4種類型數(shù)據(jù),包括心房顫動(dòng)、心房撲動(dòng)、右束支傳導(dǎo)阻滯和正常。每種類型每個(gè)通道均截取心拍750個(gè),一通道包含數(shù)據(jù)3000個(gè),二通道同樣包含數(shù)據(jù)3000個(gè)。
在實(shí)驗(yàn)過(guò)程中,選取80%的數(shù)據(jù)作為訓(xùn)練集,20%的數(shù)據(jù)作為測(cè)試集,將整體的預(yù)測(cè)正確率作為評(píng)價(jià)準(zhǔn)則。所用數(shù)據(jù)統(tǒng)一經(jīng)過(guò)數(shù)據(jù)歸一化處理。設(shè)置核尺寸為1×20,yita=0.001。為了評(píng)估所提出模型的有效性,設(shè)計(jì)了兩組對(duì)比實(shí)驗(yàn)。分別和傳統(tǒng)一維卷積神經(jīng)網(wǎng)絡(luò),基于快速傅里葉變換卷積兩種模型進(jìn)行對(duì)比。
為了描述復(fù)雜度,此處統(tǒng)一規(guī)定數(shù)據(jù)的維度為N×1,卷積核的維度為K×1。3種模型復(fù)雜度見表1。
表1 3種模型復(fù)雜度
從表1中很明顯可以得到,傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)計(jì)算復(fù)雜度最高,用于計(jì)算的成本會(huì)更高。由于引入了快速傅里葉變換,基于快速傅里葉變換卷積復(fù)雜度較傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)有明顯降低。本文模型具有較低的復(fù)雜度,能有效地減少用于卷積的時(shí)間,大大提高模型的效率。
本文實(shí)驗(yàn)平臺(tái)為Intel Core(TM) i5-3337U CPU @3.30 GHz,內(nèi)存為8 GB,仿真軟件為Matlab R2014b。3種模型整體預(yù)測(cè)正確率和運(yùn)行時(shí)間比較見表2。
表2 3種模型效果比較
從表2中可以看出,3種模型的比較中,本文提出的模型FFT-CNN平均正確率最高,達(dá)到了98.5%的預(yù)測(cè)正確率,說(shuō)明了本文模型預(yù)測(cè)效果最優(yōu),其次是傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò),達(dá)到98%正確率,效果稍差的為基于快速傅里葉變換的卷積,預(yù)測(cè)正確率為97%。在運(yùn)行時(shí)間方面,本文模型具有最短的時(shí)間,說(shuō)明本文模型較好于其它兩種模型。
因?yàn)槎ǖ赖臄?shù)據(jù)信噪比普遍優(yōu)于一通道,故在結(jié)果上表現(xiàn)二通道效果略強(qiáng)于一通道。本文模型對(duì)數(shù)據(jù)進(jìn)行快速傅里葉變換時(shí),通過(guò)在數(shù)據(jù)兩端各補(bǔ)5個(gè)首尾數(shù)據(jù),延長(zhǎng)做快速傅里葉變換的數(shù)據(jù)長(zhǎng)度,使模型充分學(xué)習(xí)到每段數(shù)據(jù)的連接部位特征,這些細(xì)節(jié)可能恰恰是診斷疾病類型的重要因素,顯著地提高了模型的預(yù)測(cè)準(zhǔn)確率。同時(shí),由于使用了快速傅里葉變換以及簡(jiǎn)單的乘法操作大大減小了運(yùn)算復(fù)雜度,故在運(yùn)行時(shí)間上有縮短。說(shuō)明本文模型可以準(zhǔn)確并快速的預(yù)測(cè)心拍分類。
傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)、基于快速傅里葉變換的卷積和本文所提出的算法在訓(xùn)練過(guò)程中的LOSS值如圖3所示。LOSS值反映了模型對(duì)數(shù)據(jù)預(yù)測(cè)的概率,LOSS值越小,預(yù)測(cè)的概率越高??砂l(fā)現(xiàn)3種模型總體上都最終趨于收斂,本文提出的模型雖在前面迭代時(shí)收斂速度略緩于之前的兩種模型,但在迭代次數(shù)達(dá)到50次之后,本文模型的LOSS值達(dá)到了最小,進(jìn)一步體現(xiàn)了本文模型的泛化性和魯棒性,也從另一個(gè)方面說(shuō)明了神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)。
圖3 訓(xùn)練過(guò)程LOSS值
表1反映本文模型具有較低的模型復(fù)雜度,表2反映本文模型擁有較高的預(yù)測(cè)正確率,圖3反映本文模型具有較好的泛化性和魯棒性??傊疚哪P涂梢杂行?yīng)用于心拍類別預(yù)測(cè)。
本文基于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò),在快速傅里葉重疊以及加法卷積的基礎(chǔ)上提出了一種改進(jìn)的深度學(xué)習(xí)模型FFT-CNN,將快速傅里葉變換引入卷積神經(jīng)網(wǎng)絡(luò)中卷積部分,融合兩種方法的優(yōu)勢(shì)以充分提取到心拍數(shù)據(jù)各個(gè)部分的特征。實(shí)驗(yàn)結(jié)果表明,本文利用快速傅里葉變換提出的深度學(xué)習(xí)模型FFT-CNN與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)和基于快速傅里葉變換的卷積兩種模型相比,有效地減少了運(yùn)算的復(fù)雜度,并且提升了預(yù)測(cè)效果,可以應(yīng)用于便攜式心電診療設(shè)備,作為臨床醫(yī)生的輔助手段。