胡彥軍,張平川,尚崢,王慧敏,喬永峰
(1.河南科技學(xué)院信息工程學(xué)院,河南新鄉(xiāng)453003;2.鄭州電力職業(yè)技術(shù)學(xué)院信息工程學(xué)院,河南 鄭州451450)
農(nóng)產(chǎn)品價格的波動會導(dǎo)致其他相關(guān)產(chǎn)品出現(xiàn)不同程度的價格波動,從而影響市場經(jīng)濟的運行[1].在近期農(nóng)產(chǎn)品價格波動中,不但大宗農(nóng)產(chǎn)品價格有整體波動,而且大蒜、綠豆、生姜等小農(nóng)產(chǎn)品價格也有顯著波動.大蒜價格的波動受到種植面積、種植成本、市場需求、資本操控、政策、自然災(zāi)害、輿論等許多因素的影響[2].近年來我國大蒜價格多次經(jīng)歷劇烈波動,這種波動嚴(yán)重擾亂了市場預(yù)期,不但影響了行業(yè)從業(yè)者的利益,造成大蒜市場秩序混亂,甚至導(dǎo)致社會動蕩[3].為此,許多學(xué)者對大蒜等小農(nóng)產(chǎn)品價格預(yù)測進(jìn)行了研究并取得了許多有價值的成果.
王寶佳等[4]采用ARIMA 模型對月度大蒜價格進(jìn)行預(yù)測,實驗結(jié)果表明該模型對大蒜價格的短期預(yù)測有一定的效果.郭峰等[5]將GARCH 模型應(yīng)用于大蒜價格分析預(yù)測領(lǐng)域,發(fā)現(xiàn)序列呈現(xiàn)尖峰厚尾、波動聚集、異方差等特征.以上文獻(xiàn)表明,可以經(jīng)過捕獲價格波動特征來實現(xiàn)大蒜價格預(yù)測,但上述文獻(xiàn)[4-5]使用的是傳統(tǒng)計量經(jīng)濟學(xué)方法雖然可以有效處理價格序列的線性特征關(guān)系,但面對突發(fā)情況造成的非線性序列特征時,容易出現(xiàn)預(yù)測性能不穩(wěn)定的問題.
近年來,隨著人工智能技術(shù)的廣泛應(yīng)用,機器學(xué)習(xí)被大量應(yīng)用到復(fù)雜非線性關(guān)系的農(nóng)產(chǎn)品預(yù)測中.Jha 等[6]利用時間延遲神經(jīng)網(wǎng)絡(luò)(TDNN)和ARIMA 模型對油菜籽進(jìn)行價格預(yù)測比較,發(fā)現(xiàn)TDNN 具有更高的預(yù)測準(zhǔn)確率.Li 等[7]開發(fā)了一個混沌神經(jīng)網(wǎng)絡(luò)用于預(yù)測每周的雞蛋價格,實驗表明混沌神經(jīng)網(wǎng)絡(luò)比ARIMA 具有更好的非線性擬合能力和更高的預(yù)測準(zhǔn)確率.Hemageetha 等開發(fā)了一種反向傳播神經(jīng)網(wǎng)絡(luò)(BPNN)能較好地預(yù)測番茄價格.
由于淺層神經(jīng)網(wǎng)絡(luò)很難有效表達(dá)復(fù)雜的非線性函數(shù)[8],于是深度學(xué)習(xí)被廣泛應(yīng)用于農(nóng)產(chǎn)品價格預(yù)測中.Weng 等[9]提出了一種基于RNN 的短期黃瓜預(yù)測方法,實驗結(jié)果顯示RNN 的預(yù)測效果優(yōu)于BPNN 和ARIMA.Jaiswal 等[10]開發(fā)了一種DLSTM網(wǎng)絡(luò)模型,該網(wǎng)絡(luò)模型在非線性價格序列的預(yù)測精度和方向變化方面優(yōu)于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型和ATIMA 模型.Banerjee 等[11]提出用LSTM 來預(yù)測蔬菜價格,發(fā)現(xiàn)LSTM 在長期和短期蔬菜價格預(yù)測方面優(yōu)于各種采用傳統(tǒng)統(tǒng)計方法和機器學(xué)習(xí)方法的模型.Yeong 等[12]提出了一種基于雙輸入注意力機制的LSTM 模型來預(yù)測韓國卷心菜和蘿卜的每月價格,實現(xiàn)了較好的預(yù)測效果.
綜上所述,基于機器學(xué)習(xí)和深度學(xué)習(xí)的小農(nóng)產(chǎn)品價格有著豐富的研究基礎(chǔ),有些研究取得了不錯的價格預(yù)測效果.對大蒜價格的研究主要停留在計量經(jīng)濟模型上,使用機器學(xué)習(xí)和深度學(xué)習(xí)的農(nóng)產(chǎn)品價格預(yù)測目前很少涉及大蒜這一波動性極強的小農(nóng)產(chǎn)品上.上述研究建立了一定的市場預(yù)測指標(biāo)體系,探索了小農(nóng)產(chǎn)品價格預(yù)測的研究方法.
大蒜由于社會需求量限制造成市場較小,沒有形成正規(guī)的期貨交易體系,存在市場交易數(shù)據(jù)分散、數(shù)據(jù)量較少等因素.這些因素決定了不能使用傳統(tǒng)的價格預(yù)測體系進(jìn)行價格預(yù)測.決定大蒜價格的因素繁多,主要有大蒜的產(chǎn)量、市場需求、市場庫存量、資本熱錢的進(jìn)入、自然災(zāi)害、國家政策、蒜農(nóng)惜售心理預(yù)期等多種因素[13].大蒜價格具有非線性、非平穩(wěn)的特點,如果采用指標(biāo)過多易產(chǎn)生維數(shù)冗余問題,形成維數(shù)災(zāi)難.本文基于大蒜時間序列價格數(shù)據(jù),結(jié)合大蒜庫存量、產(chǎn)量、自然災(zāi)害等其他隨機因素,提出了一種基于注意力機制的門控邏輯單元神經(jīng)網(wǎng)絡(luò)模型Attention-GRU,用于大蒜短期價格預(yù)測,實驗結(jié)果表明本文提出的Attention-GRU 網(wǎng)絡(luò)模型具有較高的預(yù)測準(zhǔn)確度和較低的預(yù)測誤差.
本部分內(nèi)容介紹了大蒜價格數(shù)據(jù)的來源、數(shù)據(jù)的處理及改進(jìn)的GRU 神經(jīng)網(wǎng)絡(luò).
本文大蒜價格數(shù)據(jù)來源于國際大蒜貿(mào)易網(wǎng)和蒜易通等大蒜交易平臺,通過對山東、河南、江蘇3 個大蒜主產(chǎn)區(qū)2019—2022 年3 年每天的大蒜批發(fā)價格進(jìn)行平均加權(quán)重處理得出全國大蒜平均批發(fā)價格.以天為單位共獲得1096 個大蒜價格的時間序列數(shù)據(jù),加上3 年的市場庫存量數(shù)據(jù),以這兩項數(shù)據(jù)為主要訓(xùn)練數(shù)據(jù).同時將這3 年的大蒜產(chǎn)量、自然災(zāi)害進(jìn)行無單位量化,作為訓(xùn)練擾動數(shù)據(jù).
大蒜產(chǎn)量量化,以上年全國大蒜產(chǎn)量為基礎(chǔ),上年產(chǎn)量減去當(dāng)年產(chǎn)量的差值除以上年產(chǎn)量所得值為擾動因素值.
自然災(zāi)害量化分為兩部分。第一,將自然災(zāi)害影響大蒜產(chǎn)量強弱分為6 個等級.0 級表示自然災(zāi)害不影響大蒜產(chǎn)量, 其值為1;1 級表示自然災(zāi)害使大蒜產(chǎn)量降低20%, 其值取0.8;5 級表示自然災(zāi)害使大蒜產(chǎn)量降低100%;其值取0.第二,根據(jù)自然災(zāi)害影響,大蒜產(chǎn)量的面積除以當(dāng)年全國大蒜的種植面積.將這兩項數(shù)值相乘作為大蒜價格在自然災(zāi)害發(fā)生后當(dāng)時的大蒜價格擾動因素值,從而實現(xiàn)了自然災(zāi)害對大蒜價格擾動的量化.
為精準(zhǔn)預(yù)測大蒜價格,本文提出了Attenion-GRU 神經(jīng)網(wǎng)絡(luò)模型.首先,根據(jù)大蒜的歷史價格和大蒜庫存量時間序列,利用Attention 機制放大大蒜價格有價值特征;然后,利用GRU 神經(jīng)網(wǎng)絡(luò)提取價格波動特征;最后,融合大蒜年產(chǎn)量和自然災(zāi)害等隨機價格擾動變量數(shù)據(jù),探索大蒜價格趨勢并預(yù)測價格.
1.2.1 GRU GRU 是基于傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的一種改進(jìn)版神經(jīng)網(wǎng)絡(luò).RNN 以時間序列數(shù)據(jù)為輸入序列的演進(jìn)方向進(jìn)行遞歸推理,將所有的循環(huán)單元連接成遞歸神經(jīng)網(wǎng)絡(luò).由于RNN 設(shè)計了記憶功能, 它與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相比在處理時間序列數(shù)據(jù)方面有更為優(yōu)秀的性能[14].RNN網(wǎng)絡(luò)的狀態(tài)對輸入和時刻狀態(tài)有較強的依賴性,這導(dǎo)致RNN 在面對長序列問題時,容易出現(xiàn)梯度爆炸和梯度消失問題.Hochreiter 提出了LSTM網(wǎng)絡(luò),這是一種能有效改善RNN 的長期依賴問題的神經(jīng)網(wǎng)絡(luò)[15].LSTM網(wǎng)絡(luò)由輸入門、遺忘門、輸出門與記憶單元組成.Chung 等[16]對LSTM網(wǎng)絡(luò)進(jìn)行了簡化設(shè)計,提出了GRU 網(wǎng)絡(luò).GRU 只有兩個門,去掉了LSTM的細(xì)胞狀態(tài)單元,可直接計算輸出,結(jié)構(gòu)如圖1 所示.
圖1 GRU 單元結(jié)構(gòu)Fig.1GRU network structure
其遞歸函數(shù)可表示為
式(1)~(4)中:rt為重置門,zt為更新門,xt為當(dāng)前輸入,ht-1為上一時刻輸出,為當(dāng)前輸出,σ、tanh 為激活函數(shù),Wr、Wz、Wh為權(quán)重矩陣,·為點積,*為矩陣乘積.
GRU 中的更新門是長短期記憶網(wǎng)絡(luò)(LSTM)中輸入門和遺忘門的融合.通過試驗發(fā)現(xiàn)GRU 試驗效果與LSTM相當(dāng),但GRU 參數(shù)更少,結(jié)構(gòu)也更簡潔.而且GRU 有更高的訓(xùn)練速度,訓(xùn)練效率也更高[17].
1.2.2 Attention 機制 注意力機制最早出現(xiàn)在語言識別應(yīng)用中,該機制能較為準(zhǔn)確地實現(xiàn)對自然語言的識別[18].注意力機制是一種可以將注意力聚焦在高價值信息上,對于低價值信息降低注意力,從而在大量信息中快速準(zhǔn)確提取出目標(biāo)信息.本文在GRU 網(wǎng)絡(luò)中增加了Attention 機制使GRU 網(wǎng)絡(luò)對大蒜價格有了更為準(zhǔn)確的捕獲能力.
Attention 機制結(jié)構(gòu)可以用圖2 來表示,xt(t∈[1,n])是GRU 的輸出值;ht(t∈[1,n])是GRU 輸出的隱藏層狀態(tài);αt(t∈[1,n])為Attention 機制計算權(quán)重系數(shù);C 為每個權(quán)重的加權(quán)值;y 為通過Attention 機制修正過的輸出值.
圖2 Attention 單元結(jié)構(gòu)Fig.2Structure of the Attention mechanism
Attention 機制修正原理可以用以下公式表示
式(5)~(7)中:St為t 時刻GRU 輸出隱藏層ht決定的注意力概率分布值,u、w 為權(quán)重系數(shù),b 為偏置系數(shù),Ct為Attention 層在t 時刻的輸出值.
1.2.3 Attention-GRU 模型 整體預(yù)測模型結(jié)構(gòu)如圖3 所示,它由輸入層、GRU 層、全連接層、注意力層和輸出層5 個層構(gòu)成.
圖3 Attention-GRU 網(wǎng)絡(luò)結(jié)構(gòu)Fig.3Attention-GRU network structure
輸入層:將大蒜價格、庫存量時間序列數(shù)據(jù)和相關(guān)因素數(shù)據(jù)進(jìn)行融合作為模型的輸入,融合數(shù)據(jù)長度為t,表示為x=[x1,x2,x3,…,xt].
GRU 層:GRU 層輸入的數(shù)據(jù)進(jìn)行學(xué)習(xí)訓(xùn)練,對序列數(shù)據(jù)內(nèi)部變化的規(guī)律進(jìn)行學(xué)習(xí)歸納.GRU 學(xué)習(xí)訓(xùn)練過的數(shù)據(jù)用公式(8)來表示
全連接層:這里使用全連接層的目的是提高模型對特征的學(xué)習(xí)力,其激活函數(shù)使用的是ReLU 激活函數(shù),可用公式(9)來表示,H 為全連接層的輸出序列;L、d 分別為本層中的權(quán)重矩陣與偏置向量.
注意力層:經(jīng)過GRU 網(wǎng)絡(luò)訓(xùn)練過的數(shù)據(jù)輸入注意力層,通過300 次的迭代訓(xùn)練不斷優(yōu)化輸入特征的權(quán)重,從而使輸入數(shù)據(jù)貢獻(xiàn)度得到提高.注意力層權(quán)重計算見公式(6),第t 個序列的輸出yt可用公式(10)來表示
輸出層:通過注意力層的計算輸出層輸出預(yù)測結(jié)果,Ypre可表示為公式(11),DNN()為全連接計算.
損失函數(shù):在模型的訓(xùn)練過程中采用均方誤差MSE(mean squared error)損失函數(shù),其表達(dá)式表示為公式(12),t 為樣本個數(shù),為實際值,yi為模型預(yù)測輸出值.
實驗環(huán)境由計算機硬件和開發(fā)平臺兩部分組成,詳細(xì)信息如表1 所示.
表1 詳細(xì)實驗環(huán)境Tab.1Detailed experimental environment
為驗證本文所提Attention-GRU 網(wǎng)絡(luò)模型的有效性,選擇了GRU、BP 網(wǎng)絡(luò)、CNN-GRU3 種常見的神經(jīng)網(wǎng)絡(luò)模型與本文所提方法進(jìn)行預(yù)測效果比較.為了確保實驗的可比性,Attention-GRU 模型中GRU 網(wǎng)絡(luò)與GRU 模型和CNN-GRU 模型結(jié)構(gòu)均相同,詳細(xì)結(jié)構(gòu)如圖4 所示.
圖4 實驗中的對比神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Structural diagram of the comparison neural network in the experiment
Attention-GRU、GRU、CNN-GRU、BP 網(wǎng)絡(luò)4 種網(wǎng)絡(luò)模型中,步長均設(shè)置為5.輸出神經(jīng)元個數(shù)為1,Batch_size 設(shè)置為100,訓(xùn)練迭代次數(shù)為300,優(yōu)化函數(shù)為Adam 其學(xué)習(xí)率為0.0001,損失函數(shù)為MSE.Attention-GRU、GRU、CNN-GRU 中,GRU 層為1 層,神經(jīng)元個數(shù)均為50.CNN-GRU 中,CNN 卷積核個數(shù)為50.BP 網(wǎng)絡(luò)中,有2 層全連接層,每層神經(jīng)元個數(shù)為50.
在大蒜價格預(yù)測階段,本文結(jié)合不平衡數(shù)據(jù)處理技術(shù)以及網(wǎng)絡(luò)模型對次日大蒜價格預(yù)測,將它們歸為回歸問題.使用MSE、均方根誤差(root mean square error,RMSE)、平均絕對誤差(mean absolute error,MAE)和決定系數(shù)R2作為模型平均指標(biāo),R2計算公式如13 所示.MSE、RMSE、MAE 值越小,說明模型的預(yù)測誤差越小,預(yù)測效果越好.R2值越接近1,模型預(yù)測越準(zhǔn)確,R2值越接近0,模型預(yù)測誤差越大.
公式(13)中:yprei為預(yù)測值,為平均值,yi為真實值.
為了使實驗結(jié)果更為客觀準(zhǔn)確,消除偶然因素的影響,每個網(wǎng)絡(luò)模型都進(jìn)行了50 次隨機重復(fù)大蒜價格預(yù)測實驗,最后取各網(wǎng)絡(luò)模型評價指標(biāo)的50 次平均值和標(biāo)準(zhǔn)差.本文對2019—2022 年3 年每日大蒜價格數(shù)據(jù)集上的少數(shù)類樣本、多數(shù)類樣本及總體樣本進(jìn)行了實驗結(jié)果對比,如表2 至表4 所示.
表2 大蒜價格數(shù)據(jù)集少數(shù)樣本MSE、RMSE 和MAE 3 個評價指標(biāo)對比Tab.2Comparison of the 3 evaluation indicators MSE,RMSE and MAE for a small sample of the garlic price dataset
表3 大蒜價格數(shù)據(jù)集多數(shù)樣本MSE、RMSE 和MAE 3 個評價指標(biāo)對比Tab.3 Comparison of the 3 evaluation indicators MSE,RMSE and MAE for the majority sample of the garlic price dataset
表4 大蒜價格數(shù)據(jù)集全部樣本MSE、RMSE 和MAE 3 個評價指標(biāo)對比Tab.4 Comparison of the 3 evaluation indicators MSE,RMSE and MAE for the full sample of the garlic price dataset
從表3 至表5 中的誤差表現(xiàn)來看,證明本文所提出的Attention-GRU,在MSE、RMSE、MAE、R24 個平均指標(biāo)中誤差都是最小的.如在全部樣本上以MSE 誤差為例,它比GRU 少0.17、比CNN-GRU 少0.61、比BP 少0.77,分別減少了4%、15%和18%.從3 張表同時也可看出CNN-GRU 在某些預(yù)測中雖然也有較好的表現(xiàn),但在預(yù)測時間序列數(shù)據(jù)方面的誤差比GRU 還要大;4 個網(wǎng)絡(luò)模型中BP 網(wǎng)絡(luò)模型誤差最大.通過對比實驗驗證了本文所提的Attention-GRU 模型在訓(xùn)練誤差方面是最優(yōu)的.
為驗證本文所提預(yù)測模型的有效性和泛化性,本文抽取了2022 年8—10 月3 個月的大蒜價格進(jìn)行了預(yù)測對比實驗,實驗結(jié)果如圖5 所示.
圖5 4 種網(wǎng)絡(luò)模型預(yù)測對比Fig.5 Comparison of 4 network models for prediction
由圖5 可以看出,Attention-GRU 模型預(yù)測值相較于其他3 種模型與真實值貼合度最高, 最接近真實值,說明預(yù)測準(zhǔn)確度較高,進(jìn)而證實本文所提模型的有效性.
以上結(jié)果表明, 本文所提的Attention-GRU 模型比其他3 種模型具有更為準(zhǔn)確的大蒜價格預(yù)測能力,更小預(yù)測誤差,說明Attention-GRU 模型可以應(yīng)用于大蒜價格預(yù)測且預(yù)測效果較好.
針對大蒜每天價格波動性大,容易受到多種因素影響導(dǎo)致其價格走勢具有很強的非線性、平滑性差等特點, 本文提出了基于Attention 機制的GRU 深度學(xué)習(xí)模型.基于金鄉(xiāng)地區(qū)2019—2022 年大蒜日價格、日庫存量、自然災(zāi)害、大蒜年產(chǎn)量以及其他因素制作了大蒜價格數(shù)據(jù)集.大蒜價格數(shù)據(jù)集首先經(jīng)過GRU 網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,歸納大蒜價格波動規(guī)律;然后,Attention 對GRU 網(wǎng)絡(luò)輸出的數(shù)據(jù)進(jìn)行注意力處理,使其價格波動特征更為明顯,優(yōu)化大蒜價格預(yù)測結(jié)果.經(jīng)過大量的實驗表明,Attention 機制能有效提高GRU 網(wǎng)絡(luò)模型對大蒜價格的預(yù)測能力,能有效提高預(yù)測準(zhǔn)確度.實驗同時表明,Attention-GRU 模型,比GRU、CNN-GRU、BP 這3 種模型具有更高預(yù)測精準(zhǔn)度和更小的預(yù)測誤差.
該模型從時間序列的角度對大蒜價格進(jìn)行研究,解決單一網(wǎng)絡(luò)模型預(yù)測精度差的問題.本模型可較為精準(zhǔn)預(yù)測短期大蒜價格,可以為大蒜產(chǎn)業(yè)有關(guān)從業(yè)人員做出正確的判斷和科學(xué)決策,有利于從業(yè)者降低風(fēng)險,對穩(wěn)定大蒜這一小農(nóng)產(chǎn)品市場起到一定的指導(dǎo)作用.
目前,該模型對中長期大蒜價格預(yù)測的準(zhǔn)確率需要進(jìn)一步提高.由于大蒜具有耐儲存、市場規(guī)模小容易受資本控制、易受供求關(guān)系影響等因素,大蒜中長期價格預(yù)測一直是學(xué)術(shù)界的一大難題.因此在以后的研究中,本文將探索更為科學(xué)的方法,以提高模型對中長期價格的預(yù)測精準(zhǔn)度.