王婷婷,吳新蕊,張洋,王宇春
(佳木斯大學(xué)生物醫(yī)學(xué)工程系,佳木斯154007)
為解決學(xué)生進入食堂就餐所產(chǎn)生的常備菜品種類過少,排隊就餐時間過長以及菜品過剩所產(chǎn)生的浪費,開發(fā)了食堂菜單管理系統(tǒng)App,在研究中發(fā)現(xiàn),食堂人員因無法預(yù)測菜品銷量而導(dǎo)致浪費,所以構(gòu)建了一個預(yù)測算法。
傳統(tǒng)的備菜量方式則是每天按照固定的量去采買,這將會導(dǎo)致菜品有時多有時少。解決這類問題方法有RBF算法,模糊神經(jīng)網(wǎng)絡(luò)。RBF神經(jīng)網(wǎng)絡(luò)在解決這類問題時運用的原理是以任意的精度去逼近隨機的函數(shù)式,線性方程組可以直接地去解出RBF神經(jīng)網(wǎng)絡(luò)的權(quán)重值,這在一定程度上加快了學(xué)習(xí)速度并避免了一定局部極小的問題,但正因為它的學(xué)習(xí)速度快,它需要更多的隱含層神經(jīng)元來完成工作。模糊神經(jīng)網(wǎng)絡(luò)具有用多臺處理機同時工作去求解問題的優(yōu)勢,可以進行并行數(shù)據(jù)處理,但模糊神經(jīng)網(wǎng)絡(luò)無論作為逼近器去工作還是作為模式存儲器運行,都是需要進行學(xué)習(xí)和去優(yōu)化權(quán)重系數(shù)來進行處理。在線性神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法中,各個神經(jīng)元之間連接權(quán)值的誤差值由理想中輸出的值與實際上輸出的值之間的差來估量,但因為這里存在線性不可分的實際問題,從而在引入多級互聯(lián)網(wǎng)絡(luò)時,怎么估計中間端神經(jīng)元的誤差值就成了難題,因為在實際運算中,很難去知道中間端的任何神經(jīng)元的理想值和輸出值。根據(jù)長時間的調(diào)查研究可以看到某菜品的銷量數(shù)據(jù)和隨機信號的變化類似。在隨機信號中,常用AR模型預(yù)測,它是“自回歸模型”對于標(biāo)準(zhǔn)的激勵信號,其輸出的信號和待建模時的信號總是趨向一致,這是因為很容易地能夠找到一個足夠高階的常系數(shù)線性微分方程,其方程系數(shù)可完全描述信號特征。但在實際應(yīng)用時,發(fā)現(xiàn)AR模型在譜估計中存在一些缺點,如虛假譜峰、譜線分裂、譜峰位置受相位影響,噪聲使譜估計惡化,等等。
綜合以上因素發(fā)現(xiàn)誤差反向傳播學(xué)習(xí)算法,可以實現(xiàn)多層的神經(jīng)網(wǎng)絡(luò)模型。誤差反向傳播算法的基本原理是利用輸出后結(jié)果相差的誤差值來估量輸出端的直接相連的前導(dǎo)層的誤差值,再用兩者之間的誤差值估量更前一層的誤差值,如此一級一級反向傳遞下去,就獲得了所有其他各個層之間的誤差估計值。其這樣就形成了將輸出端體現(xiàn)出的誤差值沿著與輸入端傳送相反的方向逐層地向網(wǎng)絡(luò)的輸入端的傳遞的過程。
按預(yù)測誤差反方向傳播是BP神經(jīng)網(wǎng)絡(luò)的傳播方式,BP神經(jīng)網(wǎng)絡(luò)主要包括輸入端、輸出端和中間端,在提高神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力時是通過調(diào)整網(wǎng)絡(luò)中的中間端的連接權(quán)重和閾值,從而更好地實現(xiàn)非線性映射關(guān)系。BP神經(jīng)網(wǎng)絡(luò)的原理是輸入端的數(shù)據(jù)值經(jīng)過多個神經(jīng)元的計算處理后的輸出值最大程度的接近給出的實際期望值,如果BP神經(jīng)網(wǎng)絡(luò)使用逐層地去修改神經(jīng)元的權(quán)重值則是因為出現(xiàn)了輸出端的結(jié)果值與期望值之間的誤差較大,直到輸出端的結(jié)果值與實際期望的結(jié)果值之間的誤差在可接受的范圍內(nèi),則停止修改神經(jīng)元的權(quán)重值。
本次實驗選取了某食堂過去一年多里中午某菜品的銷量情況,一共采集了390組數(shù)據(jù),選取其中的360個樣本點數(shù)據(jù)進行神經(jīng)網(wǎng)絡(luò)訓(xùn)練,對參數(shù)進行擬合調(diào)整,剩余30個樣本點,進行神經(jīng)網(wǎng)絡(luò)預(yù)測。360個樣本點,將其分為12份,每份30組,以1、2、3份預(yù)測第4份,2、3、4份預(yù)測第5份,如此反復(fù)至預(yù)測精度基本吻合。經(jīng)過調(diào)查發(fā)現(xiàn)天氣的溫度、變化和學(xué)生的上課情況是影響菜品銷量的主要因素,但其中還有很多特殊不可控的因素。每次訓(xùn)練后結(jié)合新的信息再反復(fù)地進行訓(xùn)練。因此本實例構(gòu)建了三層BP神經(jīng)網(wǎng)絡(luò),使用梯度下降法的學(xué)習(xí)算法,為了使輸出的期望值和BP神經(jīng)網(wǎng)絡(luò)的實際輸出值的均方差趨于在理想的范圍內(nèi),它在學(xué)習(xí)過程中通過不斷地調(diào)整權(quán)值和閾值來處理。
根據(jù)地區(qū)的溫度選取從零下15度到零上30度,從調(diào)查的數(shù)據(jù)中可以發(fā)現(xiàn)隨著溫度的降低,菜品銷量成線性遞增趨勢,采取樣本時也考慮了天氣狀況的變化,即有雪、有雨、多云、晴天時的菜品銷量,可以看到數(shù)據(jù)呈現(xiàn)線性遞減趨勢。將學(xué)生最后一節(jié)課為調(diào)查樣本,以離食堂較近的教學(xué)樓為例,統(tǒng)計最后一節(jié)學(xué)生上課的數(shù)量。如表1是從數(shù)據(jù)中隨機抽出的10組量化值數(shù)據(jù)。
表1 獲取的樣本數(shù)據(jù)
BP神經(jīng)網(wǎng)絡(luò)構(gòu)建根據(jù)擬合非線性函數(shù)特點確定BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),本文采用三層的神經(jīng)網(wǎng)絡(luò)進行建模,即輸入端、中間端和輸出端均為一層輸入端,包括天氣溫度、天氣變化、學(xué)生人數(shù),即輸入端神經(jīng)元節(jié)點數(shù)為3,輸出端只含有菜品銷量,即輸出端神經(jīng)元節(jié)點為1。由于中間端神經(jīng)元節(jié)點數(shù)直接影響到神經(jīng)網(wǎng)絡(luò)對復(fù)雜問題的映射能力,且中間端神經(jīng)元節(jié)點數(shù)需要通過實驗分析獲得,其個數(shù)設(shè)為n個。
由于天氣溫度、天氣變化、學(xué)生人數(shù)這三個指標(biāo)并不是同一類參數(shù),為保證模型訓(xùn)練結(jié)果,必須對上述指標(biāo)進行歸一化處理。將輸入輸出變量通過歸一化處理映射到[0,1]之間。
為了更全面地評價BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)測性能,在使用均方差的同時,還引入了決定系數(shù)R2來評價預(yù)測精度。R2越接近于1,表明預(yù)測值與實測值之間的相關(guān)程度越高,模型擬合度越好。將隱含層神經(jīng)元節(jié)點n設(shè)置為1-8,分別得到對應(yīng)的預(yù)測性能評價指標(biāo)。如表2所示。
表2 預(yù)測性能評價指標(biāo)
由表2分析可知,當(dāng)隱含層神經(jīng)元節(jié)點數(shù)為5時,BP神經(jīng)網(wǎng)絡(luò)的擬合度R2為0.98732,此時BP神經(jīng)網(wǎng)絡(luò)模型的預(yù)測性能最佳。因此BP神經(jīng)網(wǎng)絡(luò)模型隱含層的神經(jīng)元節(jié)點數(shù)n設(shè)置為5。建立點單系統(tǒng)預(yù)測模型如圖1所示。
圖1點單系統(tǒng)預(yù)測模型
圖2為BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的誤差曲線。
圖2訓(xùn)練誤差曲線
由得到的圖和輸出值的結(jié)果可以得到在訓(xùn)練過程中,在10480次訓(xùn)練結(jié)束時達到了基本的目標(biāo)誤差要求。
將余下的30組數(shù)據(jù)輸入訓(xùn)練后的BP神經(jīng)網(wǎng)絡(luò)來進行預(yù)測,9-10月份實際菜品銷量如表3所示,BP神經(jīng)網(wǎng)絡(luò)的預(yù)測值與實際值對比如圖3,BP神經(jīng)網(wǎng)絡(luò)的預(yù)測值與實際值相對誤差如圖4所示。
由圖4中可以得出預(yù)測值與實際值基本吻合,但可以看到有個別天數(shù)誤差較大。21號和25號的誤差分別達到了總數(shù)的1/2和1/4,經(jīng)我們的調(diào)查發(fā)現(xiàn),在21號那天某商場店鋪10周年慶,現(xiàn)場非常熱鬧,導(dǎo)致許多人沒有去食堂就餐,因這是特殊因素,模型中沒有預(yù)測到,但這不會影響整體結(jié)果。
在25號那日因?qū)W校有一場大型的招聘會,導(dǎo)致預(yù)測值有偏差,但因21號特殊情況,模型中加入了因突發(fā)狀況而導(dǎo)致的誤差,因此相比較上次的誤差,這次下降了一半。
圖3 BP神經(jīng)網(wǎng)絡(luò)預(yù)測值與實際值對比
表3 實際菜品銷量
本文通過設(shè)置影響菜品銷量的指標(biāo),提出了一種基于BP神經(jīng)網(wǎng)絡(luò)食堂點單系統(tǒng)備菜量預(yù)測。通過實驗仿真,能夠很好地對菜品銷量進行預(yù)測,使預(yù)測結(jié)果更加精確,能很好地擬合各種情況,提供備菜量的理論根據(jù),指導(dǎo)食堂管理人員可以合理地備菜,更好地避免浪費,實現(xiàn)光盤行動。
圖4相對誤差