詹秀菊
(廣州中醫(yī)藥大學(xué)醫(yī)學(xué)信息工程學(xué)院,廣州 510006)
PSO算法主要思想來源于對鳥類行為的研究,因流程簡單、易于實現(xiàn)、參數(shù)少和無需梯度信息等特點,在解決各種復(fù)雜優(yōu)化問題時取得較好的成績,已經(jīng)被廣泛應(yīng)用于數(shù)據(jù)分類、模式識別和信號處理等方面。基于BP神經(jīng)網(wǎng)絡(luò)的銀屑病中醫(yī)證型預(yù)測模型,其拓撲結(jié)構(gòu)為34-6-1,經(jīng)MATLAB2015a仿真后,得到BP神經(jīng)網(wǎng)絡(luò)的3次平均預(yù)測準確率82.95%。本研究以銀屑病BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)為基礎(chǔ)引入PSO算法,利用PSO優(yōu)化BP神經(jīng)網(wǎng)絡(luò)初始權(quán)值和閾值,構(gòu)建新的銀屑病中醫(yī)證型預(yù)測模型。論文主要針對PSO-BP實現(xiàn)的過程、PSO參數(shù)選擇進行相關(guān)研究,以確定PSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型的性能。
粒 子 群 算 法(particle swarm optimization,PSO)是一種智能優(yōu)化算法,在算法中,每個優(yōu)化問題的解表示搜索空間中一個粒子的狀態(tài),目標函數(shù)計算的適應(yīng)度值代表每個粒子,粒子的速度決定它們飛翔的方向和距離。PSO優(yōu)化BP神經(jīng)網(wǎng)絡(luò)過程中,將每個最優(yōu)的粒子位置向量值賦予BP神經(jīng)網(wǎng)絡(luò)中的權(quán)值和閾值,每個粒子的維度可根據(jù)BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)計算而得到。粒子群的適應(yīng)函數(shù)可由神經(jīng)網(wǎng)絡(luò)各神經(jīng)元的均方誤差計算得到,根據(jù)適應(yīng)函數(shù)計算每個粒子的適應(yīng)值。本研究利用基本PSO算法和權(quán)重線性遞減的PSO算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,算法流程如圖1所示,其步驟可總結(jié)如下:
圖1 PSO-BP算法流程圖
(1)確定BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),確定神經(jīng)網(wǎng)絡(luò)各層的神經(jīng)元個數(shù)。
(2)初始化BP神經(jīng)網(wǎng)絡(luò)的參數(shù),確定種群的規(guī)模(popsize)以及最大迭代數(shù)(maxgen),初始化種群(pop)。
(3)計算每個粒子的適應(yīng)度值(fitness),存儲每個粒子的最好位置和適應(yīng)度值,并從種群中篩選出適應(yīng)度值最好的位置作為種群的位置。
(4)更新粒子的速度和位置。
(5)判斷粒子群優(yōu)化算法是否滿足終止條件,如果是,則停止迭代,并將每個粒子的個體最優(yōu)值和全局最優(yōu)值賦予BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值,使其獲得最優(yōu)權(quán)值和閾值;如果否,則返回步驟(3),繼續(xù)進行迭代。
(6)計算誤差,更新權(quán)值和閾值,檢查是否滿足條件,如果滿足,則輸出結(jié)果;如果不滿足,則重新計算誤差。
PSO算法的搜索能力取決于全局搜索能力和局部改良能力的平衡,在較大的程度上依賴于算法的參數(shù),如種群規(guī)模、最大速度、最大迭代數(shù)、慣性權(quán)重值和學(xué)習(xí)因子等。本論文主要針對慣性權(quán)重值和學(xué)習(xí)因子兩個參數(shù)進行研究。
慣性權(quán)重作為PSO算法最為重要的參數(shù)之一,分為固定權(quán)重和時變權(quán)重。固定權(quán)重是在整個優(yōu)化迭代過程中保持不變的常數(shù)權(quán)重值;時變權(quán)重是在迭代過程中按照一定的規(guī)律變化的權(quán)重值。慣性權(quán)重使粒子保持運動慣性,進而有擴展搜索空間的趨勢以及探索新區(qū)域的能力。慣性權(quán)重值較小時具有較強的局部收斂能力,較大時具有較強的全局收斂能力,因此設(shè)置合適的慣性權(quán)重值能改善PSO算法的性能。本研究先比較不同固定慣性權(quán)重值時,PSO算法的性能,選出最優(yōu)固定慣性權(quán)重。再將最優(yōu)固定慣性權(quán)重值和時變慣性權(quán)重值引入PSO算法中,比較兩者對PSO算法的影響。
PSO算法的參數(shù)最大迭代數(shù)設(shè)置為200,種群規(guī)模為40,粒子的速度區(qū)間設(shè)置為[-1,1],位置區(qū)間設(shè)置為[-3,3]。學(xué)習(xí)因子和暫設(shè)置為2,設(shè)置固定慣性權(quán)重值分別為0、0.7和1.4。經(jīng)MATLAB2015a仿真,結(jié)果如圖2所示。
圖2 不同參數(shù)的PSO算法適應(yīng)曲線
從圖2可以看出,當?shù)螖?shù)為60左右、慣性權(quán)重值為0時,PSO算法的適應(yīng)度值趨向于一個穩(wěn)定值,在之后迭代中基本沒有變化,慣性權(quán)重值為0.7的PSO算法性能優(yōu)于為1.4;隨著迭代的進行,PSO算法的適應(yīng)度值一直在減少,直到迭代次數(shù)為200時,慣性權(quán)重為1.4的PSO算法適應(yīng)度優(yōu)于為0.7。由此可推出,當為0、迭代次數(shù)為60時,PSO算法陷入局部最優(yōu),隨著迭代次數(shù)增加,不能擺脫早熟現(xiàn)象,從數(shù)學(xué)公式方面解釋,因慣性權(quán)重為0,粒子的慣性行為為零,粒子運動速度由粒子的“認知”行為和粒子的“社會”行為決定,影響粒子不具備全局收斂能力。為0.7和1.4時,有效改善該缺陷,增加慣性權(quán)重值,使得PSO算法不易陷入局部最優(yōu),提高算法的性能。從精度的角度考慮,固定慣性權(quán)重值暫定為1.4。
針對PSO算法的早熟問題,引入線性變化的權(quán)重,讓慣性權(quán)重從最大值0.9線性減少到最小值0.4,實現(xiàn)權(quán)重線性遞減的PSO算法(SAPSO),之后與固定權(quán)重值為1.4的基本PSO算法對比,結(jié)果如圖3所示。當?shù)螖?shù)為200時,SAPSO算法適應(yīng)度值和固定慣性權(quán)重值為1.4的基本PSO算法處于最優(yōu)狀態(tài),從圖3可以看出,SAPSO算法在收斂方面和精度方面優(yōu)于PSO算法。由此可推斷,PSO算法加入線性變化的權(quán)重,可以調(diào)節(jié)算法的全局和局部搜索能力,有效克服PSO陷入早熟現(xiàn)象,提高PSO算法的性能。因此,本文以加入線性變化的權(quán)重PSO算法為基礎(chǔ)進行研究。
圖3 SAPSO算法和PSO算法適應(yīng)曲線
學(xué)習(xí)因子是影響PSO算法性能的參數(shù),學(xué)習(xí)因子和分別調(diào)節(jié)粒子向個體最優(yōu)和群體最優(yōu)的方向的最大步長,決定粒子個體經(jīng)驗和群體經(jīng)驗對粒子自身運行軌跡的影響。當學(xué)習(xí)因子過小時,可能使粒子遠離目標區(qū)域;當學(xué)習(xí)因子較大時,可能使得粒子快速向目標區(qū)域移動,甚至越過目標區(qū)域。本研究設(shè)置不同學(xué)習(xí)因子,比較結(jié)果對性能的影響。
慣性權(quán)重設(shè)置為=0.9-*(0.9-0.5)/max,最大迭代數(shù)設(shè)置為200,種群規(guī)模為40,粒子的速度區(qū)間設(shè)置為[-1,1],位置區(qū)間設(shè)置為[-3,3]。學(xué)習(xí)因子和設(shè)置為兩種組 合:==2,==0.5+log(2),經(jīng)Matlab 2015a仿真,結(jié)果如圖4所示。
圖4 不同學(xué)習(xí)因子PSO算法適應(yīng)曲線
從圖4可以看出,學(xué)習(xí)因子對PSO性能有影響。當?shù)螖?shù)為60左右時,學(xué)習(xí)因子==0.5+log(2)的PSO算法進入穩(wěn)定狀態(tài),取得最優(yōu)適應(yīng)度值。而學(xué)習(xí)因子==2的PSO算法在迭代次數(shù)為10左右時快速進入目標區(qū)域,隨著迭代的進行,當?shù)螖?shù)為180左右時,粒子飛躍出目標區(qū)域,進入新的最優(yōu)狀態(tài)。由此可推斷,學(xué)習(xí)因子較大時,粒子迅速向目標區(qū)域移動,隨著迭代次數(shù)增加,越過目標區(qū)域。學(xué)習(xí)因子==0.5+log(2)的PSO算法在收斂方面和精度方面優(yōu)于學(xué)習(xí)因子==2,因此PSO算法中學(xué)習(xí)因子設(shè)置為0.5+log(2)。
PSO算法的慣性權(quán)重采用=0.9-*(0.9-0.5)/max,學(xué)習(xí)因子和分別為0.5+log(2),最大迭代數(shù)設(shè)置為200,種群規(guī)模為40,粒子的速度區(qū)間設(shè)置為[-1,1],位置區(qū)間設(shè)置為[-3,3]。因BP神經(jīng)網(wǎng)絡(luò)的拓撲結(jié)構(gòu)為34-6-1,所以粒子維數(shù)為217(34×6+6+6×1+1),權(quán)值的個數(shù)為210(34×6+6×1),閾值個數(shù)7(6+1),基于此構(gòu)建PSO-BP預(yù)測模型。與BP神經(jīng)網(wǎng)絡(luò)中醫(yī)證候模型操作相同,將訓(xùn)練好的樣本數(shù)據(jù)輸入PSO-BP神經(jīng)網(wǎng)絡(luò)證候預(yù)測模型,用Matlab 2015進行3次仿真,得出預(yù)測模型的3次準確率分別為87.5%、82.95%和85.22%?,F(xiàn)以第一次仿真結(jié)果進行說明,如圖5所示,隨迭代次數(shù)的不斷增加,粒子的適應(yīng)度值逐漸變小,反之,個體的適應(yīng)度值也會增加。當粒子的迭代次數(shù)為200時,粒子的最優(yōu)適應(yīng)度值為9.8。PSO-BP網(wǎng)絡(luò)證型預(yù)測模型的實際值和預(yù)測值如圖6所示,其中星號實線代表證型的實際值,圓虛線代表預(yù)測值。從圖6可以看出,證型的實際值與預(yù)測值大部分重合。PSO-BP證候預(yù)測模型輸出的結(jié)果中有77個預(yù)測值與實際值相等,其準確率為87.5%。結(jié)果表明,PSO算法對BP神經(jīng)網(wǎng)絡(luò)性能具有一定的優(yōu)化作用,驗證PSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型在銀屑病研究中是可行的。
圖5 PSO適應(yīng)度曲線
圖6 證型的預(yù)測值和實際值曲線
基于BP神經(jīng)網(wǎng)絡(luò)、PSO-BP神經(jīng)網(wǎng)絡(luò)構(gòu)建的銀屑病中醫(yī)證型預(yù)測模型,其平均準確率分別為82.95%和85.22%,結(jié)果表明兩種預(yù)測模型可應(yīng)用于銀屑病中醫(yī)證型研究。BP神經(jīng)網(wǎng)絡(luò)實質(zhì)上是梯度下降法,其所優(yōu)化的問題又非常復(fù)雜,因此會出現(xiàn)“鋸齒形現(xiàn)象”,從而導(dǎo)致BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速度慢。從數(shù)學(xué)的角度看,BP神經(jīng)網(wǎng)絡(luò)為一種局部搜索的優(yōu)化方式,因此在求解復(fù)雜非線性問題的全局極值時易陷入局部極值。實驗結(jié)果表明,PSO算法具有較快的逼近最優(yōu)解的速度,對BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值進行優(yōu)化,克服BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)慢的缺陷,提高BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型的準確率。