常 昊,陳曉雷,張愛華,李 策,林冬梅
1.蘭州理工大學 電氣工程與信息工程學院,蘭州 730050
2.蘭州理工大學 甘肅省工業過程先進控制重點實驗室,蘭州 730050
3.蘭州理工大學 電氣與控制工程國家級實驗教學示范中心,蘭州 730050
近年來的統計數據表明,心血管疾病(Cardiovascular Disease,CVD)是危害全球公共健康的“第一殺手”,其致死率遠超腫瘤和慢性呼吸系統疾病[1]。2016年,中國成人高血壓發病率大約為25.2%并且逐年上漲,此外心血管疾病有低齡化的趨勢。
血壓波形中包含心血管系統的豐富信息,可以反映心臟收縮力、血管彈性與阻力、全身血容量及血液物理狀態等屬性,因此如果能夠獲取一段時間內的血壓特征或一段時間內的血壓變化趨勢,就可以得到更豐富的生理信息,從而對心血管疾病進行有效的預防及治療。目前最準確的血壓測量方法是導管穿刺法,但是這種方法屬于有創測量,容易造成出血、感染等一系列風險。事實上,血壓信號可以由脈搏信號預測得出,并且脈搏信號可以采用無創方式進行測量,因此利用脈搏信號進行血壓預測具有重要的研究意義。
近年來,國內外研究人員提出了一些血壓預測方法。方杰等[2]提出一種基于小波分析與BP 神經網絡相組合的預測模型;王月猛等[3]利用Elman 神經網絡的時間記憶特性,建立了連續血壓模型,最終完成連續血壓測量;張佳骕等[4]提出一種新型卷積遞歸神經網絡血壓模型,該模型首先使用卷積神經網絡層自動提取脈搏波的波形特征,然后使用遞歸網絡層依據連續心動周期血壓變化關系對波形特征進行校正,最后使用全連接網絡層預測出當前的血壓值;Su等[5]提出了一種由多層長短期記憶(Long Short-Term Memory,LSTM)網絡構成的新型深度遞歸神經網絡,該網絡能顯著提高血壓的長期預測精度。然而,上述方法大多用于逐點血壓預測,速度欠佳,在對整個血壓序列進行預測時,精度不足。為克服現有方法的不足,本文在課題組已有工作[6-8]基礎上,提出基于改進SENet卷積神經網絡和自學習參數濾波器的連續血壓預測方法。實驗結果表明,利用本文方法由脈搏波形預測血壓波形的預測精度更高,預測速度更快,預測出的血壓波形更平滑。
SENet(Sequeeze-and-Excitation Network)[9]由Momenta公司在CVPR2017會議上提出,并贏得了ImageNet 2017的圖像識別冠軍。
SENet最初的目標是用于學習卷積神經網絡(Convolutional Neural Networks,CNN)中不同channels 的feature map權重,這種結構可以建模通道之間的相互依賴關系,捕捉空間相關性,從而提高網絡的表示能力,在計算機視覺領域獲得了極好的效果[10-11],其原始結構如圖1所示。

圖1 原始SENet結構
SENet可以大幅提升CNN性能,該模塊自動學習每一個特征通道的重要程度,能夠提取與任務相關的特征并抑制與任務無關的特征。SENet 對于運算后維度為C×W×H(c為通道數目,W、H為特征圖的長和寬)的特征矩陣U進行以下兩步處理。
(1)對U進行一個Squeeze 操作,即將每個W×H的矩陣映射成一個1×1的通道描述符,如式(1)所示:

(2)對U執行excitation操作,通過linear層為每個通道學習特定采樣的激活,并經過一個sigmoid 函數得到每個通道不同的激活權重,在將權重作用到每個通道上。
原始SENet 內部通道建模過程如圖2 所示,原始SENet 將卷積層每個通道的描述符作為全連接層的輸入。這種結構對時序數據適應性不夠良好,不能根據數據的時間依賴關系進行建模,因此不適合由時序脈搏信號預測血壓。

圖2 原始SENet內部通道建模過程
本文針對脈搏-血壓數據時序特征,對原始SENet內部通道建模過程進行了改進,即將原始SENet的內部通道依賴關系由Linear 層改為可以利用時序數據的GRU[12-13]層,如圖3 所示。改進后的SENet 將卷積層每個通道的描述符輸入到GRU中,使得GRU輸出的權重可以加權到每個通道上,從而使卷積神經網絡擁有利用時序信息的能力。

圖3 改進的SENet內部通道建模過程
以改進SENet 為基礎,本文提出了如圖4 所示的基于改進SENet的卷積神經網絡結構。

圖4 基于改進SENet的卷積神經網絡結構
其工作流程如下:
底層架構為卷積神經網絡,輸入一維的脈搏序列,利用卷積神經網絡提取出脈搏中的特征,每進行一層卷積運算都會增加通道數并且縮小特征尺寸。例如輸入為200 時間步的脈搏序列:經過第一層卷積通道數為80,輸出特征長度為100;經過第二層卷積通道數變為100,輸出特征長度變為50;依次類推,最后輸出通道為200,特征長度為1(用linear 層調整),此時輸出維度為(batch,200,1),每個通道剛好對應預測血壓每一個時間步長的值。
與此同時,每層卷積之間加入改進的SENet對通道之間依賴關系進行建模,改進的SENet將每個通道池化成通道描述符(將通道所有值池化成一個特征值)后,將每個通道的描述符當作時序數據輸入到GRU 網絡中,GRU 的長度即為通道個數,如圖3 所示。GRU 每個時間步的輸出代表每個通道的權重,以此加權到卷積輸出的每個通道上,從而使卷積神經網絡可以利用脈搏的時序信息。
由于經典SENet 卷積神經網絡和改進SENet 卷積神經網絡的計算復雜度區別僅在于兩個內嵌模塊之間的不同,與卷積神經網絡的參數無關,所以本文通過比較兩種網絡內嵌模塊的計算復雜度來研究改進SENet卷積神經網絡的計算復雜度。
經典SENet當隱藏層為40時,內嵌模塊Linear層的參數約為16 000 個。改進SENet 內嵌模塊包含一個GRU 和一個全連接層,GRU 的輸入為尺寸為1 的通道信息,經過多次實驗,輸出維度在本文實驗中設置為40。GRU 參數計算公式為(input_size+1)×hidden_size×3+hidden_size×3×(hidden_size+1),所以參數數目為(1+1)×40×3+40×3×41=5 160 個,加上全連接參數40×1=40,改進SENet 內嵌模塊共有5 200 個參數。因此改進SENet 比經典SENet 具有更小的空間復雜度,當序列較短時,改進SENet 比經典SENet 計算復雜度低。但是,由于GRU 為串行計算,所以當序列過長時,改進SENet的計算復雜度比經典SENet 更高。因此,本文提出的改進SENet 卷積神經網絡適用于中小型長度的時序信號預測,對超長時序信號的預測,其時間消耗可能會變大。
本文經過實驗發現,單純依賴改進SENet預測得到的血壓波形包含較多毛刺,需要使用濾波器進行平滑處理,但是常見濾波器如高斯濾波,均值濾波等濾波器參數固定,毛刺消除能力有限。為此本文提出了一種使用神經網絡優化的自學習參數濾波器,其結構如圖5 所示,由參數層、濾波器核及卷積層構成。參數層內部為一串隨機初始值,卷積層的參數由該初始值經過神經網絡學習而得到。
其工作流程為:
步驟1先隨機初始化一個與卷積層尺寸相同的變量作為參數。

圖5 自學習參數濾波器結構
步驟2該參數經過linear 層學習,得到一個濾波器核。
步驟3將這個濾波器核應用到卷積層的參數中,利用卷積層的損失反向傳播更新參數。
加入這種結構,可以使卷積神經網絡得到的波形更加平滑。此外,自學習參數濾波器模塊包含三個全連接層和一個卷積層,其中卷積層不參與學習,只有卷積層的參數參與學習,共有大約52個可學習參數(7×3+3+3×7+7),屬于極輕量級模塊。實驗表明:不加入自學習參數的訓練時間平均為0.654 s 每個epoch,加入自學習參數的訓練時間平均為0.656 s 每個epoch,加入該模塊比不加入該模塊的計算延遲大約在0.3%左右。在連續血壓預測中,由于不需要訓練網絡,沒有反向傳播過程,所以輸出信號延遲更可以忽略不計。本文將使用所提出的自學習參數濾波器對改進SENet 得到的連續血壓預測波形進行毛刺消除。
在前文所述工作基礎上,本文提出了基于改進SENet 卷積神經網絡和自學習參數濾波器的連續血壓預測方法,如圖6所示。

圖6 基于改進SENet卷積神經網絡和自學習參數濾波器的連續血壓預測方法
其工作步驟如下:
步驟1將光電脈搏序列變換為(batch,seq_len,1)的矩陣作為輸入。
步驟2建立卷積神經網絡模型,在卷積神經網絡之間加入改進的SENet模塊。
步驟3光電脈搏訓練數據輸入到網絡中得到預測的連續血壓序列。
步驟4將獲得的連續血壓序列通過自學習參數濾波器進行毛刺消除。
步驟5毛刺消除后的結果與真實連續血壓序列計算loss,反向傳播不斷迭代更新網絡參數,直到獲得最佳網絡參數。
本文實驗數據來自于PhysioNet MIMIC 數據庫的光電容積脈搏以及對應的有創血壓數據,約2 000 個左右,每個數據包含200 個采樣點(大約為一個周期的脈搏信號)。數據維度為(batch,1,200)。使用minmax 將數據歸一化到[0,1]之間以加快網絡收斂速度,使用Adam優化器,訓練時如果loss值連續幾個epoch不下降則將學習率降低為之前的10%,模型采用pytorch 框架編寫。
本文對簡單卷積神經網絡、原始SENet卷積神經網絡和改進的SENet 卷積神經網絡進行了對比實驗。如圖7~9為不同卷積層數下3種方法的測試損失曲線及預測精度曲線圖。
如圖7 為兩層卷積實驗結果,通道數設置為80,200。由實驗結果可見:原始SENet 卷積預測精度比簡單卷積神經網絡顯著提高,改進的SENet 的精度低于原始SENet。

圖7 兩層卷積神經網絡預測損失
如圖8為三層卷積實驗結果,通道數設置為80、150、200。由實驗結果可見:改進的SENet精度比原始SENet精度提升了5%。

圖8 三層卷積神經網絡預測損失
圖9為四層卷積實驗結果,通道數為80、100、150、200。由實驗結果可見:改進的SENet精度比原始SENet精度提升了3.8%。

圖9 四層卷積神經網絡測試損失
由圖7~9可以看出:加入SENet模塊之后,模型loss顯著降低,并且隨著卷積層數的增加,改進的SENet 性能逐漸優于原始的SENet。
如圖10~12為卷積神經網絡為四層時,分別使用簡單卷積神經網絡、原始SENet 卷積神經網絡、改進的SENet卷積神經網絡預測得到的連續血壓波形。

圖10 簡單卷積神經網絡連續血壓預測波形

圖11 原始SENet卷積神經網絡連續血壓預測波形

圖12 改進SENet卷積神經網絡連續血壓預測波形
從圖10~12 可以看出:使用改進的SENet 卷積神經網絡預測得到的連續血壓波形曲線擬合程度要優于原始SENet卷積神經網絡。
圖12所示連續血壓預測波形有較多毛刺,為此本文使用所提出的自學習參數濾波器對波形做進一步平滑。
當卷積層為四層,自學習參數濾波器核長度分別為7、9、11 時分別進行平滑,得到的損失曲線如圖13 所示。從圖13 可以看出在濾波器核長度為7 時得到了最好的效果。

圖13 不同Kernel length下的測試損失
經過自學習參數濾波器平滑后預測連續血壓如圖14 所示。對比圖12,可以看出波形中的大部分毛刺被濾除,波形更加平滑。

圖14 自學習參數濾波器連續血壓預測波形
比較本文方法與其他方法的性能,實驗結果如表1所示。

表1 本文方法與其他方法的比較
表中Normal conv代表簡單卷積神經網絡,括號內為卷積層數;SENet conv表示嵌入SENet的卷積神經網絡;GRU SENet conv 為嵌入改進SENet 的卷積神經網絡;Self params kernel表示嵌入改進SEnet的卷積神經網絡加入自學習參數濾波器。
由表1可見,使用卷積結構后預測精度整體上比未使用卷積結構的BP 神經網絡及文獻[2]方法有大幅提高,本文提出的改進SENet卷積神經網絡在卷積層數為二層、三層和四層時比簡單卷積神經網絡預測精度提升了34.8%、23.5%和36.0%,在三層、四層時比原始SENet 卷積神經網絡預測精度提升了5.1%、12.6%。并且在加入自學習參數的方法之后,對波形的平滑性有很大的提升。
本文提出了基于改進SENet 卷積神經網絡和自學習參數濾波器的連續血壓預測方法。實驗結果表明,改進SENet 可以比簡單卷積神經網絡更好地對脈搏數據的時間依賴關系進行建模,自學習參數濾波器可以更加有效地消除預測波形中的毛刺,這兩種方法的有機結合使本文方法可以更精確地由脈搏波形預測血壓波形。此外,改進SENet卷積神經網絡也可應用于天氣、股票、運動軌跡等一維連續時序信號的預測問題。下一步工作將研究如何將自注意力[14]機制應用到連續血壓預測上,并且通過稀疏化[15,16]手段對其進行改進,在確保預測精度的同時減少預測方法的運算量。