鄔希可
(華南理工大學(xué)工商管理學(xué)院 廣州 510000)
神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的基礎(chǔ),是以人腦中的神經(jīng)網(wǎng)絡(luò)作為啟發(fā),由大量的神經(jīng)元相互連接,模仿生物學(xué)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和功能的數(shù)學(xué)模型和計(jì)算模型。神經(jīng)網(wǎng)絡(luò)包括多種算法,其中BP神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)之一,主要是按照誤差逆向傳播算法訓(xùn)練的多層前饋網(wǎng)絡(luò),可以有效學(xué)習(xí)和存貯大量的輸入-輸出模式映射關(guān)系,而無(wú)需事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程,可以有效地應(yīng)用于預(yù)測(cè)過(guò)程中。
分析目前專家學(xué)者對(duì)BP神經(jīng)網(wǎng)絡(luò)的研究可知,文獻(xiàn)[1~4]將BP神經(jīng)網(wǎng)絡(luò)中的學(xué)習(xí)率調(diào)整為自適應(yīng)的結(jié)構(gòu),以此加快網(wǎng)絡(luò)的收斂速度,主要是在傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)算法上對(duì)時(shí)變過(guò)程參數(shù)的神經(jīng)元網(wǎng)絡(luò)進(jìn)行改進(jìn),但對(duì)算法的局部最小問(wèn)題和預(yù)測(cè)效果方面考慮的較少。文獻(xiàn)[5]提出最佳學(xué)習(xí)因子引入BP神經(jīng)網(wǎng)絡(luò)算法中,提升算法在執(zhí)行過(guò)程中的收斂速度,達(dá)到減少網(wǎng)絡(luò)訓(xùn)練步驟的目的,但是此種研究對(duì)算法執(zhí)行中的極小點(diǎn)問(wèn)題沒(méi)有解決,而且改進(jìn)較局限,并且在預(yù)測(cè)應(yīng)用中效果不理想。文獻(xiàn)
[6~7]利用極限學(xué)習(xí)機(jī)的方法增加結(jié)構(gòu)型反饋網(wǎng)絡(luò),使得算法的學(xué)習(xí)速度加快,以致提升算法的預(yù)測(cè)效率,但是對(duì)預(yù)測(cè)精度考慮的較少,而且如果數(shù)據(jù)輸入過(guò)多,仍然會(huì)造成算法執(zhí)行過(guò)慢的現(xiàn)象。部分文獻(xiàn)[8~10]針對(duì)BP神經(jīng)網(wǎng)絡(luò)算法的隱含層進(jìn)行改進(jìn),改進(jìn)隱含層選權(quán)重的過(guò)程,提升算法的執(zhí)行效率,從而實(shí)現(xiàn)預(yù)測(cè)效率的提升。
綜上所述,目前對(duì)神經(jīng)網(wǎng)絡(luò)算法中的BP神經(jīng)網(wǎng)絡(luò)算法研究較多,可利用BP神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)預(yù)測(cè)的目的,但是目前對(duì)BP神經(jīng)網(wǎng)絡(luò)算法的改進(jìn)有局限性,對(duì)網(wǎng)絡(luò)參數(shù)的考慮較少,對(duì)算法預(yù)測(cè)的效率和精度的提升效果不強(qiáng)。
BP神經(jīng)網(wǎng)絡(luò)是由三層及以上的網(wǎng)絡(luò)構(gòu)成的,每層網(wǎng)絡(luò)都含有許多的神經(jīng)元,網(wǎng)絡(luò)中的左側(cè)和右側(cè)神經(jīng)元相連即可構(gòu)成復(fù)雜的神經(jīng)網(wǎng)絡(luò)[11~13]。BP神經(jīng)網(wǎng)絡(luò)包括輸入層、隱含層、輸出層,原始的數(shù)據(jù)利用輸入層輸入,經(jīng)過(guò)隱含層的處理,將結(jié)果傳送到輸出層,輸出層再利用誤差反傳的方式對(duì)網(wǎng)絡(luò)的參數(shù)權(quán)重進(jìn)行調(diào)節(jié),最終使得輸入值和期望值相接近[14~15]。輸出層再通過(guò)誤差反傳的方式調(diào)節(jié)不同參數(shù)的權(quán)重,進(jìn)而使輸入值更逼近期望值,實(shí)現(xiàn)不斷對(duì)神經(jīng)網(wǎng)絡(luò)調(diào)節(jié)的目的,但是傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法隱含層權(quán)值的選取存在不完善的地方,會(huì)影響算法的預(yù)測(cè)效率和精確度。
BP神經(jīng)網(wǎng)絡(luò)算法主要為以下步驟:
Step1:確定模型參數(shù);
Step2:確定模型的輸入量和期望輸出量;
Step3:訓(xùn)練網(wǎng)絡(luò),設(shè)定訓(xùn)練次數(shù),計(jì)算各層的輸入;
Step4:反向計(jì)算訓(xùn)練誤差,修正權(quán)值和閾值,計(jì)算誤差指標(biāo)。
改進(jìn)后的模型結(jié)合遺傳算法和BP神經(jīng)網(wǎng)絡(luò)算法的優(yōu)點(diǎn),利用多層的前饋傳播方式進(jìn)行遺傳搜索的表示方法,可以克服遺傳算法和BP神經(jīng)網(wǎng)絡(luò)算法自身存在的缺陷,可以更好地利用BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,對(duì)訓(xùn)練集數(shù)據(jù)集進(jìn)行訓(xùn)練,提高檢驗(yàn)數(shù)據(jù)集預(yù)測(cè)的準(zhǔn)確率,同時(shí)也可以利用遺傳算法的全局搜索能力強(qiáng)的優(yōu)點(diǎn),對(duì)神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)層、輸入層神經(jīng)節(jié)點(diǎn)、隱含層節(jié)點(diǎn)、傳遞函數(shù)等方面進(jìn)行優(yōu)化,使神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)達(dá)到最優(yōu),實(shí)現(xiàn)預(yù)測(cè)準(zhǔn)確率和效率的提高,模型構(gòu)建思路如圖1所示。
圖1 模型構(gòu)建思路
1)網(wǎng)絡(luò)層數(shù)選取
神經(jīng)網(wǎng)絡(luò)中的網(wǎng)絡(luò)層和節(jié)點(diǎn)數(shù)會(huì)對(duì)模型的預(yù)測(cè)結(jié)果產(chǎn)生重要的影響,層數(shù)選取過(guò)多會(huì)導(dǎo)致模型的計(jì)算壓力增大,層數(shù)選取過(guò)少會(huì)導(dǎo)致預(yù)測(cè)結(jié)果不正確。因此,要選取合適的神經(jīng)網(wǎng)絡(luò)層數(shù)和節(jié)點(diǎn)數(shù),這樣不僅會(huì)提升改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)算法的預(yù)測(cè)效率,也會(huì)提升改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)算法的預(yù)測(cè)精度。
輸入層是算法執(zhí)行的起始環(huán)節(jié),根據(jù)預(yù)測(cè)的目的,選取不同的變量對(duì)應(yīng)不同的單元,即一個(gè)單元一個(gè)變量,同時(shí)為了提高算法預(yù)測(cè)的準(zhǔn)確性,選取部分?jǐn)?shù)據(jù)作為樣本值,確定目標(biāo)數(shù)據(jù),根據(jù)數(shù)據(jù)比例選取輸入層節(jié)點(diǎn)數(shù)。
隱含層節(jié)點(diǎn)數(shù)量的確定對(duì)算法的執(zhí)行最為重要,根據(jù)映射定理,將節(jié)點(diǎn)與映射函數(shù)對(duì)應(yīng),無(wú)限節(jié)點(diǎn)可對(duì)應(yīng)全部映射函數(shù),對(duì)于有限節(jié)點(diǎn)來(lái)說(shuō),如果隱含層節(jié)點(diǎn)選取較少,會(huì)影響算法的預(yù)測(cè)準(zhǔn)確率,使得訓(xùn)練時(shí)間較少,對(duì)預(yù)測(cè)規(guī)律的的學(xué)習(xí)程度不夠,但是如果隱含層選取節(jié)點(diǎn)過(guò)多,又會(huì)影響算法的執(zhí)行效率。所以,采用遺傳算法優(yōu)化隱含層的節(jié)點(diǎn)選取過(guò)程,利用二進(jìn)制數(shù)值編碼方式表示隱含層的神經(jīng)元,最后再將神經(jīng)元解碼,解碼為實(shí)數(shù),用a表示神經(jīng)元存在,b表示神經(jīng)元不存在,也可以看作是隱含層神經(jīng)元細(xì)胞數(shù)與二進(jìn)制數(shù)是相同的。
2)傳遞函數(shù)
采用S型對(duì)數(shù)作為隱含層的傳遞函數(shù),將數(shù)據(jù)進(jìn)行歸一化處理,輸入向量與輸出向量都要滿足S型對(duì)數(shù),式(1)代表隱含層的傳遞,式(2)代表隱含層的輸出。
傳遞函數(shù)選取后,需對(duì)算法進(jìn)行訓(xùn)練,此時(shí)利用遺傳算法降低算法執(zhí)行過(guò)程中的目標(biāo)誤差值,利用遺傳算法蟻群最優(yōu)個(gè)體與其它不同的個(gè)體進(jìn)行交叉、變異的訓(xùn)練,在變異子代中找出算法中最優(yōu)的個(gè)體,將此個(gè)體作為最優(yōu)個(gè)體,執(zhí)行下次訓(xùn)練,即算法尋找最優(yōu)的過(guò)程,持續(xù)進(jìn)行訓(xùn)練。
在式(3)中,P*代表最優(yōu)群體,P代表當(dāng)前最優(yōu)個(gè)體。
在改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)中,整體具有非線性映射關(guān)系,如式(4)所示。
其中,(xj,tk)表示訓(xùn)練樣本,激勵(lì)函數(shù)為f,w為輸入層和隱含層的連接權(quán)值,c表示隱含層輸出權(quán)值,閾值為θ,ω=(W,C,θ)。
遺傳算法和BP神經(jīng)網(wǎng)絡(luò)算法結(jié)合后,算法從確定初始的網(wǎng)絡(luò)結(jié)構(gòu)出發(fā),利用遺傳算法初始化種群數(shù)量,進(jìn)行遺傳優(yōu)化,確定網(wǎng)絡(luò)權(quán)重,并不斷地調(diào)整權(quán)重。具體算法步驟如下:
Step1:確定網(wǎng)絡(luò)結(jié)構(gòu);
Step2:初始化種群數(shù)量,進(jìn)行遺傳優(yōu)化;
Step3:獲取網(wǎng)絡(luò)權(quán)重,計(jì)算誤差;
Step4:調(diào)整網(wǎng)絡(luò)權(quán)重;
Step5:輸出結(jié)果。
實(shí)驗(yàn)數(shù)據(jù)選取某食品2015年1月-2019年12月價(jià)格數(shù)據(jù)組成數(shù)據(jù)集,共計(jì)1134組。在全部數(shù)據(jù)中,根據(jù)時(shí)間序列等方式篩選數(shù)據(jù),將數(shù)據(jù)分成訓(xùn)練集和樣本集,對(duì)比分析預(yù)測(cè)效果。其中,網(wǎng)絡(luò)輸入節(jié)點(diǎn)數(shù)為50,輸出節(jié)點(diǎn)數(shù)1,學(xué)習(xí)速率設(shè)定0.1,算法迭代次數(shù)為6000。從算法的預(yù)測(cè)效率和預(yù)測(cè)精度兩個(gè)方面分析傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法和改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)算法。
1)預(yù)測(cè)效率
在實(shí)驗(yàn)過(guò)程中,利用相同數(shù)據(jù)量、相同數(shù)據(jù)結(jié)構(gòu)的食品價(jià)格數(shù)據(jù)組,分別執(zhí)行傳統(tǒng)的算法和改進(jìn)后的神經(jīng)網(wǎng)絡(luò)算法,采用計(jì)時(shí)的方式記錄算法的執(zhí)行時(shí)長(zhǎng),執(zhí)行時(shí)間對(duì)比分析如表1、圖2所示。
圖2 執(zhí)行時(shí)間對(duì)比
表1 執(zhí)行時(shí)間對(duì)比分析
實(shí)驗(yàn)結(jié)果可知,結(jié)合遺傳算法改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)算法相比傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法在一定程度上可以節(jié)省算法的運(yùn)行時(shí)間效率,可以加快算法的執(zhí)行速度,提高預(yù)測(cè)的效率。
2)預(yù)測(cè)準(zhǔn)確率
在實(shí)驗(yàn)過(guò)程中,對(duì)比分析算法的預(yù)測(cè)準(zhǔn)確率要采用相同數(shù)據(jù)量、相同數(shù)據(jù)結(jié)構(gòu)的食品價(jià)格數(shù)據(jù)組,實(shí)現(xiàn)數(shù)據(jù)對(duì)比分析的統(tǒng)一化,將數(shù)據(jù)組分為樣本集和預(yù)測(cè)集兩部分,分別執(zhí)行傳統(tǒng)算法和改進(jìn)后的算法,將預(yù)測(cè)集數(shù)據(jù)與模型輸出結(jié)果對(duì)比,分析算法的準(zhǔn)確率,算法準(zhǔn)確率對(duì)比分析如表2、圖3所示。
圖3 算法準(zhǔn)確率對(duì)比
表2 算法準(zhǔn)確率對(duì)比分析
實(shí)驗(yàn)結(jié)果可知,結(jié)合遺傳算法改進(jìn)后的BP神經(jīng)網(wǎng)絡(luò)算法相比傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法在一定程度上可以提高算法預(yù)測(cè)的準(zhǔn)確率,使得算法在預(yù)測(cè)過(guò)程中的精確度更強(qiáng),更利于神經(jīng)網(wǎng)絡(luò)算法在實(shí)際預(yù)測(cè)問(wèn)題中的應(yīng)用。
本文通過(guò)對(duì)神經(jīng)網(wǎng)絡(luò)算法的分析,研究了神經(jīng)網(wǎng)絡(luò)算法中普遍用于預(yù)測(cè)的BP神經(jīng)網(wǎng)絡(luò)算法,分析傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)算法的不足,利用遺傳算法對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),優(yōu)化算法權(quán)重選取過(guò)程,提升算法的預(yù)測(cè)效率和預(yù)測(cè)精度。得到了如下結(jié)論:
1)基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)算法與傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法相比,可以提高算法在預(yù)測(cè)過(guò)程中的執(zhí)行時(shí)間,提高預(yù)測(cè)效率。
2)基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)算法與傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)算法相比,可以提高算法在預(yù)測(cè)過(guò)程中的準(zhǔn)確率,提高預(yù)測(cè)精度。