張 選,胡曉娟
1(中國科學(xué)技術(shù)大學(xué) 納米技術(shù)與納米仿生學(xué)院,合肥 230026)
2(上海中醫(yī)藥大學(xué) 上海中醫(yī)健康服務(wù)協(xié)同創(chuàng)新中心,上海 201203)
由于計(jì)算機(jī)硬件性能的提高,深度學(xué)習(xí)及其應(yīng)用成為目前研究的熱點(diǎn),包括圖像、語音等的識(shí)別.脈診是傳統(tǒng)中醫(yī)的重要組成部分,客觀化研究尚未成熟,不同經(jīng)驗(yàn)積累的醫(yī)生對(duì)于疑難病癥有不同的診斷結(jié)果.深度學(xué)習(xí)用于處理醫(yī)學(xué)圖像、脈搏波、心電圖等,有助于提升識(shí)別準(zhǔn)確率,將推動(dòng)智慧醫(yī)療的發(fā)展.
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)包括卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)、遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,RNN)和強(qiáng)化學(xué)習(xí)(Reinforcement Learning,RL).CNN在圖像識(shí)別領(lǐng)域應(yīng)用廣泛,LeCun[1]等提出LeNet,包括卷積層、池化層、Sigmoid激活函數(shù),多層感知機(jī)是最后的分類器,奠定了CNN的基本組成.Krizhevsky[2]等提出AlexNet,使用線性修正單元(Rectified Linear Unit,ReLU)作為激活函數(shù),解決了網(wǎng)絡(luò)加深時(shí)的梯度彌散問題;使用Dropout隨機(jī)忽略部分神經(jīng)元,避免過擬合;使用重疊的最大池化和CUDA加速.Simonyan等[3]研究了CNN深度與性能的關(guān)系,提出VGGNet,反復(fù)堆疊3×3的卷積核和2×2的最大化池化層,構(gòu)建了16~19層深的CNN,初步證明網(wǎng)絡(luò)越深,效果越好;Szegedy等[4]提出Google Inception Net (GoogLeNet),是一種模塊化的高效稀疏結(jié)構(gòu),參數(shù)量和運(yùn)算量比之前的神經(jīng)網(wǎng)絡(luò)少,跨通道提取特征,有利于提取多樣性特征.He等[5]提出殘差神經(jīng)網(wǎng)絡(luò)(Residual Neural Networks,ResNet),網(wǎng)絡(luò)深度可達(dá)上百層,解決了網(wǎng)絡(luò)加深時(shí)性能先升后降的退化問題,使某些重要特征可直接傳輸?shù)饺我荒K或?qū)?這些經(jīng)典網(wǎng)絡(luò)是CNN發(fā)展的里程碑.
Liu等[6]提出基于GoogLeNet的時(shí)序自適應(yīng)神經(jīng)網(wǎng)絡(luò),由于Inception模塊中多尺度的卷積核,可用于識(shí)別視頻幀之間的相關(guān)性動(dòng)作,運(yùn)行時(shí)間較少且魯棒性強(qiáng),表明Inception模塊能較好地處理時(shí)序型數(shù)據(jù);Khosravi[7]等提出改進(jìn)的Google Inception-V3,用于識(shí)別肺癌、膀胱癌、乳腺癌的病理圖,準(zhǔn)確率分別達(dá)到100%、92%、95%,對(duì)腫瘤異質(zhì)性病理圖的分類性能很好,能有效識(shí)別多種特征;Vesal等[8]在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練Google Inception V3 模型,識(shí)別特定領(lǐng)域的特征,然后,利用遷移學(xué)習(xí),用預(yù)訓(xùn)練好的Google Inception V3模型識(shí)別乳腺癌病理圖,測試準(zhǔn)確率達(dá)到97.08%,結(jié)合醫(yī)學(xué)專家的分析,嘗試應(yīng)用于臨床.GoogLeNet主要有以下優(yōu)勢:(1)由不同的卷積層和一個(gè)池化層組成的Inception模塊,構(gòu)建了一種高效的稀疏結(jié)構(gòu),有利于提取豐富的紋理特征;(2)常用多種大小的卷積核,比如 1×1、3×3、5×5、7×7 等,提取不同層次的高階特征,增加特征提取的多樣性;(3)模塊中有不同的分支網(wǎng)絡(luò),增加了網(wǎng)絡(luò)寬度,提高了網(wǎng)絡(luò)的魯棒性和表達(dá)能力,使其對(duì)不同分辨率的圖像有更好的泛化能力.
隨著網(wǎng)絡(luò)層數(shù)增加,CNN的性能逐漸提升,當(dāng)達(dá)到一定層數(shù)時(shí),梯度發(fā)散問題會(huì)導(dǎo)致性能下降.ResNet采用殘差模塊(Residual Modules)或跳躍連接(Skip Connection)解決了此問題(如圖1),使網(wǎng)絡(luò)層數(shù)更多,簡化了網(wǎng)絡(luò)的學(xué)習(xí)目標(biāo),不同單元及層的信號(hào)可直接正向和反向傳輸給任一層,加速網(wǎng)絡(luò)訓(xùn)練和參數(shù)調(diào)優(yōu).Zhang等[9]提出將中心損失函數(shù)用于ResNet,在手寫體漢字集ICDAR-2013上取得97.03%的準(zhǔn)確率;Lu等[10]提出深度耦合ResNet,由一個(gè)主干網(wǎng)絡(luò)和兩個(gè)分支網(wǎng)絡(luò)組成,主干網(wǎng)絡(luò)用于識(shí)別不同分別率的人臉照片,兩個(gè)分支網(wǎng)絡(luò)分別訓(xùn)練高分辨率圖片和目標(biāo)圖片,將其轉(zhuǎn)化成特定分辨率的耦合圖片.
圖1 殘差模塊
式中,xl是 輸入,w是權(quán)重,b是 偏置,yl是兩個(gè)分支的和,R是ReLU函數(shù),F(xl)表示卷積運(yùn)算,h(xl)是對(duì)輸入的某種簡單變換,xl+1是殘差模塊的最終輸出.ReLU是一種激活函數(shù),如式(4),有利于梯度傳播和防止梯度彌散,以防梯度在多層卷積之后而大幅衰減[2].
當(dāng)x>0時(shí),R(x)=x,其導(dǎo)數(shù)為1;當(dāng)x≤0時(shí),R(x)=0,其導(dǎo)數(shù)為0.前向計(jì)算時(shí),只需輸入值x和閾值0,即可得到輸出值;反向計(jì)算時(shí),梯度為1或0,即梯度衰減較小或不變.與Sigmoid和Tanh等函數(shù)相比,計(jì)算簡單,梯度衰減較小,有利于加深網(wǎng)絡(luò).
研究者也探索了整合兩種網(wǎng)絡(luò)優(yōu)勢,以構(gòu)造融合網(wǎng)絡(luò).Habibzadeh等[11]提出預(yù)訓(xùn)練的Inception-ResNet,用于四種主要白細(xì)胞的分類,Inception-V1-ResNet獲得99.84%的準(zhǔn)確率;Szegedy等[12]在Inception結(jié)構(gòu)中加入殘差模塊,發(fā)現(xiàn)殘差模塊可以加速Inception網(wǎng)絡(luò)訓(xùn)練,但不能明顯提高準(zhǔn)確率;Zhuang等[13]將Google Inception V3和不同的長短期記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)融合,構(gòu)造 ConvDLSTM,在人群圖片集上統(tǒng)一訓(xùn)練模型,將時(shí)間和空間信息統(tǒng)一在一個(gè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,有效檢測人群信息.網(wǎng)絡(luò)結(jié)構(gòu)的融合,不是簡單的組合,而需要改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)設(shè)置等.
基于DNN的脈搏波識(shí)別,研究較少.Hu等[14]用基本的CNN(9L)識(shí)別健康和亞健康的脈搏波信號(hào),準(zhǔn)確率達(dá)到72.31%;Zhang等[15]用9層的CNN識(shí)別弱脈、弦脈、深脈等12種脈搏,平均準(zhǔn)確率達(dá)到93.49%;Zhou等[16]組合DNN和規(guī)則推理,在心電圖數(shù)據(jù)集MIT-BIH-AR上檢測室性早搏,準(zhǔn)確率、特異性和靈敏度分別達(dá)到99.41%、99.54%和97.59%.Jin等[17]搭建由醫(yī)生監(jiān)控的云計(jì)算平臺(tái),該平臺(tái)嵌入深度學(xué)習(xí)、規(guī)則推理和集成學(xué)習(xí)等,輔助診斷心臟疾病,輸入病人的12導(dǎo)聯(lián)ECG數(shù)據(jù)并給出診斷報(bào)告.有關(guān)脈搏波識(shí)別存在以下問題:(1)基于深度學(xué)習(xí)的脈搏波識(shí)別研究較少,只使用一些基本的神經(jīng)網(wǎng)絡(luò),而性能更好的ResNet、深度融合神經(jīng)網(wǎng)絡(luò)、生成對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)等并未使用;(2)DNN用于脈搏波識(shí)別,需要調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)、卷積核大小和數(shù)量、學(xué)習(xí)策略、損失函數(shù)等,將影響識(shí)別的準(zhǔn)確率;(3)目前已有的脈搏波識(shí)別算法,其準(zhǔn)確率較低,難以達(dá)到臨床應(yīng)用的要求;(4)脈搏波數(shù)據(jù)集缺乏標(biāo)準(zhǔn),研究者使用不同的數(shù)據(jù)集,難以評(píng)測算法的性能.
本文提出由改進(jìn)的Inception 模塊、殘差模塊和池化模塊組成的深度融合神經(jīng)網(wǎng)絡(luò)Modified Inception-ResNet (MIRNet),包括 MIRNet1和 MIRNet2,其中MIRNet2的準(zhǔn)確率達(dá)到87.84%,性能最優(yōu),分析了MIRNet2的結(jié)構(gòu)和原理.本文首先介紹數(shù)據(jù)集預(yù)處理的方法;其次,分析Inception模塊和殘差模塊融合的原因,構(gòu)建IRNet和MIRNet融合網(wǎng)絡(luò),探究融合網(wǎng)絡(luò)的原理;此外,介紹參數(shù)量和運(yùn)算量、準(zhǔn)確率等網(wǎng)絡(luò)性能評(píng)測指標(biāo).隨后,介紹實(shí)驗(yàn)和分析結(jié)果,最后是結(jié)論與展望.
主要闡述數(shù)據(jù)集預(yù)處理、IRNet及MIRNet的結(jié)構(gòu)、參數(shù)量、運(yùn)算量計(jì)算及準(zhǔn)確率等評(píng)價(jià)指標(biāo).實(shí)驗(yàn)流程,如圖2所示,主要分為數(shù)據(jù)集預(yù)處理、算法識(shí)別和結(jié)果分析.
圖2 脈搏波識(shí)別流程
2.1.1 數(shù)據(jù)集獲取
數(shù)據(jù)來源為上海中醫(yī)藥大學(xué)研發(fā)的DDMX-100脈象儀采集的1125個(gè)健康對(duì)象和1158個(gè)亞健康對(duì)象的脈搏波,采樣頻率為200 Hz,持續(xù)40 s,共計(jì)8000個(gè)采樣點(diǎn).根據(jù)世界衛(wèi)生組織公布的區(qū)分健康和亞健康的20項(xiàng)指標(biāo),以調(diào)查問卷形式詢問被調(diào)查者,得分大于80分者為健康對(duì)象,反之為亞健康對(duì)象[14].
2.1.2 主波提取
基于香農(nóng)能量和希爾伯特變換的脈搏波主波提取算法過程:脈搏波原始信號(hào)首先經(jīng)過帶通濾波去除高頻噪聲(工頻噪聲)和低頻噪聲(基線漂移);然后,進(jìn)行幅值歸一化;歸一化后的脈搏波再進(jìn)行香農(nóng)能量變換,經(jīng)過低通平滑濾波得到香農(nóng)能量包絡(luò)線;包絡(luò)線在希爾伯特變換之后減去均值,濾除信號(hào)因突變產(chǎn)生的干擾,在此基礎(chǔ)上,找出香農(nóng)能量包絡(luò)線的峰值點(diǎn).對(duì)比和分析大量的香農(nóng)能量包絡(luò)線峰值點(diǎn)和只經(jīng)過帶通濾波的脈搏波峰值點(diǎn),發(fā)現(xiàn)二者的出現(xiàn)時(shí)間相差0~0.25秒.因此,香農(nóng)能量包絡(luò)線的峰值點(diǎn)的位置前后約0.25秒的范圍對(duì)應(yīng)著脈搏波主波位置所在的時(shí)間范圍.在此范圍內(nèi),可以找到脈搏波真正的主波位置[14].
2.1.3 劃分周期
為了保證每個(gè)分段至少包含一個(gè)完整的脈搏波周期,其周期是1.25秒,因此選擇250個(gè)點(diǎn)作為一個(gè)周期,以主波位置為基準(zhǔn),向前取99個(gè)點(diǎn),向后取150個(gè)點(diǎn),即可作為一個(gè)周期,如圖3所示[14].每條數(shù)據(jù)增加一列標(biāo)簽,0和1分別代表健康和亞健康.共計(jì)118 800條 1×250周期,加標(biāo)簽 0或 1后,變?yōu)?1×251,隨機(jī)選擇60%的數(shù)據(jù)為訓(xùn)練集,即71 280條,40%為測試集,也是評(píng)價(jià)集,即47 520條.
圖3 脈搏波信號(hào)
由圖3可知,(1)脈搏波信號(hào)是典型的時(shí)間序列數(shù)據(jù),前后文相關(guān)性很大.(2)升支、主波、重波前波、降中峽等是脈搏波具有生理意義的重要特征,是脈診的主要依據(jù),比如升支反映了心室收縮、快速射血、主動(dòng)脈血量增加,此時(shí)動(dòng)脈血壓升高,出現(xiàn)陡峭而平滑的脈搏波曲線,繼而出現(xiàn)主波,主波峰值點(diǎn)對(duì)應(yīng)收縮壓,即收縮期的最高血壓[14].但它們?cè)诟髯灾芷趦?nèi)的波幅、出現(xiàn)時(shí)間(或出現(xiàn)位置點(diǎn))等均不同.(3)存在噪聲,比如在每個(gè)周期將結(jié)束時(shí),有輕微波動(dòng).因此,需要針對(duì)脈搏波數(shù)據(jù)的自身特征,構(gòu)建合適的網(wǎng)絡(luò)結(jié)構(gòu).
2.1.4 制作hdf5數(shù)據(jù)集
Caffe作為深度學(xué)習(xí)的平臺(tái),處理脈搏波數(shù)據(jù)時(shí),需將數(shù)據(jù)集轉(zhuǎn)化成Caffe可讀的hdf5格式的數(shù)據(jù)集.
2.2.1 網(wǎng)絡(luò)融合的原因
GoogLeNet中的Inception模塊及其變種存在缺點(diǎn):(1)基本的Inception模塊,對(duì)網(wǎng)絡(luò)性能提升的作用有限,其變種則過于復(fù)雜,參數(shù)量和運(yùn)算量成為負(fù)擔(dān),過擬合現(xiàn)象頻發(fā);(2)網(wǎng)絡(luò)寬度較寬,深度不足,寬度與深度失衡,參數(shù)運(yùn)算效率低.ResNet中的殘差模塊亦有不足:(1)雖然加深了網(wǎng)絡(luò),提升了網(wǎng)絡(luò)的分類準(zhǔn)確率,但參數(shù)量和運(yùn)算量卻快速增長,比Inception模塊及其變種增長快;(2)網(wǎng)絡(luò)結(jié)構(gòu)加深,但寬度較窄,深度與寬度失衡,特征提取的多樣性比Inception模塊差;(3)如果殘差模塊過于復(fù)雜,則跳躍連接帶來的訓(xùn)練加速作用弱于參數(shù)量和運(yùn)算量急劇增加帶來的訓(xùn)練減速作用,易導(dǎo)致訓(xùn)練中斷或梯度爆炸.在一定程度上,Inception模塊和殘差模塊可以優(yōu)勢互補(bǔ).
此外,根據(jù)脈搏波的特點(diǎn):(1)殘差模塊中的跳躍連接,可認(rèn)為是沒有門機(jī)制的LSTM,門機(jī)制允許一部分?jǐn)?shù)據(jù)經(jīng)過簡單特征提取后直接進(jìn)入下一層;然而,LSTM結(jié)構(gòu)不能加深,單個(gè)模塊的性能優(yōu)于簡單的CNN,但其性能低于適當(dāng)加深的ResNet和GoogLeNet.跳躍連接基本適合于脈搏波的第一個(gè)特點(diǎn).(2)Inception模塊各分支的特征提取,能獲得多樣的特征,此基本適合于脈搏波的第二個(gè)特征.
鑒于以上初步分析,提出由Inception模塊和殘差模塊組成的融合網(wǎng)絡(luò)Inception-ResNet (IRNet).
另外,研究了 CNN9、CNN16、VGGNet、ResNet及GoogLeNet等網(wǎng)絡(luò)用于脈搏波識(shí)別.CNN9和CNN16,包含卷積層、池化層、全連接層及Dropout層,共計(jì)9層和16層,每個(gè)卷積層都有BatchNorm、Scale、ReLU等.VGGNet中池化層數(shù)量少于CNN16,但總層數(shù)相近.ResNet1 和ResNet2使用不同的殘差模塊,卷積核大小和數(shù)量也不同,ResNet1由殘差模塊res2(a,b)、res3(a,b)、res4(a,b)和 res5(a,b)組成;ResNet2 由殘差模塊res2(a,b,c)、res3(a,b,c,d)和res4(a,b,c,d,e)組成.GoogLeNet1、GoogLeNet2和GoogLeNet3分別由1、2、3個(gè)Inception模塊組成.
2.2.2 IRNet結(jié)構(gòu)
IRNet是由基本的Inception模塊和殘差模塊構(gòu)成,包括三個(gè)網(wǎng)絡(luò),依次命名為IRNet1、IRNet2和IRNet3,主要思路是構(gòu)建Inception模塊和殘差模塊融合的神經(jīng)網(wǎng)絡(luò),經(jīng)過實(shí)驗(yàn),調(diào)整各模塊的排列順序、連接方式和模塊中的組成單元,比如模塊中的卷積層數(shù)量、池化層數(shù)量、卷積核大小、通道數(shù)量等.三個(gè)融合網(wǎng)絡(luò)的共同點(diǎn)是:(1)網(wǎng)絡(luò)中,很多卷積層都包括BatchNorm(BN)、ReLU(R)和Scale(S).BN是一種有效的正則化方法,加速大規(guī)模神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,一般和Scale同時(shí)使用[18];(2)網(wǎng)絡(luò)的起始部分,都用卷積核較大的卷積層,降低參數(shù)量和運(yùn)算量,網(wǎng)絡(luò)中的全連接層,都用到Dropout層,避免過擬合.
在實(shí)驗(yàn)中,當(dāng)兩個(gè)Inception模塊直接相連時(shí),網(wǎng)絡(luò)的分類性能會(huì)下降;當(dāng)三個(gè)Inception模塊直接相連時(shí),訓(xùn)練時(shí)會(huì)發(fā)生梯度爆炸.如果殘差模塊過于復(fù)雜,也會(huì)發(fā)生梯度爆炸.IRNet1由一個(gè)Inception模塊(first Inception Module,IM1)和一個(gè)殘差模塊[res3(a,b,c,d)]構(gòu)成;IRNet2由兩個(gè)Inception模塊(IM1和Second Inception Module,IM2)和一個(gè)殘差模塊[res3(a,b,c,d)]構(gòu)成;IRNet3由兩個(gè)Inception模塊(IM1和IM2)和兩個(gè)殘差模塊[res3(a,b,c,d)和res4(a,b,c)]構(gòu)成.當(dāng)?shù)诙€(gè)殘差模塊為res4(a,b,c,d,e)時(shí),IRNet3訓(xùn)練發(fā)生中斷;當(dāng)繼續(xù)增加Inception模塊和殘差模塊數(shù)量,網(wǎng)絡(luò)的分類性能會(huì)反而下降.殘差模塊res3(a,b,c,d)如圖4所示,IM2_output、res3a等表示層或模塊的名稱,(1×4+2)表示卷積核是1×4和步長是2,256、512等表示輸出通道數(shù),1和0表示填充零和不填充零,R表示ReLU層,Eltwise/SUM表示特征拼接方式.IM1如圖5所示,pool1、IM1_output、IM1_conv3_1等表示該層名稱,8、16、32等表示通道數(shù),Concat表示另一種特征拼接方式.Eltwise/SUM是在分辨率層面拼接,輸入維度(batch_size,channel,w,h)必須相同,增加算法耗時(shí);Concat在通道數(shù)(channel)層面拼接,計(jì)算相對(duì)簡單.
圖4 res3(a,b,c,d)的結(jié)構(gòu)圖.res4(a,b,c)和res3的結(jié)構(gòu)相似,但 res4 不含在虛線框中的”res3d”,即,沒有 res4d
圖5 IM1,和IM2結(jié)構(gòu)相似,區(qū)別在于卷積核大小和個(gè)數(shù)不同
在IRNet中,IRNet3有更好的分類性能,網(wǎng)絡(luò)結(jié)構(gòu)如圖6,BN和S表示BatchNorm層和Scale層,fc7和fc8表示全連接層(fully-connected layer),drop表示Dropout層,隨機(jī)丟棄50%的連接,IP表示全連接層的通道數(shù),loss表示SoftmaxWithLoss 層.
圖6 IRNet3的結(jié)構(gòu)圖
2.2.3 MIRNet的結(jié)構(gòu)和原理
2.2.3.1 MIRNet結(jié)構(gòu)
在實(shí)驗(yàn)中,IRNet3的識(shí)別準(zhǔn)確率與ResNet2相近,但是ResNet2的參數(shù)量和運(yùn)算量更大,其殘差模塊res2(a,b,c)、res3(a,b,c,d)和res4(a,b,c,d,e)是參數(shù)量和運(yùn)算量急劇增長的主要因素.在IRNet3基礎(chǔ)上,提出由改進(jìn)的Inception模塊、殘差模塊和池化模塊組成的融合網(wǎng)絡(luò)MIRNet,主要思路是:(1)根據(jù)脈搏波第一特點(diǎn),殘差模塊的跳躍連接不可缺少,但是要降低模塊復(fù)雜度,特征拼接方式由Eltwise/SUM改為Concat,弱化其帶來的參數(shù)量和運(yùn)算量增加等負(fù)作用.(2)根據(jù)脈搏波的第二特點(diǎn),Inception模塊應(yīng)更豐富,增加模塊中的分支,使用較小的卷積核,但是要保持高效的稀疏結(jié)構(gòu).特征拼接方式為Concat,增加更多的特征表示,保持相對(duì)較小的運(yùn)算量.這些改進(jìn)有助于提取不同階的抽象特征,增強(qiáng)模塊的表達(dá)能力.(3)根據(jù)脈搏波第三特點(diǎn),在改進(jìn)模塊的分支網(wǎng)絡(luò)中,最后一層是ReLU,可以認(rèn)為是加入特征提取權(quán)重,隨著網(wǎng)絡(luò)的訓(xùn)練而自動(dòng)調(diào)節(jié)各分支網(wǎng)絡(luò)提取的特征;(4)取消單獨(dú)使用的池化層,改為池化模塊,源于(2)的分析,但和改進(jìn)Inception模塊不同的是,其減小了特征面,起到池化層的作用.
MIRNet主要有兩個(gè)改進(jìn)網(wǎng)絡(luò),MIRNet1和MIRNet2,MIRNet1主要作用是研究改進(jìn)模塊組成融合網(wǎng)絡(luò)的可行性,MIRNet2是主要改進(jìn)的融合網(wǎng)絡(luò).改進(jìn)模塊:(1)利用殘差模塊的原理,構(gòu)造pool3/conv3,使池化層pool3和卷積層conv3并列為網(wǎng)絡(luò)的兩個(gè)分支;構(gòu)造conv4_1~conv4_5等模塊,精簡原有的殘差模塊,拼接方式改為Concat,主要是減少參數(shù)量和運(yùn)算量.(2)在改進(jìn)的Inception模塊(Modified Inception Modules,MIM1和MIM2)中,使用 1×1、1×2、1×3 等較小卷積核,有利于提取更精細(xì)的特征.1×1卷積核改變層間連接數(shù)量,對(duì)輸出通道升維或降維,增加特征的非線性變換,提高網(wǎng)絡(luò)的泛化能力,有側(cè)重地保留不同層次的高階特征[19];(3)池化模塊(Reduction Modules,RM),改變以往使用單一池化層的方式,包含三個(gè)分支,一支是池化層,另外兩支是卷積層,使特征面分別池化和卷積,減小特征面,保證提取特征的多樣性.MIRNet1由MIM1和RM1組成,MIRNet2在MIRNet1可行的基礎(chǔ)上增加MIM2和RM2.MIM2和RM2分別如圖7和圖8所示,RM1_concat、RM2_pool1、MIM2_conv3_3等表示該層的名稱,連接方式為Concat.圖9是性能更優(yōu)的MIRNet2的結(jié)構(gòu).
2.2.3.2 MIRNet的原理
根據(jù)MIRNet的構(gòu)造思路和網(wǎng)絡(luò)結(jié)構(gòu),模塊是網(wǎng)絡(luò)的主要組成,均可抽象成由不同的特征提取過程組成的特征提取模塊.
圖7 MIM2,與MIM1相比,有兩個(gè)分MIM2_conv3_2和MIM2_conv3_3,而MIM1只有一個(gè)分支MIM1_conv3_2,二者的卷積核大小和數(shù)量不同.
由式 (1)、(2)、(3)可得,在特征拼接時(shí),去掉ReLU函數(shù),即
h(xl)替換為卷積、ReLU等操作函數(shù),即增加分支,可得
L表示某模塊,xL表示某模塊的輸出,xl表示某模塊的輸入,R11和R12表示第1個(gè)分支中的兩個(gè)卷積和ReLU操作,同理R21和R22表示第2個(gè)分支中的兩個(gè)卷積和ReLU操作,w和b分別表示權(quán)重和偏置.
假設(shè),某模塊有n個(gè)分支,每個(gè)分支中有m個(gè)卷積和ReLU函數(shù),則
反向傳播時(shí),損失函數(shù)S的導(dǎo)數(shù),由鏈?zhǔn)角髮?dǎo)原則得
由式(8)得:
MIRNet2模塊的分支數(shù)量多為2、3、5個(gè),比如pool3/conv3、conv4_1~conv4_5、RM2和 MIM2等,分支中的單元含1、2、3個(gè)卷積和ReLU等操作,模塊深度適當(dāng).訓(xùn)練過程中,ReLU自動(dòng)調(diào)節(jié)梯度衰減,當(dāng)遇到脈搏波次要特征和噪聲時(shí),導(dǎo)數(shù)為0,梯度不變,損失函數(shù)未減小,繼續(xù)尋找使損失函數(shù)減小的梯度下降路徑;當(dāng)遇到重要特征,導(dǎo)數(shù)為1,梯度減小,損失函數(shù)減小,準(zhǔn)確率增大,學(xué)習(xí)到重要特征.弱化噪聲和次要特征,使分支網(wǎng)絡(luò)提取到重要特征.各改進(jìn)模塊對(duì)特征進(jìn)行不同程度地變換,提取不同層次的高階特征和前后文的相關(guān)性特征,保持較低的參數(shù)量和運(yùn)算量.但是,模塊中的分支也不應(yīng)過多,網(wǎng)絡(luò)寬度和深度應(yīng)平衡.
網(wǎng)絡(luò)中,池化層、BN、ReLU、Concat等參數(shù)量和運(yùn)算量很小,相對(duì)于卷積層,可忽略不計(jì).某卷積層的參數(shù)量P:
某卷積層的運(yùn)算量OP:
嘉慶憂心不已。為了扭轉(zhuǎn)這種局面,他煞費(fèi)苦心,花了好幾天時(shí)間,寫成了一篇鴻文《宗室訓(xùn)》,發(fā)給每個(gè)宗室。和以前一樣,皇帝的這篇教育文章不過是重復(fù)了一系列道德教條。這一教育運(yùn)動(dòng)的開展經(jīng)歷了很長時(shí)間,宗室風(fēng)氣竟無一點(diǎn)好轉(zhuǎn)。嘉慶皇帝很奇怪,有一天特意召見散秩大臣、宗室中的奕顥、成秀和敬敘三人,問他們學(xué)習(xí)《宗室訓(xùn)》的心得。不想這三人瞠目結(jié)舌,居然不知道有學(xué)習(xí)《宗室訓(xùn)》一事,更沒讀過一個(gè)字!嘉慶大吃一驚,感覺“實(shí)出意想之外”。然而除了痛罵宗人府官員“喪盡天良”之外,他再也不知道該做什么了。
式中,C是該卷積層的通道數(shù),C1、C2是上下層的通道數(shù);K1、K2是卷積核大小,1表示一個(gè)偏置;W和H是特征面的寬和高.
由式(10)和式(11)可知,參數(shù)量取決于通道數(shù)量和卷積核大小;運(yùn)算量取決于上下層的通道數(shù)量、卷積核大小和特征面大小.
CNN的分類性能通過準(zhǔn)確率(Accuracy,ACC)、特異性(Specificity,SP)、靈敏度(Sensitivity,SE)和約登指數(shù)(Youden’s index,γ)等評(píng)價(jià).ACC表示算法識(shí)別的準(zhǔn)確率,是算法分類性能的綜合指標(biāo);SP表示算法檢測出陰性樣本(健康)的能力;SE表示算法檢測出陽性樣本(亞健康)的能力;γ表示算法避免失敗的能力,其值越大表明算法避免失敗的能力越強(qiáng).定義和計(jì)算如下:
真陽性(True Positive,TP):算法檢測正確的陽性樣本數(shù)量;
真陰性(True Negative,TN):算法檢測正確的陰性樣本數(shù)量;
假陽性(False Positive,FP):算法檢測錯(cuò)誤的陽性樣本數(shù)量;
假陰性(False Negative,FN):算法檢測錯(cuò)誤的陰性樣本數(shù)量.
本節(jié)介紹了實(shí)驗(yàn)環(huán)境、網(wǎng)絡(luò)參數(shù)和訓(xùn)練參數(shù),重點(diǎn)闡述實(shí)驗(yàn)結(jié)果與分析等.
3.1.1 實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)環(huán)境如表1所示.
表1 實(shí)驗(yàn)環(huán)境
3.1.2 參數(shù)設(shè)置
網(wǎng)絡(luò)參數(shù):(1)使用較小的卷積核,kernel_h為1,kernel_w為1、3、5等,步長stride_h為1,stride_w為1或2.隨著卷積層數(shù)的增加,通道數(shù)和層間連接數(shù)也會(huì)增加.全連接層,一般不應(yīng)超過1024個(gè)連接節(jié)點(diǎn),否則會(huì)梯度爆炸.(2)網(wǎng)絡(luò)中的卷積層:convolution_param 的 weight和 bias初始化為“msra”和“false”.BatchNorm層中,batch_norm_param {use_global_stats:false};Scale層中,scale_param{bias_term:false},初始化為false,方可在訓(xùn)練中不斷優(yōu)化batch_norm_param和scale_param的值,初始化為True,則不會(huì)優(yōu)化.全連接層inner_product_param中weight_filler和bias_filler分別初始化為“Xavier”和“constant”.
訓(xùn)練參數(shù):batch_size設(shè)為10,test_iter設(shè)為500,test_interval設(shè)為400,稱為一代(epoch),Max_iter設(shè)為35 000,完成對(duì)測試集所有數(shù)據(jù)8~9次的測試,共87 代.經(jīng)實(shí)驗(yàn)分析,學(xué)習(xí)策略 lr_policy 設(shè)為“inv”,gamma是10-3,power是0.75,base_lr是10-5,momentum是0.9,weight_decay是5×10-6,這組訓(xùn)練參數(shù)更適于改進(jìn)后的網(wǎng)絡(luò).
式(16)中,lr是學(xué)習(xí)率,base_lr是初始學(xué)習(xí)率,gamma是lr的衰減系數(shù),iter是迭代次數(shù),power是指數(shù).代入?yún)?shù),簡化可得:
學(xué)習(xí)率與迭代次數(shù)的圖像如圖10.
圖10 學(xué)習(xí)率與迭代次數(shù)曲線
由圖10可知,lr隨iter減小,斜率先大后小,lr先快速減小,隨后緩慢減小.Loss隨著學(xué)習(xí)率的減少而減小,先快速找到極小值點(diǎn),再緩慢減小學(xué)習(xí)率找到最小值點(diǎn),即找到準(zhǔn)確率最優(yōu)點(diǎn).經(jīng)過實(shí)驗(yàn),base_lr設(shè)為10-5,準(zhǔn)確率隨著迭代次數(shù)增大而增大,大于10-5時(shí),準(zhǔn)確率較低且難以找到最優(yōu)解,此設(shè)置將更節(jié)省計(jì)算資源.
經(jīng)過實(shí)驗(yàn),各網(wǎng)絡(luò)測試結(jié)果如表2所示,選取相似網(wǎng)絡(luò)中性能較好的CNN9、CNN16、ResNet2、GoogLeNet2、IRNet3、MIRNet2等,繪制其訓(xùn)練過程中的測試準(zhǔn)確率曲線,如圖11、圖12和圖13所示.
CNN9:CNN(9L)是Hu提出的網(wǎng)絡(luò)模型,用于脈搏波識(shí)別,但是其只使用了基本的卷積層、池化層和全連接層.CNN9相比于CNN(9L),每個(gè)卷積層中,包含BatchNorm、Scale和ReLU,并在全連接層中含有Dropout層,準(zhǔn)確率提升了10.8%.其中,BatchNorm和Scale的主要作用是加速網(wǎng)絡(luò)訓(xùn)練,Dropout 的主要作用是避免過擬合,ReLU有助于提升準(zhǔn)確率.在訓(xùn)練過程中,ReLU通過調(diào)節(jié)梯度衰減,突出脈搏波重要特征、次要特征和噪聲之間的差別,增強(qiáng)重要特征在分類中的影響,弱化次要特征和噪聲,提高了脈搏波識(shí)別的準(zhǔn)確率.在此過程中,未損害重要特征的完整性,只是增加對(duì)重要特征的高階變換,使其在高維空間線性可分.
表2 各網(wǎng)絡(luò)的分類性能
圖11 CNN9、CNN16、IRNet3和MIRNet2測試準(zhǔn)確率曲線
圖12 ResNet2、GoogLeNet2和IRNet3測試準(zhǔn)確率曲線
CNN16和VGGNet:相比于CNN9,CNN16結(jié)構(gòu)更深,準(zhǔn)確率提高了1.83%,而VGGNet僅提升了0.2%.CNN16比VGGNet的準(zhǔn)確率高出1.63%,γ高出7.9%,避免失敗的能力提高.圖11所示,訓(xùn)練過程中,CNN9比CNN16更快達(dá)到穩(wěn)定,加深網(wǎng)絡(luò)使訓(xùn)練速度減小,但對(duì)網(wǎng)絡(luò)分類性能的提升作用明顯.CNN16有更多的通道數(shù)、更小的卷積核,網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)設(shè)置也優(yōu)于VGGNet.
圖13 ResNet2、GoogLeNet2和MIRNet2測試準(zhǔn)確率曲線
ResNet:相比于CNN16,ResNet1由4個(gè)簡單的殘差模塊組成,網(wǎng)絡(luò)層數(shù)更深,準(zhǔn)確率高出0.59%,γ高出0.84%.相比于ResNet1,ResNet2由3個(gè)復(fù)雜的殘差模塊組成,跳躍連接的作用更明顯,加深網(wǎng)絡(luò),并未使網(wǎng)絡(luò)臃腫,準(zhǔn)確率高出1.44%,γ高出3.81%,算法避免失敗的能力更高,對(duì)陰性樣本和陽性樣本的測試性能更好.但是,在實(shí)驗(yàn)中,繼續(xù)增加殘差模塊,使網(wǎng)絡(luò)更深,則導(dǎo)致網(wǎng)絡(luò)訓(xùn)練中斷.
GoogLeNet:3個(gè)改進(jìn)網(wǎng)絡(luò),分別是GoogLeNet1、GoogLeNet2和GoogLeNet3,依次使用了1、2、3個(gè)Inception模塊.表2中,GoogLeNet1和GoogLeNet3的準(zhǔn)確率都低于CNN16,僅GoogLeNet2的準(zhǔn)確率高于CNN16,對(duì)比圖11和圖12,GoogLeNet2準(zhǔn)確率達(dá)到穩(wěn)定的時(shí)間快于CNN16,表明在網(wǎng)絡(luò)深度接近時(shí),加寬能改善網(wǎng)絡(luò)性能.由表2和圖12可知,ResNet1和ResNet2的準(zhǔn)確率都高于GoogLeNet2,尤其是ResNet2比GoogLeNet2高出1.52%,但其準(zhǔn)確率達(dá)到穩(wěn)定狀態(tài)的速度慢于GoogLeNet2.ResNet2的網(wǎng)絡(luò)結(jié)構(gòu)更深,殘差模塊的作用更明顯,加深比加寬對(duì)網(wǎng)絡(luò)性能的提升作用更明顯.當(dāng)兩個(gè)以上的Inception模塊直接相連時(shí),對(duì)脈搏波的分類準(zhǔn)確率反而下降.
IRNet:相比于ResNet1和GoogLeNet2,IRNet1和IRNet2的分類性能更優(yōu),表明網(wǎng)絡(luò)融合可以吸收各網(wǎng)絡(luò)的優(yōu)勢.IRNet之間,IRNet3最優(yōu),準(zhǔn)確率是86.98%,接近ResNet2的準(zhǔn)確率,但γ高出了0.97%,避免識(shí)別失敗的能力較好.圖12中,對(duì)比ResNet2、GoogLeNet2和IRNet3,ResNet2是三者中最深且復(fù)雜的,準(zhǔn)確率達(dá)到穩(wěn)定狀態(tài)的時(shí)間較長;GoogLeNet2的結(jié)構(gòu)相對(duì)簡單,特征提取效果在開始時(shí)優(yōu)于ResNet2,但穩(wěn)定后的準(zhǔn)確率低于ResNet2;IRNet3,較快達(dá)到穩(wěn)定的準(zhǔn)確率,得益于Inception模塊的高效稀疏結(jié)構(gòu),減少了參數(shù)量和運(yùn)算量,保證了特征提取的多樣性.如表3所示,res3(a,b,c,d)和res4(a,b,c)是參數(shù)量和運(yùn)算量增加的主要模塊.二者在穩(wěn)定狀態(tài)的準(zhǔn)確率接近,但I(xiàn)RNet3對(duì)樣本的測試準(zhǔn)確率較穩(wěn)定,提高了融合網(wǎng)絡(luò)的魯棒性.當(dāng)繼續(xù)增加Inception 模塊和殘差模塊時(shí),訓(xùn)練發(fā)生中斷.
表3 IRNet3的參數(shù)量和運(yùn)算量
MIRNet:主要有兩個(gè)改進(jìn)網(wǎng)絡(luò)MIRNet1和MIRNet2.如表3、表4、圖14和圖15所示,IRNet3前4個(gè)層或模塊的參數(shù)量和運(yùn)算量分別是2096個(gè)和13.1235 MFLOPs,MIRNet2前4個(gè)層或模塊的參數(shù)量和運(yùn)算量分別是3136個(gè)和14.9935 MFLOPs,均大于IRNet3,是因?yàn)镸IRNet2使用的卷積核比IRNet3更大,這使得MIRNet2后面的層或模塊的輸入特征面減小,為網(wǎng)絡(luò)總參數(shù)量和總運(yùn)算量降低奠定了基礎(chǔ).MIRNet2的總參數(shù)量和總運(yùn)算量分別是IRNet3的0.483倍和0.230倍,殘差模塊是IRNet3參數(shù)量和運(yùn)算量增大的主要原因.然而,這并未影響網(wǎng)絡(luò)的分類性能,如圖11所示,在訓(xùn)練起始階段,MIRNet2的準(zhǔn)確率上升快于IRNet3,歸因于改進(jìn)模塊pool3/conv3和conv4_1~conv4_5等極大地減少了參數(shù)量和運(yùn)算量;在整個(gè)訓(xùn)練過程中,MIRNet2的準(zhǔn)確率高于IRNet3,只在部分區(qū)域接近,得益于改進(jìn)的Inception模塊(MIM1和MIM2)及池化模塊(RM1和RM2).表2中,MIRNet2的準(zhǔn)確率是87.84%,分別比IRNet3和ResNet2高出0.86%和0.87%,γ分別比IRNet3和ResNet2高出1.01%和1.98%,算法避免失敗的能力有所提高,測試性能更加穩(wěn)定.綜合分析圖11和圖13,MIRNet2的準(zhǔn)確率優(yōu)于ResNet2和GoogLeNet2,表明改進(jìn)的融合網(wǎng)絡(luò)比使用單一核心模塊的網(wǎng)絡(luò)性能更優(yōu);MIRNet2的準(zhǔn)確率高于IRNet3,表明改進(jìn)模塊對(duì)提升融合網(wǎng)絡(luò)的性能很重要,網(wǎng)絡(luò)融合不能僅借鑒原有的殘差模塊和Inception模塊,需要改進(jìn)核心模塊、網(wǎng)絡(luò)結(jié)構(gòu)等,否則并不能充分發(fā)揮網(wǎng)絡(luò)融合的優(yōu)勢.改進(jìn)的Inception模塊及池化模塊,能提取不同層次的高階特征和前后文的相關(guān)性特征,保持了較少的參數(shù)量和運(yùn)算量;ReLU是改進(jìn)模塊中每個(gè)分支的最后一層,訓(xùn)練中自動(dòng)調(diào)節(jié)梯度衰減,進(jìn)而影響各分支網(wǎng)絡(luò)的特征提取,增加對(duì)特征的高階變換,而不損害重要特征的完整性,使更多在低維空間線性不可分的特征在高維空間線性可分.這些提高了融合網(wǎng)絡(luò)對(duì)脈搏波的分類性能.
表4 MIRNet2的參數(shù)量和運(yùn)算量
圖14 各模塊或?qū)拥膮?shù)量
為推動(dòng)計(jì)算機(jī)輔助脈診的臨床應(yīng)用,需要提高脈搏波識(shí)別的準(zhǔn)確率.通過主波提取、劃分周期和制作hdf5數(shù)據(jù)集,獲得Caffe可處理的hdf5格式的脈搏波數(shù)據(jù)集.研究了 CNN9、CNN16、ResNet1、ResNet2、GoogLeNet1、GoogLeNet2、GoogLeNet 3及深度融合神經(jīng)網(wǎng)絡(luò)IRNet1、IRNet2、IRNet3和MIRNet1等,根據(jù)脈搏波數(shù)據(jù)特點(diǎn)和其他網(wǎng)絡(luò)的實(shí)驗(yàn)分析,提出MIRNet2,其分類性能最優(yōu),準(zhǔn)確率和約登指數(shù)分別是87.84%和75.90%,改造的殘差模塊pool3/conv3和conv4_1~conv4_5大幅減少了參數(shù)量和運(yùn)算量,改進(jìn)的Inception模塊和池化模塊,能提取不同層次的高階特征和前后文的相關(guān)性特征,是MIRNet2性能提升的關(guān)鍵.當(dāng)網(wǎng)絡(luò)加深時(shí),跳躍連接和層間稀疏連接有利于加速網(wǎng)絡(luò)訓(xùn)練和避免梯度爆炸;當(dāng)網(wǎng)絡(luò)層數(shù)接近時(shí),適當(dāng)加寬網(wǎng)絡(luò),有利于提取更豐富的特征.但是,要防止過多的層間連接和多個(gè)復(fù)雜模塊直接相連,否則將梯度爆炸或訓(xùn)練中斷.MIRNet2的分類性能優(yōu)于現(xiàn)有的脈搏波識(shí)別方法,相比于Hu提出的CNN(9L)的準(zhǔn)確率和約登指數(shù),分別高出15.53%和31.27%,有較大提升,將MIRNet2嵌入到云計(jì)算平臺(tái)來識(shí)別健康和亞健康的脈搏波,這是一個(gè)可行的應(yīng)用場景[17].然而,關(guān)于脈搏波標(biāo)準(zhǔn)數(shù)據(jù)集構(gòu)建、GAN及其融合網(wǎng)絡(luò)用于脈搏波識(shí)別等問題尚未解決,這些是未來需要深入研究的方向.
圖15 各模塊或?qū)拥倪\(yùn)算量