何曉云,許江淳,陳文緒
(昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院,云南 昆明 650500)
近年來(lái),反向傳播(back propagation,BP)算法已經(jīng)成為機(jī)器學(xué)習(xí)理論中應(yīng)用較為廣泛的網(wǎng)絡(luò)之一[1]。該算法采用誤差反向傳播的負(fù)梯度下降法,具有較好的非線性函數(shù)、自組織能力和泛化能力的特點(diǎn),為良好預(yù)測(cè)能力奠定了基礎(chǔ)。但BP算法在預(yù)測(cè)中存在過(guò)度擬合[2]、預(yù)測(cè)精度不高的問(wèn)題,當(dāng)擬合精度越高,預(yù)測(cè)準(zhǔn)確率就越低,即泛化能力差。其主要原因是:傳統(tǒng)的BP算法每次訓(xùn)練的權(quán)值、閾值都不一樣,存在隨機(jī)性;然而,權(quán)值和閾值對(duì)于BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)能力有很大的影響[3]。為了解決這一問(wèn)題,國(guó)內(nèi)外許多研究者提出了改進(jìn)的方法。例如:Srivastava N[4]證明了加入隨機(jī)噪聲的數(shù)據(jù)集會(huì)使神經(jīng)網(wǎng)絡(luò)的擬合性能變差,從而可提高泛化能力;防止對(duì)網(wǎng)絡(luò)學(xué)習(xí)過(guò)度是更有效的方法,即在樣本數(shù)據(jù)中添加正則項(xiàng)。王林[5]針對(duì)BP算法的權(quán)值和閾值隨機(jī)化、容易陷入局部收斂的特點(diǎn),設(shè)計(jì)了一種優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的自適應(yīng)差分進(jìn)化算法,避免了部分過(guò)擬合現(xiàn)象,但增大了算法的復(fù)雜度。
以上研究者提出的成果對(duì)于改進(jìn)BP算法泛化能力的力度不大,導(dǎo)致BP算法預(yù)測(cè)模型在應(yīng)用時(shí)出現(xiàn)其他問(wèn)題[6]。因此,本文提出了一種基于混沌量子粒子群優(yōu)化的BP(chaotic quantum particle swarm optimization BP,CQPSO-BP)算法。量子粒子群優(yōu)化算法是用混沌序列來(lái)初始化種群的初始角[7],針對(duì)粒子群算法的早熟收斂,引入了變異操作,提高了全局優(yōu)化能力,從而優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值、閾值。然后將它與BP算法結(jié)合,形成一種新的算法——混沌量子粒子群BP算法。最后,通過(guò)與改進(jìn)的附加動(dòng)量法和BP神經(jīng)網(wǎng)絡(luò)作對(duì)比,利用不同的數(shù)據(jù)集進(jìn)行預(yù)測(cè)試驗(yàn),將準(zhǔn)確率、均方誤差(mean square error,MSE)、均方百分比誤差(mean square percent error,MSPE)作為評(píng)價(jià)指標(biāo)[8]。試驗(yàn)結(jié)果表明:CQPSO-BP算法在預(yù)測(cè)精度、收斂速度、準(zhǔn)確率等方面,相對(duì)于傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)和改進(jìn)的附加動(dòng)量法等算法有較明顯的優(yōu)勢(shì)。
BP神經(jīng)網(wǎng)絡(luò)是一種多層饋型網(wǎng)絡(luò)[9],主要依靠輸入信號(hào)的正向傳播和誤差的反向傳播,不斷調(diào)試網(wǎng)絡(luò)的權(quán)值和閾值,達(dá)到優(yōu)化網(wǎng)絡(luò)的目的。訓(xùn)練方法采用的是最速下降法traingd。
全局誤差函數(shù)為[9]:
(1)
①網(wǎng)絡(luò)初始化。設(shè)置BP網(wǎng)絡(luò)神經(jīng)元之間的連接權(quán)值Wij、Wjk,確定網(wǎng)絡(luò)輸入層節(jié)點(diǎn)n個(gè)、隱含層節(jié)點(diǎn)數(shù)l個(gè)、輸出層節(jié)點(diǎn)數(shù)m個(gè),以及隱含層和輸出層的閾值α[a1,a2,…,al]和b[b1,b2,…,bm]。
②計(jì)算隱含層的輸出。
(2)
式中:f為激勵(lì)函數(shù);xi為輸入變量。
③計(jì)算輸出層的輸出。
(3)
④更新權(quán)值。
ωij(t+1)=ωij(t)+η[(1-β)D(t)+
βD(t-1)]i=1,2,…,n
(4)
ωjk(t+1)=ωjk(t)+η[(1-β)D′(t)+βD′(t-1)]
(5)
⑤更新閾值。
(6)
bk(t+1)=bk(t)+(yk-ok)
(7)
⑥判斷網(wǎng)絡(luò)訓(xùn)練的誤差是否達(dá)到要求。若它達(dá)到期望的要求或設(shè)置的學(xué)習(xí)次數(shù)已用完,就結(jié)束網(wǎng)絡(luò)的訓(xùn)練;否則,返回步驟②。
傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)存在收斂速度慢的問(wèn)題。這主要是因?yàn)閮?yōu)化權(quán)值時(shí),只根據(jù)某一時(shí)刻的負(fù)梯度方向進(jìn)行修正,沒(méi)有考慮以前的修正經(jīng)驗(yàn)。這里引入了動(dòng)量因子的方法。當(dāng)權(quán)值陷入局部最小值時(shí),會(huì)產(chǎn)生一個(gè)繼續(xù)向前運(yùn)動(dòng)的正向斜率。附加動(dòng)量法的改進(jìn)不僅考慮了誤差在梯度方向的作用[10],還考慮了誤差曲面變化的趨勢(shì)。修正公式如下:
Δωij(n)=αΔωij(n-1)+(1-α)ηΔf[ωij(n-1)]
(8)
式中:Δωij(n)為權(quán)值修正量,且已經(jīng)加入了修改的記憶方向;η為學(xué)習(xí)速率;n為訓(xùn)練次數(shù);α為動(dòng)量因子,取值一般是0.1~0.8。
在BP算法中,提出了動(dòng)量因子的改進(jìn)后,可以有效改變網(wǎng)絡(luò)訓(xùn)練的步長(zhǎng)η,而不再是一個(gè)固定的值;同時(shí),也可以改變修正權(quán)值的方向,即加入了一個(gè)擾動(dòng),有自動(dòng)調(diào)節(jié)著步長(zhǎng)的作用,可以向著平均的方向改變,從而不會(huì)產(chǎn)生太大的波動(dòng),并使誤差變小??傊?,引入動(dòng)量項(xiàng)可以加快網(wǎng)絡(luò)收斂速度,提高了預(yù)測(cè)的準(zhǔn)確性。但是,其收斂速度相對(duì)還是太慢,預(yù)測(cè)效果存在一定的誤差。所以本文提出了混沌量子粒子群算法,以提高算法預(yù)測(cè)風(fēng)速的準(zhǔn)確性。
量子粒子群(quantum particle swarm optimization,QPSO)算法容易陷入早熟收斂,即當(dāng)一個(gè)粒子發(fā)現(xiàn)一個(gè)最優(yōu)位置時(shí),其他的粒子就會(huì)迅速向它靠攏。如果這個(gè)位置只是局部最優(yōu)點(diǎn),則算法就陷入了局部最優(yōu),出現(xiàn)早熟收斂。在QPSO算法中,對(duì)粒子的位置采用量子位的概率幅進(jìn)行編碼,如式(9)所示:
(9)
式中:θ=2π×random,rondom為[0,1]之間的隨機(jī)數(shù);i=1,2,…,n,n為種群數(shù)量;j=1,2,…,B,B為空間的維數(shù)。
粒子的位置移動(dòng)按式(10)更新:
Δθij(k+1)=ωΔθij(k)+η1r1(Δθ1)+η2r2(Δθf(wàn))
(10)
式中:ω為慣性權(quán)重;η1、η2為學(xué)習(xí)因子;r1、r2為隨機(jī)數(shù);Δθij為粒子在第j維的相位變化量;Δθ1為個(gè)體最優(yōu)的相位變化量;Δθf(wàn)為整個(gè)算法最優(yōu)的相位變化量。
(11)
(12)
慣性權(quán)重ω的調(diào)整公式為:
(13)
式中:ωmax、ωmin分別為權(quán)值的最大值、最小值。
由于量子粒子群算法容易使粒子陷入早熟收斂,所以采用量子非門來(lái)加入變異操作,增加種群的遍歷性:
(14)
本文針對(duì)QPSO算法的遍歷性有限、容易陷入早熟收斂的特點(diǎn),采用混沌的遍歷性和隨機(jī)性來(lái)彌補(bǔ),即混沌量子粒子群優(yōu)化(chaotic quantum particle swarm optimization,CQPSO)算法。該算法利用隨機(jī)性產(chǎn)生B個(gè)參數(shù)(θ1,θ2,…,θB),然后產(chǎn)生運(yùn)動(dòng)軌跡。每一個(gè)軌跡有n個(gè)序列,形成n×B個(gè)初始角。根據(jù)Logistic映射形成的混沌序列為:
x(k+1)=μx(k)[1-x(k)]
(15)
式中:x為混沌變量,x?(0,1)且x≠0.25、0.5、0.75;μ為控制參數(shù)。
由于輸入變量和輸出變量的量綱不統(tǒng)一,為了減小網(wǎng)絡(luò)的誤差,歸一化的計(jì)算是必要的。它可以使數(shù)據(jù)之間的關(guān)系更容易體現(xiàn),則預(yù)測(cè)的風(fēng)速更準(zhǔn)確。這里采用最大值最小值法,使所有變量限定在[0,1]之間。
為了驗(yàn)證CQPSO-BP算法預(yù)測(cè)能力的有效性,共選擇3組不同維度的屬于工業(yè)、教育和商業(yè)等行業(yè)的公開的數(shù)據(jù)集。運(yùn)行在Windows10,8.00 GB內(nèi)存,Inter(R) Core(TM) i7-8550U CPU @ 1.80 GHz環(huán)境下,基于Matlab R2019a中完成。
為了評(píng)價(jià)本文建立的3種模型的預(yù)測(cè)性能,預(yù)測(cè)正確率至關(guān)重要。預(yù)測(cè)的準(zhǔn)確率越高,誤差越小,算法預(yù)測(cè)性能越好。本文選擇準(zhǔn)確率和3種評(píng)價(jià)指標(biāo)來(lái)評(píng)價(jià)3種模型的預(yù)測(cè)性能,分別是準(zhǔn)確率、MSE和MSPE。計(jì)算公式如下:
(16)
(17)
式中:N為測(cè)試樣本個(gè)數(shù);αi為第i個(gè)測(cè)試樣本的實(shí)際值;βi為第i個(gè)測(cè)試樣本的預(yù)測(cè)值。
CQPSO-BP算法的主要流程如下。首先,輸入樣本數(shù)據(jù),初始化種群的規(guī)模和變量數(shù)量,生成混沌初始化種群。其次,根據(jù)輸入變量的個(gè)數(shù),決定BP網(wǎng)絡(luò)的結(jié)構(gòu),并初始化適應(yīng)度值——即用 CQPSO-BP算法的粒子位置向量編碼BP算法的權(quán)值和閾值中的相關(guān)參數(shù),評(píng)價(jià)函數(shù)為網(wǎng)絡(luò)的均方誤差的倒數(shù),以計(jì)算出網(wǎng)絡(luò)的最優(yōu)適應(yīng)度值。再次,評(píng)價(jià)最優(yōu)適應(yīng)度值,判斷有沒(méi)有達(dá)到要求的精度或最大迭代次數(shù)。如果達(dá)到,則獲得最優(yōu)的權(quán)值、閾值。最后,判斷網(wǎng)絡(luò)誤差是否滿足預(yù)設(shè)要求,滿足則輸出預(yù)測(cè)值,不滿足則算法繼續(xù)迭代。同理,如果最優(yōu)適度值沒(méi)有達(dá)到要求,則算法繼續(xù)迭代,直到達(dá)到預(yù)設(shè)要求為止。
CQPSO-BP算法流程如圖1所示。
圖1 CQPSO-BP算法流程圖
本文的數(shù)據(jù)來(lái)源于公開的、不同維度的數(shù)據(jù)集。在工業(yè)領(lǐng)域中,本文選擇電力負(fù)荷的公開數(shù)據(jù)集,根據(jù)系統(tǒng)的運(yùn)行特性、自然條件和社會(huì)影響等,預(yù)測(cè)未來(lái)某一時(shí)刻的負(fù)荷數(shù)據(jù)。該數(shù)據(jù)集維度是3。在教育領(lǐng)域中,選擇從印度的角度預(yù)測(cè)研究生入學(xué)率的數(shù)據(jù)集,入學(xué)率就是被承認(rèn)的機(jī)會(huì),影響因素有GRE分?jǐn)?shù)、托福成績(jī)、大學(xué)評(píng)級(jí)、SOP、LOR、CGPA、研究成果,該數(shù)據(jù)集維度是7;在商業(yè)領(lǐng)域中,選擇某商店中葡萄酒質(zhì)量的樣本數(shù)據(jù)集,影響的因素有顏色、溫度、葡萄品種、土壤等,該數(shù)據(jù)集維度是11。三個(gè)數(shù)據(jù)集分別有1 200組、960組、1 020組數(shù)據(jù),選擇其中的200組、80組、60組數(shù)據(jù)作為測(cè)試樣本。
在BP神經(jīng)網(wǎng)絡(luò)中,預(yù)測(cè)模型的每個(gè)神經(jīng)元對(duì)應(yīng)的作用函數(shù)為Sigmoid型函數(shù),隱含層的作用函數(shù)為S型正切函數(shù)tansig,輸出層的作用函數(shù)采用S型對(duì)數(shù)函數(shù)logsig。在網(wǎng)絡(luò)中,訓(xùn)練的最大次數(shù)為1 000;訓(xùn)練要求的精度為1e-3;訓(xùn)練的學(xué)習(xí)速率為0.01。
本文中的輸入變量根據(jù)維度選取,所以輸入層設(shè)置為維度個(gè)數(shù),根據(jù)Kolmogorov定理,網(wǎng)絡(luò)中間層的神經(jīng)元可取(2n+1)個(gè),n為輸入層神經(jīng)元(維度),輸出變量有1個(gè),所以輸出層個(gè)數(shù)為1個(gè)?;煦缌孔恿W尤核惴ǖ姆N群規(guī)模為20,最大迭代次數(shù)為60,慣性權(quán)重ωmax=0.9、ωmin=0.6,控制參數(shù)μ=0.36,學(xué)習(xí)因子c1=c2=2,變異概率為0.05。在Matlab平臺(tái)上建立3種算法模型,然后分別仿真輸出3種模型在電力負(fù)荷、研究生入學(xué)率、葡萄酒質(zhì)量等級(jí)的預(yù)測(cè)結(jié)果對(duì)比。
電力負(fù)荷預(yù)測(cè)和實(shí)際電力負(fù)荷對(duì)比圖、研究生入學(xué)率預(yù)測(cè)和實(shí)際入學(xué)率對(duì)比圖、葡萄酒質(zhì)量預(yù)測(cè)和實(shí)際葡萄酒質(zhì)量對(duì)比圖,分別如圖2、圖3、圖4所示。
圖2 電力負(fù)荷預(yù)測(cè)和實(shí)際電力負(fù)荷對(duì)比圖
圖3 研究生入學(xué)率預(yù)測(cè)和實(shí)際入學(xué)率對(duì)比圖
Fig.3 Comparison of graduate enrollment rate prediction and actual enrollment rate
圖4 葡萄酒質(zhì)量預(yù)測(cè)和實(shí)際葡萄酒質(zhì)量對(duì)比圖
從圖2~圖4可以直觀地看到,相比于傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)和改進(jìn)的附加動(dòng)量法,CQPSO-BP算法的預(yù)測(cè)效果有較明顯的優(yōu)勢(shì),而BP算法的預(yù)測(cè)效果是相對(duì)較差的。CQPSO-BP算法有較強(qiáng)的抗過(guò)擬合能力。3種模型在訓(xùn)練方法上都有所不同,預(yù)測(cè)的精度都不同。電力負(fù)荷預(yù)測(cè)的維度是3,研究生入學(xué)率預(yù)測(cè)的維度是7,葡萄酒質(zhì)量預(yù)測(cè)的維度是11。在不同維度下,相同算法預(yù)測(cè)精度也不同。因?yàn)閿?shù)據(jù)的不同,會(huì)影響預(yù)測(cè)效果。但CQPSO-BP算法的預(yù)測(cè)效果都是相對(duì)較好的,說(shuō)明CQPSO-BP算法適用于預(yù)測(cè)模型。
表1 3種算法的預(yù)測(cè)性能對(duì)比分析
表1中:準(zhǔn)確率最大值為98.52%;MSE最小值為0.006 4;MSPE最小值為0.009 7。這3個(gè)評(píng)價(jià)指標(biāo)的最優(yōu)值都是在CQPSO-BP算法訓(xùn)練時(shí)取得。又因?yàn)殡娏ω?fù)荷數(shù)據(jù)集的預(yù)測(cè)效果相對(duì)較好,預(yù)測(cè)值基本跟蹤實(shí)際值,準(zhǔn)確率最高。因此,選擇這一組數(shù)據(jù)集來(lái)分析3種算法的的訓(xùn)練誤差變化。誤差曲線如圖5所示。
圖5 3種算法的訓(xùn)練誤差曲線圖
從圖5可以直觀地看到,在電力負(fù)荷的預(yù)測(cè)模型中,當(dāng)?shù)螖?shù)最大值設(shè)為1 000時(shí),BP算法的誤差曲線圖總體下降得較慢;在200步時(shí)開始更緩慢地下降;在1 000步時(shí)還沒(méi)有收斂。通過(guò)附加動(dòng)量法的BP算法改進(jìn)后,該算法訓(xùn)練誤差曲線圖開始下降得較快,整體的訓(xùn)練誤差比BP算法更接近預(yù)設(shè)要求。CQPSO-BP算法的訓(xùn)練誤差相對(duì)下降得較快,在接近940步時(shí)達(dá)到收斂,完成訓(xùn)練,且此時(shí)誤差達(dá)到預(yù)設(shè)要求為0.001。因此,CQPSO-BP算法的收斂速度最快,誤差相對(duì)較小。
本文針對(duì)傳統(tǒng)BP算法存在的過(guò)度擬合和預(yù)測(cè)精度不高的問(wèn)題,提出了一種混沌量子粒子群BP算法。該算法將CQPSO算法與BP算法相結(jié)合,提高了種群的遍歷性。用混沌序列初始化粒子的初始角位置,并引入變異操作,避免網(wǎng)絡(luò)進(jìn)入早熟收斂,從而對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行優(yōu)化。通過(guò)與附加動(dòng)量法的BP算法和傳統(tǒng)的BP算法進(jìn)行對(duì)比,證明了CQPSO-BP算法的預(yù)測(cè)效果相對(duì)附加動(dòng)量法和BP神經(jīng)網(wǎng)絡(luò)有明顯的優(yōu)勢(shì),也說(shuō)明了CQPSO-BP算法有抗過(guò)擬合能力。在測(cè)試階段,準(zhǔn)確率、MSE、MSPE的最優(yōu)值都是在CQPSO-BP算法訓(xùn)練時(shí)取得的。CQPSO-BP算法模型是適用于研究預(yù)測(cè)問(wèn)題的一種模型,具有實(shí)際應(yīng)用價(jià)值。