楊雨諾,張國林,孫科學(xué),2,3,成謝鋒,2,3
(1.南京郵電大學(xué) 電子與光學(xué)工程學(xué)院,江蘇 南京 210023;2.南京郵電大學(xué) 信息電子技術(shù)國家級虛擬仿真實驗教學(xué)中心,江蘇 南京 210023;3.射頻集成與微組裝技術(shù)國家地方聯(lián)合工程實驗室,江蘇 南京 210023)
心音模式識別是信息科學(xué)和人工智能的一個交叉應(yīng)用領(lǐng)域,作為一種自然信號,心音信號應(yīng)用于聽診輔助治療已經(jīng)有相當悠久的歷史。它是醫(yī)療領(lǐng)域中一種重要的人體生理信號,具備獨特性和可采集性且不容易被模仿或復(fù)制[1-2]。
深度學(xué)習(xí)是機器學(xué)習(xí)的一種延伸,其基礎(chǔ)概念在2006年和2007年由Geoffrey Hinton提出并發(fā)表于《Sciences》,深度學(xué)習(xí)是受到人類大腦結(jié)構(gòu)啟發(fā)的一種基于對數(shù)據(jù)進行表征學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)算法加之模型深度的增加發(fā)展。類似一張圖片的觀察值可以通過各種方式來表示,例如以更加抽象的方式表示為指定形狀的區(qū)域、一系列邊,或者單個像素強度值的向量。如果使用人臉識別或面部表情識別[3]等特定的表示方法,則會讓實例中的學(xué)習(xí)任務(wù)更加高效。深度學(xué)習(xí)的一個顯著優(yōu)勢是其可以通過非監(jiān)督式和半監(jiān)督式的特征學(xué)習(xí)及分層特征提取高效算法來替代效率相對低的手工提取方法[4]。
深度學(xué)習(xí)框架現(xiàn)在已經(jīng)出現(xiàn)了很多種形式,例如深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和深度置信網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò),在圖像處理和計算機視覺、語音識別與自然語言處理、音頻識別與生物信息學(xué)等領(lǐng)域均取得了很好的應(yīng)用效果。
文中分析了深度學(xué)習(xí)算法和深度信任網(wǎng)絡(luò)在心音識別方面的應(yīng)用,并以深度信任網(wǎng)絡(luò)作為模型[5],結(jié)合進程擇優(yōu)算法構(gòu)建一種基于深度學(xué)習(xí)網(wǎng)絡(luò)的心音信號分析識別平臺。為了完成深度學(xué)習(xí)網(wǎng)絡(luò)模塊的設(shè)計,首先解決心音傳感器的無線通信問題,制作了無線心聲檢測裝置。通過心音深度學(xué)習(xí)網(wǎng)絡(luò)的構(gòu)建實現(xiàn)了一種可拓展的心音智能分析實驗平臺。
心音采集模塊的設(shè)計思路是循環(huán)結(jié)構(gòu)與順序結(jié)構(gòu)相結(jié)合。具體為當一路心音信號采集成功后,將得到的心音信號首先通過小波去噪進行處理[6-8]。之后使用LabVIEW軟件中已有的FFT譜分析控件與功率譜控件將經(jīng)過處理的心音信號的FFT譜與功率譜各自顯示在計算機前面板上。到此即完成了一路信號的采集與分析工作。
在上述工作完成后,還可以搭建心音身份識別系統(tǒng)的搭建[9-11],只需要添加數(shù)據(jù)處理模塊和身份識別模塊即可。通過使用低頻加強型梅爾倒譜系數(shù)和頻域分段相關(guān)系數(shù)的算法,可以在數(shù)據(jù)處理模塊中完成心音信號的特征參數(shù)提取,通過矢量化歐氏距離和S1、S2信號最小相關(guān)距離對采集的信號進行確認識別以實現(xiàn)識別模塊的功能。
研究平臺流程如圖1所示。
圖1 系統(tǒng)流程
將心音采集器采集的心音信號經(jīng)過去噪,包絡(luò)截取放大,周期心率計算及頻域分析等步驟實現(xiàn)采集模塊的功能。將采集模塊得到的數(shù)據(jù)傳入到心音識別模塊,其主要由數(shù)據(jù)處理模塊和身份識別模塊組成,信號的特征提取由數(shù)據(jù)處理模塊完成,并在處理完成后建立特征數(shù)據(jù)庫;身份識別模塊對心音信號特征數(shù)據(jù)的分類識別通過兩種算法完成,識別率使用決策層融合算法來提高。采集模塊采集到的數(shù)據(jù)不需要像傳統(tǒng)方法一樣進行預(yù)處理,可以直接傳輸?shù)缴疃葘W(xué)習(xí)模塊以組成深度學(xué)習(xí)研究的平臺。
通過多個受限玻爾茲曼機(restricted Boltzmann machine,RBM)的疊加可以構(gòu)成深度信念網(wǎng)絡(luò)系統(tǒng),并可以使用梯度下降法和反向傳播算法進行調(diào)優(yōu)。RBM的概率模型為:
(1)
E(x,h)=-bTx-cTh-hTwx
(2)
(3)
其中,x為可見層單元;h為隱層單元;Z為配分函數(shù);E為能量函數(shù);b和c為偏置;W為可見層單元和隱層單元之間的連接權(quán)重。
如果一個RBM網(wǎng)絡(luò)的各個隱層單元的狀態(tài)已知,則各個可見層的配置x對于隱層配置h的條件概率為:
(4)
其中,'表示轉(zhuǎn)置,式4可化簡為:
(5)
由于RBM為一個二分圖,層內(nèi)沒有邊相連,因而隱層是否激活在給定可見層節(jié)點取值的情況下是條件獨立的。類似地,可見層節(jié)點的激活狀態(tài)在給定隱層取值的情況下也是條件獨立的。因為神經(jīng)元二進制的特點,故當其被激活后(值為1)的概率分布為:
(6)
或者表示為:
P(hi=1|x)=sigm(ci+wix)
(7)
可見層的概率分布同理為:
P(xi=1|h)=sigm(bi+wih)
(8)
為了獲得理想的模型訓(xùn)練效果,要讓測試得到的數(shù)據(jù)和模型得到的數(shù)據(jù)盡可能接近。即需要令訓(xùn)練數(shù)據(jù)的對數(shù)概率和負對數(shù)概率分別最大化和最小化。其中負對數(shù)的數(shù)據(jù)較難獲得。因此,對模型進行抽樣。
抽樣次數(shù)應(yīng)該盡可能多,在進行抽樣時需要給定可見層狀態(tài),更新隱層,將隱層得到的數(shù)據(jù)返還給可見層從而更新可見層,依次循環(huán),即
(9)
整個層會在每次迭代中進行更新。通過對初始化進行隨機處理,可以得到恰當?shù)某闃???紤]到可實施性,初始化數(shù)據(jù)采用訓(xùn)練樣本,一次迭代后,將更新的數(shù)據(jù)作為負樣本,這就是對比分歧算法。
對比分歧算法的弊端在于其是通過層之間數(shù)據(jù)對比來使數(shù)據(jù)實現(xiàn)收斂,進而來調(diào)整網(wǎng)絡(luò)權(quán)重,容易導(dǎo)致訓(xùn)練誤差遞增。可知深度學(xué)習(xí)系統(tǒng)結(jié)構(gòu)并不是層數(shù)越多越好,其同樣存在一個最優(yōu)解。
深度學(xué)習(xí)主要具有以下特點[12-14]:
深度神經(jīng)網(wǎng)絡(luò)是具備至少一個隱層的神經(jīng)網(wǎng)絡(luò),當前的隱層作為更高層的可見層。任一個RBM輸出數(shù)據(jù)和層之間權(quán)值的變化情況都僅取決于輸入數(shù)據(jù),多出的層次為模型提供了更高的抽象層次,因而提高了模型的能力。
實驗表明,通過無監(jiān)督學(xué)習(xí)算法對網(wǎng)絡(luò)結(jié)構(gòu)進行逐層預(yù)訓(xùn)練可以取得較為理想的結(jié)果,逐層無監(jiān)督學(xué)習(xí)回避了有監(jiān)督學(xué)習(xí)所面臨的梯度傳播問題。深度學(xué)習(xí)的訓(xùn)練過程分為自底向上的無監(jiān)督學(xué)習(xí)和自頂向下的有監(jiān)督學(xué)習(xí),主要使用的學(xué)習(xí)算法包括:遷移學(xué)習(xí)算法、稀疏編碼對稱機算法、非線性變換算法、自然語音解析算法和深度費希爾映射算法等。
深度學(xué)習(xí)網(wǎng)絡(luò)中底層訓(xùn)練速度最慢并且還擁有最大的誤差。由于使用隨機初始化的方法,最初的網(wǎng)絡(luò)權(quán)值隨機分布,初始的訓(xùn)練誤差會很大且訓(xùn)練速度也會比較慢。而由于使用了反向傳播,在計算梯度即誤差導(dǎo)數(shù)時,隨著網(wǎng)絡(luò)層數(shù)的遞增,梯度的幅值會逐漸減小,整體上權(quán)值變化的導(dǎo)數(shù)即趨勢會越來越緩。
深度學(xué)習(xí)網(wǎng)絡(luò)可以與任意一種分類器結(jié)合。與BP(back propagation)神經(jīng)網(wǎng)絡(luò)的結(jié)合是現(xiàn)階段相對更理想的解決方案。在BP神經(jīng)網(wǎng)絡(luò)中,信號是前向傳播,而誤差則是反方向傳播,其組成是一種多層結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)。
深度信任網(wǎng)絡(luò)(deep belief networks,DBN)是一種包含多層隱層單元的概率生成模型,可視為進行數(shù)據(jù)分類的多層簡單學(xué)習(xí)模型。深度信任網(wǎng)絡(luò)可以作為預(yù)訓(xùn)練部分并提供初始權(quán)值,隨后提供反向傳播等算法進行調(diào)優(yōu)。深度信任網(wǎng)絡(luò)結(jié)構(gòu)中的每一層都是標準的受限玻爾茲曼機,可以通過無監(jiān)督逐層訓(xùn)練。
深度信任網(wǎng)絡(luò)是有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的結(jié)合,這是由于BP神經(jīng)網(wǎng)絡(luò)在深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)中作為最后一層,使得等級最高的隱層可以充當分類器的一部分,整體網(wǎng)絡(luò)以反向神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練。BP神經(jīng)網(wǎng)絡(luò)可以通過這種方法提供訓(xùn)練成功率,加快收斂速度[15]。
深度信任網(wǎng)絡(luò)訓(xùn)練步驟為:
(1)初始化一個多層的深度學(xué)習(xí)網(wǎng)絡(luò),通過對比分歧算法對訓(xùn)練數(shù)據(jù)進行訓(xùn)練,并得到網(wǎng)絡(luò)各層的權(quán)值。對比分歧算法提供了一種最大似然的近似值,可以作為學(xué)習(xí)受限玻爾茲曼機的權(quán)重。
(2)搭建一個人工神經(jīng)網(wǎng)絡(luò),其節(jié)點數(shù)和隱層層數(shù)要和深度學(xué)習(xí)網(wǎng)絡(luò)保持一致,將通過深度學(xué)習(xí)網(wǎng)絡(luò)得到的權(quán)值賦予人工神經(jīng)網(wǎng)絡(luò)的各個隱層。
(3)使用BP算法調(diào)試神經(jīng)網(wǎng)絡(luò),并構(gòu)建一個符合要求的深度信任網(wǎng)絡(luò)。
與BP神經(jīng)網(wǎng)絡(luò)的特點相同,深度信任網(wǎng)絡(luò)同樣擁有自組織性,對輸入的數(shù)據(jù)不作任何限制。深度信任網(wǎng)絡(luò)同時解決了BP神經(jīng)網(wǎng)絡(luò)所具有的收斂速度偏慢的不足,理論上隨著隱層層數(shù)的增加,深度學(xué)習(xí)網(wǎng)絡(luò)可以更高效地學(xué)習(xí)到深層次特征,從而使系統(tǒng)的整體性能和網(wǎng)絡(luò)效率同時得到提高。然而BP神經(jīng)網(wǎng)絡(luò)容易產(chǎn)生局部最優(yōu)解的弊端還無法得到很好的解決,與此同時,由于隱層層數(shù)的增加和訓(xùn)練時使用層與層數(shù)據(jù)進行比較的原因,誤差也會逐層傳遞。因此主要的難點就是隱層層數(shù)以及隱層節(jié)點數(shù)應(yīng)該如何設(shè)置以獲得理想的深度信任網(wǎng)絡(luò)性能。
心音識別模塊實現(xiàn)了待測心音與數(shù)據(jù)庫標準心音的最佳匹配功能,細節(jié)上又分為心音識別模塊和共振峰展示模塊。以下分別對兩個模塊進行介紹。
(1)心音識別模塊。
該模塊先載入待識別的心音文件和數(shù)據(jù)庫中的標準心音文件,分別對它們進行預(yù)加重和分幀加窗等的預(yù)處理,接著提取它們的MFCC特征參數(shù),之后利用DTW匹配算法將得到的特征參數(shù)進行模式匹配,得到兩者的幀平均匹配距離,記錄下每次匹配的結(jié)果,最后比較所有距離,選取匹配距離最小的標準心音文件作為最終的匹配結(jié)果。系統(tǒng)的工作流程如圖2所示。
圖2 心音識別流程
(2)共振峰展示模塊。
心音共振峰展示模塊以圖形化的形式展示了現(xiàn)場待測心音和數(shù)據(jù)庫標準心音共振峰隨時間的變化情況,給用戶直觀的觀察,定性地反映兩者的差異。該模塊首先對現(xiàn)場待測心音和數(shù)據(jù)庫標準心音信號進行預(yù)處理,然后分別對它們進行快速傅里葉變換,提取它們的共振峰,通過Android圖表引擎AchartEngine將提取到的共振峰信息以圖形化的形式展示出來。工作流程如圖3所示。
圖3 心音共振峰的流程
這里結(jié)合進程擇優(yōu)法[15]及深度學(xué)習(xí)網(wǎng)絡(luò)的快速設(shè)計方法構(gòu)建一種可在自然環(huán)境下對心音信號進行分類處理的深度學(xué)習(xí)網(wǎng)絡(luò)。將本實驗室采集得到的800個健康心音信號與800個非健康(包括早搏心音)的心音信號組成數(shù)據(jù)庫,單個信號樣本時長大于等于3 s,采樣頻率均為4 kHz,使用上述樣本時無需任何的預(yù)處理操作。傳統(tǒng)心音識別中,心音信號必須先完成一系列繁雜的預(yù)處理過程,系統(tǒng)一次性能識別的心音信號數(shù)量也有嚴格限制。然而心音深度學(xué)習(xí)網(wǎng)絡(luò)平臺是面向自然環(huán)境下數(shù)據(jù)量大的心音信號,與傳統(tǒng)實驗方法相比,性能更加優(yōu)越,同時具備一定的工程應(yīng)用性。
先從數(shù)據(jù)庫中隨機抽取800個樣本進行訓(xùn)練,將剩余的樣本分為兩個庫進行測試,先后抽取的庫無任何交集以排除可能出現(xiàn)的干擾。
(1)構(gòu)建一個2~6層,每層有20~300節(jié)點數(shù)的深度學(xué)習(xí)網(wǎng)絡(luò),由訓(xùn)練庫數(shù)據(jù)得到的層間重構(gòu)誤差如表1所示。
表1 層間重構(gòu)誤差
(2)經(jīng)過上述操作后可發(fā)現(xiàn),當每層有超過150個節(jié)點數(shù)時,重構(gòu)誤差就會從第二層開始逐步增加。因此,將節(jié)點數(shù)部分減少后,每層的重構(gòu)誤差也隨之降低,當單層節(jié)點數(shù)降至20節(jié)點后,第二層的重構(gòu)誤差隨之下降到底層的10%以下。
(3)心音深度信任網(wǎng)絡(luò)的分類器選擇BP神經(jīng)網(wǎng)絡(luò)。表2為2~6層,20~200節(jié)點數(shù)的心音深度信任網(wǎng)絡(luò)訓(xùn)練誤差表。
表2 心音深度信任網(wǎng)絡(luò)的訓(xùn)練誤差
結(jié)合訓(xùn)練集誤差進行分析,對比可知每層60節(jié)點共三層的網(wǎng)絡(luò)結(jié)構(gòu)性能最佳,其訓(xùn)練誤差是0.022 9。
通過測試庫進行測試,采用最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)對數(shù)據(jù)庫中的兩個測試庫進行測試所得誤差分別為0.107 3和0.097 7,同等測試環(huán)境下60-60-60-60的測試誤差則達到0.112 6和0.117 3,40-40-40(40節(jié)點三層)的測試誤差為0.127 2和0.114 8,100-100-100(100節(jié)點三層)的測試誤差為0.169 8和0.139 8。對比數(shù)據(jù)如表3所示,可以看到60節(jié)點三層的網(wǎng)絡(luò)結(jié)構(gòu)準確度最高。
表3 四種網(wǎng)絡(luò)結(jié)構(gòu)性能對比
本實驗平臺以LabVIEW語言作為研發(fā)搭建工具,結(jié)合MATLAB以及深度學(xué)習(xí)網(wǎng)絡(luò)開發(fā)一種模塊化的實驗平臺,實現(xiàn)對心音的采集、分析、處理并可以拓展到身份識別和深度學(xué)習(xí)等前沿領(lǐng)域的實驗和探索。心音深度信任網(wǎng)絡(luò)的研究對于快速構(gòu)建一種深度學(xué)習(xí)網(wǎng)絡(luò),增強在自然環(huán)境下心音識別算法處理大數(shù)據(jù)的性能,具有實際的意義。在以后的研究中還可以在身份識別和深度學(xué)習(xí)方面進一步優(yōu)化處理,使該平臺更加完善和實用。