王 莉,張紫燁,郭曉東,牛群峰
(河南工業(yè)大學 電氣工程學院,鄭州450001)
心電圖是心臟電活動在人體體表的反應(yīng),是檢測和診斷心臟疾病的重要依據(jù)。 早期心臟疾病診斷主要憑借醫(yī)生豐富的經(jīng)驗,長時間診斷中可能存在誤檢或錯檢;隨著計算機技術(shù)的快速發(fā)展,實現(xiàn)心電信號自動分析成為研究的熱點。
心電信號分類的本質(zhì)是模式識別,在研究中采用最廣泛的分類方法是神經(jīng)網(wǎng)絡(luò)。BP 神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧梆伾窠?jīng)網(wǎng)絡(luò),具有自組織、自學習、自適應(yīng)的能力,且原理簡單,易于實現(xiàn), 是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。但是BP 神經(jīng)網(wǎng)絡(luò)存在學習過程收斂速度慢、學習效率低和學習過程易陷于局部極小等局限,尤其是BP網(wǎng)絡(luò)隱含層神經(jīng)元個數(shù)的選取對神經(jīng)網(wǎng)絡(luò)的學習能力和泛化能力有較大影響[1]。 針對BP 神經(jīng)網(wǎng)絡(luò)的缺陷,許多學者提出了優(yōu)化BP 網(wǎng)絡(luò)的學習算法,常見的有遺傳算法[2-4],布谷鳥算法[5],粒子群算法等[6]。
粒子群算法的本質(zhì)是一種隨機搜索算法,這種算法實現(xiàn)容易、精度高、收斂快,被廣泛應(yīng)用于許多學科。 文獻[7]中采用基于分塊的神經(jīng)網(wǎng)絡(luò)(BBNN),通過粒子群算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和權(quán)重, 對5種心跳類型患者的心電圖進行分類,準確率達到了97%;文獻[8]中提出了一種基于粒子群算法優(yōu)化徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)的心電圖分類方法,通過和徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)心電信號分類對比,結(jié)果表明經(jīng)過粒子群算法優(yōu)化的徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)更小、效果更優(yōu)。 本研究提出了一種粒子群優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的心電信號分類方法, 通過修正BP 神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值, 克服BP 神經(jīng)網(wǎng)絡(luò)訓練易陷入局部極小的局限。 仿真結(jié)果表明,粒子群優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)分類精度更高,收斂速度更快。
圖1 典型三層BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure diagram of a typical three-layer BP neural network
BP 網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),由輸入層,隱含層和輸出層組成。 層與層之間有2 種信號在流通:一種是工作信號,它是施加輸入信號后向前傳播直到在輸出端產(chǎn)生實際輸出的信號,是輸入和權(quán)值的函數(shù);另一種是誤差信號,誤差信號是網(wǎng)絡(luò)實際輸出與期望輸出間的差值,它由輸出端開始逐層向后傳播。 圖1 所示為一個典型的三層BP 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖,其中xj表示輸入層第j 個節(jié)點的輸入,j=1,…,M;wi,j表示隱含層第i 個節(jié)點到輸入層第j個節(jié)點之間的權(quán)值;θi表示隱含層第i 個節(jié)點的閾值;φ 表示隱含層的激勵函數(shù);wk,i表示輸出層第k個節(jié)點到隱含層第i 個節(jié)點之間的權(quán)值,i=1,…,q;ak表示輸出層第k 個節(jié)點的閾值,k=1,…,L;ψ 表示輸出層的激勵函數(shù);ok表示輸出層第個節(jié)點的輸出。
粒子群算法,也稱粒子群優(yōu)化算法(PSO)。 PSO是模擬鳥群隨機搜尋食物的捕食行為。在PSO 中每個優(yōu)化問題的潛在解都可以想象成搜索空間的一只鳥,稱之為“粒子”。 粒子主要追隨當前的最優(yōu)粒子在解空間中搜索,PSO 初始化為一群隨機粒子,然后通過迭代找到最優(yōu)解。 在每一次迭代中,粒子通過跟蹤2 個極值來更新自己:第一個就是粒子本身所找到的最優(yōu)解,這個解稱為個體極值;另一個極值是整個種群目前找到的最優(yōu)解,這個極值是全局極值。 在找到這2 個最優(yōu)極值時,粒子根據(jù)如下公式來更新自己的速度和位置:
式中:xid是第i 個粒子的位置,vid是第i 個粒子的速度,pid是第i 個粒子搜索到最優(yōu)位置,pgd是整個粒子群搜索到的最優(yōu)位置;c1和c2為學習因子,r1和r2為[0,1]范圍內(nèi)的均勻隨機數(shù)。
由于PSO 算法是基于啟發(fā)式學習的算法,具有同時搜索解空間的不同區(qū)域、 避免陷入局部極小、實現(xiàn)全局最優(yōu)的特點[9]。 本研究將PSO 算法應(yīng)用于BP 神經(jīng)網(wǎng)絡(luò)訓練,構(gòu)建PSO-BP 神經(jīng)網(wǎng)絡(luò)模型,將每個神經(jīng)元的權(quán)值和閾值作為解空間的一個粒子迭代尋優(yōu),PSO 優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)算法具體步驟如下:
(1)確定BP 神經(jīng)網(wǎng)絡(luò)的拓撲結(jié)構(gòu),設(shè)置BP 神經(jīng)網(wǎng)絡(luò)每層神經(jīng)元個數(shù);初始化粒子種群,隨機設(shè)置各個粒子的速度和位置,粒子群算法主要運行參數(shù)設(shè)置見表1;
(2)計算每個粒子的適應(yīng)度值Fit[i];
(3)比較每個粒子的適應(yīng)度值Fit[i]和個體極值,如果Fit[i]>pbest(i),則用Fit[i]替換掉pbest(i);
(4)比較每個粒子的適應(yīng)度值Fit[i]和全局極值gbest(i),如果Fit[i]>gbest(i),則用Fit[i]替換掉gbest(i);
(5)根據(jù)式(1)和式(2)更新粒子的位置和速度;
(6)如果滿足條件(誤差足夠好或達到最大循環(huán)次數(shù)),則退出,否則返回第二步;
(7)將得到的全局極值gbest(i)作為BP 神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,用訓練樣本訓練神經(jīng)網(wǎng)絡(luò);
(8)用測試樣本進行仿真,得到心電信號類型分類結(jié)果。
表1 PSO 算法參數(shù)設(shè)置Tab.1 PSO algorithm parameter settings
本研究中用于分析的心電信號均來自于MITBIH Arrhythmia Database, 該數(shù)據(jù)庫包含48 組心電數(shù)據(jù),采樣頻率為360 Hz,時間長度一般為30 min。每一數(shù)據(jù)樣本包含3 個文件:頭文件(.hea),數(shù)據(jù)文件(.dat)和注釋文件(.atr),其中注釋文件是心電診斷專家對信號分析的結(jié)果,包括心跳,節(jié)律和信號質(zhì)量等[10]。48 組記錄中,每組記錄包含約650000個采樣點,全部正常心拍(Normal)(或異常心拍在2%以下)有23 組,左束支傳導阻滯(LBBB)有2組,右束支傳導阻滯(RBBB)有2 組,起搏心拍(Paced beat)有1 組,其余的記錄樣本則大多為正常心拍,左束支傳導阻滯、右束支傳導阻滯、房性早搏、室性早搏、起搏等心拍的混合,具體樣本分類見表2(只列出正常和完全異常的心電信號樣本)。
表2 MIT-BIH 心率異常數(shù)據(jù)庫樣本分類Tab.2 Sample classification of MIT-BIH arrhythmia database
本研究主要針對正常、左束支傳導阻滯和右束支傳導阻滯3 種心電信號進行分類識別,3 種典型心電信號類型的心電圖如圖2 所示。
圖2 三種典型心電信號心電圖Fig.2 Three typical ECG
從圖2 可以看出,左束支傳導阻滯QRS 波群時限≥0.12 s,右束支傳導阻滯QRS 波群時限≥0.12 s,均比正常心電信號QRS 波群時限長;左束支傳導阻滯呈寬大,較深的S 波,右束支傳導阻滯S 波增寬且有切跡;左束支傳導阻滯和右束支傳導阻滯R 峰時間均比正常信號時間長[11]。
本研究利用小波多分辨率分析原理,在小波域上對心電信號去除基線漂移干擾,然后運用極大極小值過零點原理檢測R 波峰值,采用平面幾何法定位QS 波峰值, 在零基線附近定位QRS 波起止點,依據(jù)圖2 的分析,在108000 個采樣點中提取RR 間期,QRS 波間期和R 波,Q 波,S 波振幅5 個特征參數(shù)作為特征向量,每種心電類型100 組數(shù)據(jù),共300組樣本。
在本研究中, 選擇只有1 個隱含層的3 層BP神經(jīng)網(wǎng)絡(luò), 將心電信號提取的5 組特征值作為輸入;因此,網(wǎng)絡(luò)輸入層有5 個神經(jīng)元;隱含層神經(jīng)元數(shù)目的選擇往往需要根據(jù)設(shè)計者的經(jīng)驗和多次實驗來確定,本研究根據(jù)參考公式設(shè)置隱含層為10 個神經(jīng)元, 其中m 為輸出神經(jīng)元數(shù),n為輸入單元數(shù),a 為[1,10]之間的常數(shù);輸出層為3種心電信號類型的分類結(jié)果, 所以輸出層設(shè)置為3個神經(jīng)元;神經(jīng)網(wǎng)絡(luò)的輸出向量采樣“n”中取“1”法表示,即分別用001,010,100 表示正常,左束支傳導阻滯,右束支傳導阻滯類型。綜上所述,PSO-BP 網(wǎng)絡(luò)的拓撲結(jié)構(gòu)為5-10-3。
首先,初始化網(wǎng)絡(luò)中的參數(shù),選取正常、左束支傳導阻滯、右束支傳導阻滯共210 組樣本作為訓練樣本,另一部分作為測試樣本,對特征向量樣本歸一化處理,分別用BP 神經(jīng)網(wǎng)絡(luò)和PSO-BP 神經(jīng)網(wǎng)絡(luò)訓練樣本并仿真。 粒子適應(yīng)度是反應(yīng)粒子當前位置優(yōu)劣的一個參數(shù), 圖3 是粒子群的適應(yīng)度變化曲線,可以看出,隨著迭代次數(shù)的增加,適應(yīng)度值越來越小,與之相反,個體的適應(yīng)度會越來越高。
圖3 適應(yīng)度變化曲線Fig.3 Fitness curve
圖4和圖5 分別是BP 神經(jīng)網(wǎng)絡(luò)和PSO-BP 神經(jīng)網(wǎng)絡(luò)訓練過程中驗證樣本、測試樣本與訓練樣本的誤差曲線, 可以看出,BP 神經(jīng)網(wǎng)絡(luò)和PSO-BP 神經(jīng)網(wǎng)絡(luò)都能較好地對不同的心電信號類型分類,但是PSO-BP 神經(jīng)網(wǎng)絡(luò)的均方誤差更小, 分類精度更高;同時,由于粒子群算法具有更快的計算速度和更好的全局搜索能力,可以有效地避免陷入局部極值,因此PSO-BP 算法迭代次數(shù)更少,收斂速度更快。
圖4 BP 網(wǎng)絡(luò)訓練誤差Fig.4 BP network training error
圖5 PSO-BP 網(wǎng)絡(luò)訓練誤差Fig.5 PSO-BP network training error
BP 算法和PSO-BP 算法對心電信號的分類結(jié)果見表3,可以看出,相較于BP 算法,PSO-BP 算法分類效果更好,準確率達到了98.20%。
表3 兩種算法的分類結(jié)果Tab.3 Classification results of the two algorithms
本研究將粒子群算法用于BP 神經(jīng)網(wǎng)絡(luò), 并構(gòu)建PSO-BP 神經(jīng)網(wǎng)絡(luò)模型,實現(xiàn)對BP 神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值的優(yōu)化, 克服BP 訓練過程易陷入局部極小的缺陷;通過對比BP 神經(jīng)網(wǎng)絡(luò)和PSO-BP 神經(jīng)網(wǎng)絡(luò)對心電信號特征提取分類結(jié)果, 研究結(jié)果表明,基于PSO-BP 神經(jīng)網(wǎng)絡(luò)的心電信號分類方法比BP 神經(jīng)網(wǎng)絡(luò)分類精度更高,收斂速度更快,對于心電疾病的自動診斷具有較高的應(yīng)用價值。