朱嘉健,馮 躍,徐 紅,2,林卓勝,梁惠珠,劉慧琳,李福鳳
(1.五邑大學 智能制造學部,廣東 江門 529020;2.維多利亞大學,澳大利亞 墨爾本 8001;3.上海中醫(yī)藥大學,上海 201203)
脈診作為中醫(yī)臨床診斷的重要方法之一,具有無創(chuàng)且快捷的特點。但脈診診斷的準確程度主要取決于中醫(yī)師的臨床經(jīng)驗,缺乏統(tǒng)一的客觀標準[1]。智能醫(yī)療技術的發(fā)展為脈診客觀化發(fā)展帶來了契機,在近五年的脈象分類研究中,大多都結合了人工智能技術來建立脈象分類模型,其中研究人員分別采用支持向量機(Support Vector Machine,SVM)[2]、最鄰近節(jié)點算法(K-Nearest-Neighbor,KNN)[3]、梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)[4]、極值梯度提升(Extreme Gradient Boosting,XGBoost)[5]、VGG(Visual Geometry Group)[6]、隨機森林[7]、改進的深度融合神經(jīng)網(wǎng)絡(Modified Inception-ResNet,MIRNet2)[8]和時序卷積神經(jīng)網(wǎng)絡(Temporal Convolutional Network,TCN)[9]進行脈象信號分析識別。
然而,目前已有大量研究將注意力機制應用于自然語言處理、圖像識別、語音識別等不同類型的深度學習任務中[10],而在脈象信號分類領域中,少有使用注意力機制提高脈象分類模型性能的研究。
為此,本文通過修改殘差網(wǎng)絡ResNet 的整體參數(shù),并通過整合SE(Sequeeze and Excitation)[11]模塊和ECA(Efficient Channel Attention)[12]模塊,得到改進的注意力模塊MECA(Modified Efficient Channel Attention),結合一維ResNet 和MECA 模塊,提出適合于一維脈象信號的特征提取和分類模型MECA-ResNet。實驗結果表明,該模型能對沉脈、遲脈、浮脈、滑脈、緩脈、平脈、數(shù)脈、微脈、弦脈、虛脈10 種脈象進行準確分類,并在臨床病例中可以有效地區(qū)分健康人群與冠心病患者。
本文模型基于ResNet 設計,將ResNet 的內(nèi)部參數(shù)和相應的殘差連接作修改構成適合于脈象信號的特征提取和分類的一維ResNet 網(wǎng)絡,然后在ResNet 的殘差連接之前添加MECA 注意力塊,構建得到MECAResNet,整體MECA-ResNet 網(wǎng)絡包括分類層共15 層,總體網(wǎng)絡所占電腦內(nèi)存不足10 MB,其中MECA-ResNet 網(wǎng)絡結構如圖1 所示。
圖1 MECA-ResNet 網(wǎng)絡結構圖
構建得到的一維ResNet 網(wǎng)絡內(nèi)部具體配置如下:
1)輸入:輸入數(shù)據(jù)由已預處理好的目標脈象數(shù)據(jù)和對應的標簽組成。
2)卷積層:此處除了殘差連接上的卷積核大小為1之外,其他卷積層的卷積核大小設置為16,使用大卷積核可以使網(wǎng)絡專注于一維脈象信號上的小細節(jié)[13],每個卷積層有32×k個濾波器,其中k從1 開始,除前5 個卷積層外,后續(xù)每隔兩層卷積層,k加1。
3)激活函數(shù):因為輸入的脈象數(shù)據(jù)具有正值和負值,第一個卷積層采用Tanh 激活函數(shù),以便保留更多信息,其他卷積層則采用ReLU 激活函數(shù)。
4)學習率策略和其他設置:學習率(Learning Rate)從0.01 開始,每50 個迭代降低10 倍,總共100 個迭代,呈階梯式降低;批量大小(Batch Size)設置為32;優(yōu)化器(optimizer)采用SGD 優(yōu)化器,動量等于0.9。
5)批歸一化(Batch Normalization,BN)層:BN 層是為了加速網(wǎng)絡的訓練和收斂,防止梯度爆炸、梯度消失和過擬合。對應的公式如下:
式中:ci為第i個卷積層的輸出;μβ和σβ是ci第i個卷積層的均值和方差;BNi是第i個卷積層BN 層的輸出;m為總的卷積層數(shù)量。
6)殘差連接:由于第6 層和第10 層的卷積層進行了下采樣操作,殘差連接由最大池化、1×1 卷積和BN 層三個部分組成[14]。其中殘差連接相關公式如下:
式中:o1代表第3,5,9 和13 層的卷積層輸出F1(x)加上通過恒等映射添加的輸入x并經(jīng)過ReLU 激活函數(shù)δ激活后的輸出;o2代表第7 和11 層的卷積層輸出F2(x)和經(jīng)過恒等映射的輸入x經(jīng)過最大池化Maxpool、一維卷積C1D1和BN 層后的輸出。
7)輸出層:最后的輸出層由帶有Softmax 函數(shù)的全連接層(Dense)得到最終的分類結果,其相關公式如下:
式中:x和N分別是全連接層的輸出和類別數(shù)。
SE-ResNet 提出了SE 模塊(見圖2a)),通過壓縮和激勵操作強化重要通道的特征并弱化非重要通道的特征,但是模塊帶來較大的計算代價,且不能很好地捕捉全部通道間的關系。為此,ECA-ResNet 改進了SE 模塊,推出ECA 模塊(見圖2b)),令網(wǎng)絡大幅度降低參數(shù)數(shù)量的同時,保持高性能,成為超輕量級的注意力模塊。受SE 模塊和ECA 模塊的啟發(fā),本文結合它們的優(yōu)點提出了MECA 模塊,如圖2c)所示。
圖2 注意力模塊
本文提出的MECA 模塊通過改變ECA 模塊得到相應改進版的注意力模塊,該模塊通過Dense 模塊來減少相應卷積層的特征通道數(shù),后使用ECA 模塊的自適應卷積模塊和Softmax 函數(shù)得到相應卷積通道的權重。該注意力模塊結合了SE 模塊的激勵機制進行升維,不但讓網(wǎng)絡有更多的非線性處理和擬合通道之間復雜的相關性,并且增加ECA 模塊中的自適應卷積模塊來改進模型對不同特征通道的關注程度,其相應公式如下:
式中:k為自適應卷積核大?。籆是輸入特征圖的通道數(shù);xc(t)指的是第t個時間步長的特征圖;T為總的時間步長。由式(8)得到的z包含了全局平均池化后的特征圖的全局特征。后續(xù)全連接層起到升維的作用,W1代表全連接層的權重值,k由式(7)來決定,總的具體函數(shù)定義如式(9)所示。最終得到的權重值w與當前輸入MECA 模塊的特征圖x進行相乘即可得到調(diào)整通道權重后的特征圖oc。
本文的實驗數(shù)據(jù)包含有兩種數(shù)據(jù)集,分別是脈象數(shù)據(jù)集和臨床病例數(shù)據(jù)集。
脈象數(shù)據(jù)集是天津慧醫(yī)谷科技有限公司提供的184 例脈象數(shù)據(jù),其中包含10 種脈象:沉脈、遲脈、浮脈、滑脈、緩脈、平脈、數(shù)脈、微脈、弦脈、虛脈,脈象數(shù)據(jù)的采集頻率是128 Hz,采集時間為5~7 s,10 種脈象圖如圖3所示。從圖3 可看到脈象數(shù)據(jù)集中10 種脈象圖的時域特征各不相同,每種脈象的主波寬度不一樣,如弦脈和遲脈,其中弦脈脈形端直而長;有些脈象呈現(xiàn)2 個以上的極值點,如緩脈、浮脈、微脈、滑脈。所以這10 種脈象數(shù)據(jù)有著形態(tài)上的區(qū)別。
圖3 脈象數(shù)據(jù)集中所包含的10 種脈象信號圖
臨床病例數(shù)據(jù)集是上海中醫(yī)藥大學提供的冠心病和健康脈象數(shù)據(jù),共有396 例。冠心病和健康脈象數(shù)據(jù)的采集時間為60~90 s,兩種脈象圖如圖4 所示。從圖4可知,冠心病人群和健康人群的脈象信號圖的時域特征亦是各不相同,如健康人群的脈象信號圖主波寬度比冠心病人群的寬,且冠心病人群的脈象信號圖比健康人群的更加陡峭。
圖4 臨床病例數(shù)據(jù)集中所包含的兩種脈象信號圖
由于兩種數(shù)據(jù)集的脈象信號數(shù)據(jù)包含有大量噪聲且伴有基線漂移,因此需要對脈象數(shù)據(jù)去除噪聲和消除基線漂移,將脈象數(shù)據(jù)所包含的噪聲點和基線漂移去除。
首先采用帶通濾波器將原脈搏波中除0.032~20 Hz以外的噪聲去除,其次經(jīng)過中值濾波消除孤立噪聲點,然后使用小波變換進一步去除脈象數(shù)據(jù)的低頻噪聲,得到能顯現(xiàn)脈搏波特征的脈象圖,如圖5 所示。最后,通過相應的單周期頻率窗口,利用三次樣條插值方法和頻率窗口找到脈象波形的最小值,并通過脈象數(shù)據(jù)減去最小值擬合曲線來徹底去除基線漂移得到最終的脈象波形,如圖6 所示。
圖5 去除脈象信號的噪聲
圖6 去除脈象信號的基線漂移
由于脈象數(shù)據(jù)集中的數(shù)據(jù)過少,本文采用少數(shù)類樣本過采樣技術(Synthetic Minority Oversampling Technique,SMOTE)對脈象數(shù)據(jù)集進行過采樣以擴增脈象數(shù)據(jù)集的樣本,防止MECA-ResNet 欠擬合。其中脈象數(shù)據(jù)集中的弦脈、虛脈、數(shù)脈、微脈、平脈、緩脈、滑脈、浮脈、遲脈和沉脈的單周期脈象數(shù)據(jù)切片數(shù)量分別從215,8,83,7,127,70,54,25,6 和175 擴增至1 720,160,660,140,1 010,560,430,200,120 和1 400。臨床病例數(shù)據(jù)集中的健康和冠心病脈象經(jīng)過周期分割的單周期脈象數(shù)據(jù)數(shù)量分別為1 207 和2 155,數(shù)量足夠,無需進行過采樣。
本文通過Python 構建所有的模型,其中每個模型通過十折交叉驗證來驗證每個模型在脈象數(shù)據(jù)集和臨床病例數(shù)據(jù)集的性能。其中脈象數(shù)據(jù)集主要用于訓練、驗證和測試模型的性能,臨床病例數(shù)據(jù)集主要用于驗證模型的病種檢測能力。實驗采用的GPU 顯卡為NVIDIA GeForce GTX 1080Ti。
本文采用以下4 個性能指標:平均準確率(Average Accuracy)、平均召回率(Average Recall)、平均精確率(Average Precision)、平均F1分數(shù)(AverageF1-score)。其計算公式如下:
式中:TPi是指十折交叉驗證中當前折中預測為正樣本的正樣本的數(shù)量;FNi是指十折交叉驗證中當前折中預測為正樣本的負樣本的數(shù)量;TNi是指十折交叉驗證中當前折中預測為負樣本的負樣本數(shù)量;FNi是指十折交叉驗證中當前折中預測為負樣本的正樣本數(shù)量;K等于10。其中模型在兩個數(shù)據(jù)集的平均性能指標和相應的混淆矩陣如表1~表4 所示。
表1 各個模型在脈象數(shù)據(jù)集中的十折交叉驗證的平均性能對比 %
由表1 可知各個模型對于脈象數(shù)據(jù)集的十折交叉驗證分類實驗結果,由表2 可得知MECA-ResNet 在各個脈象類別上的分類性能。
表2 MECA-ResNet 在10 種脈象類別的分類性能 %
其中由表1 中最優(yōu)的傳統(tǒng)機器學習方法和殘差網(wǎng)絡結合注意力機制的分類性能比較可知:改進后的一維ResNet 比現(xiàn)有的脈象分類模型的性能更高,其中4 個指標分別比LightGBM 高0.26%,0.26%,0.12%和0.14%,說明該模型僅僅使用脈象信號數(shù)據(jù)也可以提取出更好的脈象特征并實現(xiàn)更好的分類效果。在加入了注意力模 塊 后,SE-ResNet、ECA-ResNet 和MECA-ResNet 比ResNet 達到了更高的分類性能,其中平均準確率分別提高0.55%,0.58%和1.06%;平均召回率分別提高0.55%,0.58%和1.06%;平均精確率分別提高0.69%,0.70%,1.16%;平均F1分數(shù)分別提高0.54%,0.68%,1.20%。這表明MECA 注意力模塊可以以增加少量計算負擔為代價產(chǎn)生更具有代表性的輸入特征,從而提高分類性能。由表2 的MECA-ResNet 在各個脈象類別的性能可知,MECA-ResNet 不僅對弦脈、虛脈、數(shù)脈、微脈、平脈、緩脈、滑脈、浮脈、遲脈和沉脈都有著98%以上的分類準確率且對上述10 種脈象的召回率、精確率和F1分數(shù)均超過97%,說明該模型在10 種脈象上可達到較高的檢測能力和分類精度。
由表3 的各個模型對于臨床病例數(shù)據(jù)集的十折交叉驗證分類實驗結果可知:MECA-ResNet 模型的平均準確率、平均召回率、平均精確率和平均F1分數(shù)均為99.64%,MECA-ResNet 的4 個指標與表3 的其他模型相比,其漲幅范圍在0.2%~1.61%,可知在臨床病例數(shù)據(jù)上,MECA-ResNet 的分類性能依然超過了其他的脈象分類方法,說明該模型在臨床病例數(shù)據(jù)集上能夠達到很好的分類效果。
表3 各個模型在臨床病例數(shù)據(jù)集中的十折交叉驗證的平均性能對比 %
表4 MECA-ResNet 在臨床病例數(shù)據(jù)集中對各個類別的性能 %
本文提出基于深度學習模型融合注意力模塊的脈象信號分類方法,所設計的MECA-ResNet 模型可以有效提取出脈象特征并對脈象信號進行自學習和訓練。在脈象數(shù)據(jù)集和臨床病例數(shù)據(jù)集上,MECA-ResNet 與已有的脈象分類模型進行性能對比。實驗結果表明,在僅僅使用脈象數(shù)據(jù)而不對其做復雜的特征提取,MECAResNet 不僅可以達到更準確的脈象分類效果,還可以改變自身層數(shù)來適應脈象分類任務和病種分類任務。該模型可以以較高的分類性能應用于臨床實時脈象的檢測和相關病種的檢測中,并為脈象信號的分析識別研究提供新的思路和方法。