羅嗣卿,李冰珂,王佳玉
(東北林業(yè)大學(xué) 信息與計(jì)算機(jī)工程學(xué)院,黑龍江 哈爾濱 150040)
尋找穩(wěn)定、精確的銷售量預(yù)測(cè)模型一直是國(guó)內(nèi)外研究者關(guān)注的焦點(diǎn),并且具有重要的意義。BP神經(jīng)網(wǎng)絡(luò)是常用的預(yù)測(cè)算法,傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)是通過(guò)梯度下降法[1]進(jìn)行學(xué)習(xí),隨機(jī)生成權(quán)值和閾值,如果這兩個(gè)初始參數(shù)選擇不當(dāng),網(wǎng)絡(luò)就會(huì)出現(xiàn)局部最優(yōu)或收斂速度慢等問(wèn)題,對(duì)此很多學(xué)者提出利用智能算法來(lái)優(yōu)化網(wǎng)絡(luò)的權(quán)值和閾值[1],比如布谷鳥搜索算法[2,3]、螢火蟲算法[4]、遺傳算法[5-7]等。為了更好地改善BP神經(jīng)網(wǎng)絡(luò)存在的問(wèn)題,本文提出用改進(jìn)的和聲算法來(lái)優(yōu)化BP神經(jīng)網(wǎng)絡(luò)。和聲算法是一種新的啟發(fā)式優(yōu)化算法[8],為了有效提高和聲算法性能,許多研究人員通過(guò)自適應(yīng)參數(shù)[9]、動(dòng)態(tài)調(diào)整[10]、智能調(diào)整(ITHS)[11]、混沌和聲[12]、引入變鄰域搜索[13]、差分進(jìn)化算法[14]等方法優(yōu)化HS算法[15],在前人研究的基礎(chǔ)上,為了使和聲算法能夠更大程度上優(yōu)化BP神經(jīng)網(wǎng)絡(luò),提出自適應(yīng)和聲算法與遺傳算法的混合算法(GA_HS)來(lái)優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值[16],能夠很好地改善了BP神經(jīng)網(wǎng)絡(luò)的易陷入局部最優(yōu)、收斂速度慢等缺點(diǎn)。最后,將GA_HS算法應(yīng)用到機(jī)票銷售量預(yù)測(cè)問(wèn)題中,建立對(duì)比模型完成實(shí)驗(yàn),檢驗(yàn)本文提出的算法模型預(yù)測(cè)效果。
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋網(wǎng)絡(luò)。網(wǎng)絡(luò)模型的拓?fù)浣Y(jié)構(gòu)包括輸入層、隱含層和輸出層。其中,三層網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)通過(guò)訓(xùn)練誤差反向傳播算法進(jìn)行訓(xùn)練,包括正向傳播和反向傳播兩個(gè)過(guò)程。下面具體介紹這兩個(gè)過(guò)程:
步驟1 正向傳遞子過(guò)程。設(shè)節(jié)點(diǎn)i和節(jié)點(diǎn)j之間的權(quán)值為wij,節(jié)點(diǎn)j的閾值為bj,xj為節(jié)點(diǎn)的輸出值,將其代入激活函數(shù)得到每個(gè)節(jié)點(diǎn)的輸出值。具體計(jì)算方法如下
(1)
xj=f(sj)
(2)
其中,f為激活函數(shù)。
步驟2 反向傳遞子過(guò)程。沿正向傳播的反方向調(diào)節(jié)各個(gè)神經(jīng)元的權(quán)值和閾值,最終達(dá)到期望值和預(yù)測(cè)值誤差最小。假設(shè)輸出層的所有結(jié)果為dj,誤差函數(shù)如下

(3)
由梯度下降法可知,權(quán)值的修正值與E(w,b)的梯度成正比,那么對(duì)于第j個(gè)輸出節(jié)點(diǎn)有

(4)
若選擇激活函數(shù)為
(5)
那么隱含層與輸出層之間的權(quán)值和閾值需要做如下調(diào)整

(6)

(7)
同理按照上述方法調(diào)整輸入層和隱含層之間的權(quán)值和閾值。
以上是BP神經(jīng)網(wǎng)絡(luò)全過(guò)程。網(wǎng)絡(luò)對(duì)初始參數(shù)值有較高要求,所以容易形成局部最優(yōu)而得不到全局最優(yōu)值。
和聲算法是一種新穎的啟發(fā)式全局搜索算法。由N個(gè)人組成一個(gè)樂(lè)隊(duì),每個(gè)人演奏一種樂(lè)器,他們演奏加起來(lái)對(duì)應(yīng)一組和聲,樂(lè)隊(duì)通過(guò)不斷排練得到最好和聲效果的過(guò)程中使用一個(gè)f(x)函數(shù)來(lái)衡量和聲的效果好壞,沒(méi)有得到滿意的和聲之前一直演奏,直到達(dá)到要求,這就是和聲算法的最優(yōu)化過(guò)程。具體算法步驟如下:
步驟1 確定初始化和聲算法的基本參數(shù)、所需優(yōu)化問(wèn)題的目標(biāo)函數(shù)以及約束條件。其中參數(shù)包括和聲庫(kù)大小(HM)、記憶庫(kù)取值概率(HMCR)、微調(diào)概率(PAR)、音調(diào)微調(diào)帶寬(bw)、創(chuàng)作的次數(shù)(Tmax)。
步驟2 確定解空間。有N個(gè)樂(lè)器,每個(gè)樂(lè)器都有一個(gè)確定的音樂(lè)演奏范圍,通過(guò)該范圍確定一個(gè)解空間。
步驟3 初始化和聲記憶庫(kù)。和聲記憶庫(kù)是根據(jù)解空間和初始化的和聲庫(kù)大小隨機(jī)產(chǎn)生。
步驟4 產(chǎn)生一個(gè)新和聲。隨機(jī)產(chǎn)生一個(gè)變量rand1(rand1∈[0,1])。并將rand1與初始化的HMCR進(jìn)行比較。若rand1>HMCR,從解空間中隨機(jī)選取一組和聲;rand1 步驟5 更新和聲庫(kù)。比較目標(biāo)函數(shù)值f(x),如果新和聲優(yōu)于初始化和聲庫(kù)HM中的最差解,那么和聲庫(kù)中最差的和聲將被新和聲替換掉。 步驟6 重復(fù)上面兩步過(guò)程,直到達(dá)到創(chuàng)作次數(shù)最大值。 遺傳算法是一種通過(guò)模擬自然進(jìn)化過(guò)程來(lái)搜索最優(yōu)解的方法,該算法在產(chǎn)生初始種群之后,按照適者生存和優(yōu)勝略汰的原理,根據(jù)具體問(wèn)題的適應(yīng)度值大小選擇較優(yōu)個(gè)體,并仿照遺傳學(xué)方法設(shè)置遺傳算子,然后完成對(duì)個(gè)體交叉和變異操作,更新種群。 本文提出的自適應(yīng)和聲算法與遺傳算法的混合算法(GA_HS),具體思想是先對(duì)HS算法進(jìn)行改進(jìn),使微調(diào)概率(PAR)和音調(diào)微調(diào)帶寬(bw)具有自適應(yīng)性,并在更新和聲種群過(guò)程中引入交叉、變異操作。然后利用GA_HS算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值,這樣不僅減小了網(wǎng)絡(luò)的訓(xùn)練誤差、也避免了網(wǎng)絡(luò)陷入局部最優(yōu)。具體優(yōu)化操作如下: (1)對(duì)HS算法中的PAR、bw參數(shù)作自適應(yīng)調(diào)整。HS算法的初始參數(shù)設(shè)置十分重要,如果選擇不當(dāng)則嚴(yán)重影響著算法搜索性能。傳統(tǒng)的HS算法初始化參數(shù)過(guò)程是將PAR、bw等參數(shù)設(shè)置為固定值,而GA_HS算法解決了參數(shù)選擇不當(dāng)給搜索過(guò)程帶來(lái)的誤差過(guò)大、收斂速度慢等問(wèn)題。GA_HS算法首先給bw和PAR設(shè)置一個(gè)較小的初始值,然后每次迭代根據(jù)適應(yīng)度值的大小(也就是BP神經(jīng)網(wǎng)絡(luò)的誤差值)反復(fù)調(diào)整這兩個(gè)參數(shù),最終使適應(yīng)度值達(dá)到最小,具體運(yùn)算步驟如下 f是適應(yīng)度值,bw0為bw的初始值,PAR0為PAR初始值。 (2)GA_HS算法在傳統(tǒng)的HS算法基礎(chǔ)上做出改進(jìn)。傳統(tǒng)和聲算法每次迭代是一次產(chǎn)生新和聲更新和聲庫(kù)的過(guò)程,該過(guò)程只對(duì)原和聲庫(kù)進(jìn)行了很小程度的更新,發(fā)現(xiàn)更優(yōu)種群的速度較慢并且容易陷入局部最優(yōu),而遺傳算法中所使用的交叉和變異操作可以解決這一問(wèn)題。本文提出的GA_HS算法,首先設(shè)置一定的交叉概率和變異概率,然后在每次更新種群的迭代過(guò)程中,增加遺傳算法的交叉、變異操作,使得算法更快找到更優(yōu)種群,不僅能夠保證了種群的多樣性,還可以防止算法陷入局部最優(yōu)和過(guò)早收斂。主要操作如下: 交叉操作: 其中,pc為交叉概率,pm為變異概率。 (3)傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)隨機(jī)生成權(quán)值和閾值,然后利用梯度下降法調(diào)整這兩個(gè)參數(shù),因此它具有陷入局部最優(yōu)、收斂速度慢等缺點(diǎn),本文首先采用GA_HS算法對(duì)網(wǎng)絡(luò)權(quán)值和閾值進(jìn)行優(yōu)化,優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的過(guò)程中適應(yīng)度函數(shù)的選取十分重要,由于訓(xùn)練網(wǎng)絡(luò)的每次迭代過(guò)程都是通過(guò)訓(xùn)練樣本誤差值大小來(lái)反復(fù)修改網(wǎng)絡(luò)的權(quán)值和閾值,所以本文提出的GA_HS算法選取BP神經(jīng)網(wǎng)絡(luò)的誤差函數(shù)作為適應(yīng)度函數(shù),通過(guò)反復(fù)迭代使得適應(yīng)度函數(shù)值達(dá)到最小,也就使得訓(xùn)練樣本的誤差值最小,從而得到最優(yōu)的初始權(quán)值和閾值,達(dá)到優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的目的。其次在建立模型時(shí)隱含層節(jié)點(diǎn)數(shù)設(shè)置和訓(xùn)練函數(shù)的選取兩方面也做了一定的改進(jìn),解決了傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)所存在的問(wèn)題,使其有更好的預(yù)測(cè)效果。 GA_HS算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)流程如圖2所示。 BP神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用十分廣泛的一種網(wǎng)絡(luò)模型。為了驗(yàn)證本文優(yōu)化方法的有效性,提取某城市的11個(gè)機(jī)票代售點(diǎn)的200天的銷售量為實(shí)驗(yàn)數(shù)據(jù),選取前185天的機(jī)票銷售量為訓(xùn)練樣本,最后15天為測(cè)試樣本,利用測(cè)試樣本中的前14天數(shù)據(jù)來(lái)預(yù)測(cè)最后一天的機(jī)票銷售量,對(duì)GA_HS算法、GA算法、HS算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)以及傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)分別建立模型,然后得出4種模型的預(yù)測(cè)值與真實(shí)值最終對(duì)比結(jié)果。實(shí)驗(yàn)?zāi)P筒捎脝坞[含層網(wǎng)絡(luò)結(jié)構(gòu),設(shè)置11個(gè)輸入層節(jié)點(diǎn),11個(gè)輸出層節(jié)點(diǎn)。另外,隱含層節(jié)點(diǎn)個(gè)數(shù)對(duì)網(wǎng)絡(luò)的性能有很大影響,節(jié)點(diǎn)數(shù)太少,則在預(yù)測(cè)過(guò)程中難以保證效果的準(zhǔn)確性,節(jié)點(diǎn)數(shù)太多,則在網(wǎng)絡(luò)訓(xùn)練過(guò)程會(huì)導(dǎo)致訓(xùn)練時(shí)間太長(zhǎng),預(yù)測(cè)效果不準(zhǔn)確等問(wèn)題。本文首先利用經(jīng)驗(yàn)公式確定隱含層節(jié)點(diǎn)數(shù)范圍,再將該范圍內(nèi)所有整數(shù)值代入實(shí)驗(yàn)?zāi)P瓦M(jìn)行適應(yīng)度值對(duì)比,通過(guò)實(shí)驗(yàn)對(duì)比可知當(dāng)選取10個(gè)隱含層節(jié)點(diǎn)時(shí),樣本均方誤差值最小。因此,模型設(shè)置10個(gè)隱含層節(jié)點(diǎn)數(shù)。經(jīng)驗(yàn)公式為 (8) 其中,h、m、n分別為隱含層、輸入層、輸出層節(jié)點(diǎn)數(shù),a為1~10之間的常數(shù)。 傳遞函數(shù)和訓(xùn)練函數(shù)的選擇也關(guān)系著模型的性能,因此選擇logsig、tansig函數(shù)分別作為輸入層和隱含層之間、隱含層和輸出層之間的傳遞函數(shù)。選取trainlm函數(shù)為訓(xùn)練函數(shù),該函數(shù)采用的訓(xùn)練方法是一種介于牛頓法和梯度下降法之間的非線性優(yōu)化方法,它對(duì)冗余參數(shù)問(wèn)題也能很好的處理,減小了代價(jià)函數(shù)陷入局部極小值的機(jī)會(huì)。當(dāng)λ很大時(shí),它的步長(zhǎng)接近牛頓法步長(zhǎng),當(dāng)λ很大時(shí),它的步長(zhǎng)接近梯度下降法步長(zhǎng)。因此,本文為了模型能夠達(dá)到更好的效果,選取trainlm函數(shù)作為訓(xùn)練函數(shù)。 傳統(tǒng)和聲算法參數(shù)設(shè)置主要包括以下幾個(gè),其中和聲庫(kù)大小為20,迭代次數(shù)為100,HMCR為0.75,PAR和bw設(shè)置為0.2。GA_HS算法設(shè)置PAR和bw初始值為0.02,交叉概率pc為0.75,變異概率pm為0.25。 模型的最終輸出結(jié)果為所有代售點(diǎn)最后一天的機(jī)票銷售量預(yù)測(cè)值,再與最后一天的真實(shí)值進(jìn)行對(duì)比,得出實(shí)驗(yàn)結(jié)果。分別建立傳統(tǒng)BP網(wǎng)絡(luò)(BP)、和聲算法優(yōu)化BP網(wǎng)絡(luò)(HS_BP)、遺傳算法優(yōu)化BP網(wǎng)絡(luò)(GA_BP)、遺傳算法和自適應(yīng)和聲算法的混合算法優(yōu)化BP網(wǎng)絡(luò)(GA_HS_BP)4種模型,用matlab編程語(yǔ)言編碼完成對(duì)比實(shí)驗(yàn)。 圖2 GA_HS_BP算法流程 在圖3中,通過(guò)3種GA、HS、GA_HS算法的適應(yīng)度值對(duì)比可知,遺傳算法的誤差較大。對(duì)比HS算法和GA_HS算法,GA_HS算法先將PAR和bw設(shè)置為一個(gè)較小的初始值,隨著不斷迭代尋找更優(yōu)種群,初始參數(shù)也不斷進(jìn)行自適應(yīng),得到更小適應(yīng)度值,因此當(dāng)?shù)螖?shù)較少時(shí),GA_HS算法比HS算法適應(yīng)度值大,但是隨著迭代次數(shù)增加,改進(jìn)的和聲搜索算法逐漸找到接近最優(yōu)種群的較優(yōu)種群,使得適應(yīng)度值突然減小,當(dāng)?shù)螖?shù)超過(guò)90次后,適應(yīng)度值達(dá)到很小,預(yù)測(cè)值更加逼近真實(shí)值。 圖3 GA、HS與GA_HS算法適應(yīng)度值對(duì)比 由表1對(duì)比結(jié)果可以看出,BP、GA_HS、HS_BP、GA_HS_BP這4種模型的均方根誤差值依次減小。本文提出的GA_HS算法得到的均方根誤差最小,因此它對(duì)機(jī)票銷售量的預(yù)測(cè)具有更高的準(zhǔn)確度。 表1 均方根誤差對(duì)比結(jié)果 在圖4中,可以看出GA_HS算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)實(shí)驗(yàn)最終得到的預(yù)測(cè)值與期望值的折線圖幾乎完全重合,但是由于銷售代理點(diǎn)的銷售量達(dá)到了上萬(wàn)級(jí),預(yù)測(cè)值與真實(shí)值的差值遠(yuǎn)遠(yuǎn)小于銷售量數(shù)值,所以通過(guò)圖4不能很直觀的表現(xiàn)出BP、GA_HS、HS_BP、GA_HS_BP這4種模型預(yù)測(cè)值與真實(shí)值對(duì)比的好壞程度。因此,通過(guò)spss軟件對(duì)4個(gè)模型的預(yù)測(cè)值和真實(shí)值作相關(guān)性分析。如表2~表5所示,可以直觀的看出,BP、GA_HS、HS_BP、GA_HS_BP這4種模型與真實(shí)值的相關(guān)性依次增大,其中GA_HS_BP模型預(yù)測(cè)結(jié)果最接近真實(shí)值。由此可知,本文提出的GA_HS算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)更為準(zhǔn)確。 圖4 4種模型預(yù)測(cè)值與真實(shí)值對(duì)比 相關(guān)性真實(shí)值BP真實(shí)值Pearson相關(guān)性10.733??顯著性(雙側(cè))0.000N1111BPPearson相關(guān)性0.733??1顯著性(雙側(cè))0.000N1111 注:**.在.01水平(雙側(cè))上顯著相關(guān)。 表3 GA_BP模型預(yù)測(cè)值與真實(shí)值相關(guān)性分析 注:**.在.01水平(雙側(cè))上顯著相關(guān)。 表4 HS_BP模型預(yù)測(cè)值與真實(shí)值相關(guān)性分析 注:**.在.01水平(雙側(cè))上顯著相關(guān)。 表5 GA_HS_BP模型預(yù)測(cè)值與真實(shí)值相關(guān)性分析 注:**.在.01水平(雙側(cè))上顯著相關(guān)。 本文利用自適應(yīng)和聲算法和遺傳算法的混合算法(GA_HS)改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)完成對(duì)機(jī)票銷售量的預(yù)測(cè)。由上面的仿真預(yù)測(cè)結(jié)果可知,GA_HS_BP模型明顯優(yōu)于GA_BP模型、HS_BP模型、BP模型的實(shí)驗(yàn)結(jié)果。但本文只是對(duì)于BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值這一方面進(jìn)行了優(yōu)化,其它方面也有很大的優(yōu)化空間,其它研究人員也可以提出更好的方法來(lái)優(yōu)化它的權(quán)值、閾值或者對(duì)其它角度優(yōu)化進(jìn)一步提高預(yù)測(cè)準(zhǔn)確率。3 改進(jìn)的和聲算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)


4 模型的建立以及預(yù)測(cè)結(jié)果分析
4.1 模型建立

4.2 實(shí)驗(yàn)結(jié)果分析







5 結(jié)束語(yǔ)