李曉華
(北京華醫(yī)共享醫(yī)療科技有限公司,北京100083)
當(dāng)今社會,節(jié)奏快、壓力大已是一種常態(tài),長期的高壓生活導(dǎo)致心血管類疾病成為人類健康的最大威脅。各種心臟疾病,在心電圖上會有不同的體現(xiàn),因此,心電檢查或是實(shí)時(shí)心電監(jiān)測,可以做到早發(fā)現(xiàn)、早預(yù)防。目前,臨床上對心電圖的診斷仍然主要采用臨床醫(yī)生人工分析的方法,人工診斷過程費(fèi)時(shí)又費(fèi)力,而診斷結(jié)果的是否準(zhǔn)確又依賴于臨床大夫的專業(yè)水平。因此,準(zhǔn)確、快速、方便的心電圖輔助診斷技術(shù)也成為了當(dāng)前醫(yī)療領(lǐng)域研究的熱點(diǎn)問題。
傳統(tǒng)心電圖輔助診斷技術(shù)已經(jīng)存在了幾十年, 這些方法,基本都是依賴于手動(dòng)提取特征,然后再用各種分類器進(jìn)行分類。這些方法包括基于小波特征提取[1];基于頻率的特征提取和統(tǒng)計(jì)特征[2],同時(shí),分類方法包括支持向量機(jī)[3]、決策樹[4]等。這些方法都存在魯棒性不強(qiáng),泛化能力太弱,易受干擾等因素影響,很難適應(yīng)臨床復(fù)雜的場景。
一維卷積神經(jīng)網(wǎng)絡(luò)對序列數(shù)據(jù)的處理也表現(xiàn)出了極佳的性能,它跟二維卷積類似,也是基于局部連接和權(quán)值共享的理念,極大的減少了參數(shù)量;此外,一維池化層可以降低特征分辨率,抽取更上層的特征,進(jìn)一步減少參數(shù)量,提高了訓(xùn)練和預(yù)測時(shí)的速度,同時(shí)也降低了對硬件的要求; 一維卷積神經(jīng)網(wǎng)絡(luò)是一種端到端的結(jié)構(gòu),輸入序列數(shù)據(jù),自動(dòng)提取特征,自動(dòng)完成分類診斷工作,魯棒性極高,可以勝任不同場景下的心電識別工作。
一維卷積神經(jīng)網(wǎng)絡(luò)一般包括輸入層、一維卷積層、激活層、一維池化層、隨機(jī)失活層、全連接層等結(jié)構(gòu),各層的結(jié)構(gòu)如下:
2.2.1 輸入層:本質(zhì)上是一個(gè)輸入變量,作用是接收序列樣本,其輸入張量的形狀為:
其中,N 為batch_size,即:批量大小,指訓(xùn)練時(shí),每次輸入多少個(gè)樣本;T 為time step,即:時(shí)間步,也就是序列的長度;F 為feature,即:每個(gè)時(shí)間步的特征;
2.2.2 一維卷積層:通過一維卷積運(yùn)算來提取特征,是一維卷積神經(jīng)網(wǎng)絡(luò)最重要的組件, 其核心參數(shù)有:num_filters 是濾波器數(shù)量, 決定輸出特征圖的數(shù)量;kernel_size 是卷積核大小;padding是補(bǔ)充零行或是零列的數(shù)量;stride 是步長,指卷積過程中,每次移動(dòng)幾行或幾列;卷積層輸出特征圖的高度計(jì)算公式為:
其中,Hout為輸出特征圖的高度;Hin為輸入特征圖的高度; Kh為卷積核的高度;P 為補(bǔ)零列數(shù);S 為步長;計(jì)算寬度時(shí),也類似;
2.2.3 激活層:主要目的是引入非線性因素,在深度學(xué)習(xí)中,最常用的激活函數(shù)為ReLU 激活函數(shù), 它將大于零的輸入不做任何改變,直接輸出,其余輸入全部輸出零;其公式為:
其中,x 為輸入,max 函數(shù)為取最大值函數(shù),y 為輸出;
2.2.4 一維池化層:池化層的主要作用是降采樣,丟棄無關(guān)的細(xì)節(jié)信息,抽取更高層的信息,有最大池化和平均池化兩種,常用的是最大池化; 其核心參數(shù)有:pool_size, 為池化核的大小;pool_padding,為補(bǔ)零行數(shù)或列數(shù);pool_type,為池化類型,常用最大池化;池化層的輸出大小跟卷積層的計(jì)算方法類似,不再贅述;
2.2.5 全連接層:指的是前后兩層的所有神經(jīng)元都有連接的網(wǎng)絡(luò)結(jié)構(gòu),其參數(shù)量比較多,主要用于最后的特征分類;全連接層最后的分類概率輸出,需要采用softmax 函數(shù),其公式為:
其中,xi為第i 類的原始輸出;C 為總的類別數(shù);Pi為第i 類最終的輸出概率;
本文所用的數(shù)據(jù)集共600 個(gè)心電病例, 每個(gè)病例記錄了12導(dǎo)聯(lián)同步采集10 秒鐘的心電波形,采樣率是500Hz,共有5000個(gè)時(shí)間步,通過圖1 可知,波形的幅度在-1.5 到2 之間,一個(gè)病例,可以構(gòu)成[5000, 12]的序列輸入數(shù)據(jù),其中,5000 代表時(shí)間步,12 代表每個(gè)時(shí)間步的特征;
圖1 示例波形
本文網(wǎng)絡(luò)結(jié)構(gòu)在設(shè)計(jì)時(shí),采用了如圖2 所以的結(jié)構(gòu),具體細(xì)節(jié)如下。
Input 為輸入層;Conv1D 為一維卷積層, 用于提取序列數(shù)據(jù)的特征, 卷積之后采用ReLU 激活;MaxPool1D 是一維池化層,池化核心為2X2,步長為2,padding 為'SAME',可以將整個(gè)序列的時(shí)間步降低一倍;GAPool1D 為全局平均一維池化層,該層的作用是取所有時(shí)間步上的特征的平均值,消除掉時(shí)間步;Dropout 為隨機(jī)失活層,在一定程度上可以避免過擬合;Dense 為全連接層,主要用于分類,第一層前連接的神經(jīng)元個(gè)數(shù)分別為256,最后一層為2,最后通過Softmax 函數(shù)輸出兩類診斷結(jié)果的概率;訓(xùn)練時(shí),采用的損失函數(shù)為多分類交叉熵,其公式為:
圖2 本文網(wǎng)絡(luò)結(jié)構(gòu)
其中, p( x) 為經(jīng)x過one-hot 編碼的樣本標(biāo)簽; q ( x)為網(wǎng)絡(luò)的輸出概率分布;
優(yōu)化算法采用adam 算法;訓(xùn)練時(shí),每個(gè)批量的樣本為128 個(gè),總訓(xùn)練了21 個(gè)回合,最終的準(zhǔn)確率為0.89。
實(shí)驗(yàn)證明,基于一維卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算機(jī)輔助診斷算法可以有效的對心電病例進(jìn)行輔助診斷,甚至已經(jīng)超過了人類專家;通過遷移學(xué)習(xí)的策略,可以方便的進(jìn)行病種的擴(kuò)展,實(shí)現(xiàn)一個(gè)模型診斷多種疾病,極大提高了該算法的普適性和魯棒性。