張忠林,張 艷
蘭州交通大學 電子與信息工程學院,蘭州 730070
時間序列預測就是通過分析時間序列,去進行類推或者延展,常作為一種有效預測手段而被廣泛應用于金融[1]、氣象預測、交通分析預測[2]、市場分析、人類行為預測[3]等領域。其中,自回歸模型[4]的出現使得時間序列預測建模逐步成熟,但是同時也存在一些問題,包括模型的識別、估計和解釋等。近年機器學習的出現使得預測可以通過不斷的重復訓練來逼近真實模型以此達到較好的預測結果。人工神經網絡[5]、支持向量回歸、基于核方法[6]以及基于樹[7]的集成學習方法在處理時間序列預測輸入變量之間的序列依賴性時仍然存在一定的缺陷。長短期記憶神經網絡(long-term and short-term memory network,LSTM)[8],由于其包含時間記憶單元,因此適合處理和預測時間序列中的間隔和延遲事件,從而廣泛應用于時間序列預測任務。基于現有的文獻,不難發現LSTM模型輸入參數仍依靠經驗選取,特別是時間窗口大小、批處理數量、隱藏層單元數目,隨機性的賦值大大降低了模型的預測性能。為了提高輸入參數的準確性以及擴展LSTM模型的應用范圍,引入各種改進方式來提高LSTM的綜合性能。
其中許多學者提出使用智能算法充當優化器優化LSTM的輸入參數。受小生境技術的啟發,有學者提出了多群體策略,以保持種群的多樣性,這對于尋優效果至關重要。文獻[9]采用不同的學習策略分布對不同類型的粒子進行更新,提高種群多樣性,增強了粒子的尋優效果,從而優化了LSTM的輸入參數,有效預測了股票價格走勢。表明對智能優化算法種群多樣的增強會有效提高算法性能,但該算法未考慮到算法陷入局部最優。文獻[10]使用Logistics混沌映射去提升FA初始種群的多樣性,并加入線性遞減慣性權重去幫助算法跳出局部最優,取得了較好預測效果。以上研究表明對智能算法種群多樣性的有效干涉會提高算法尋優性能。
由于不同的智能算法有其自身的優點,因此很自然會考慮將不同的算法或策略結合起來處理復雜問題。文獻[11]將FA與序貫二次規劃(SQP)相結合,用于鋼筋混凝土基礎的設計優化,該算法結合了FA的全局搜索能力和SQP的精確局部挖掘能力,彌補了搜索能力和開發能力之間的矛盾。文獻[12]使用了蟻群與粒子群混合算法優化LSSVM的脈動風速取得較好的效果。研究表明,諸如此類的混合模型會將單一模型優勢互補,具有更快的收斂速度和更高的解質量等綜合性能。
受到以上研究的啟發提出了一種改進的螢火蟲智能混合(GAFA)優化算法,該算法將遺傳算法(genetic algorithm,GA)[13]中的選擇算子、交叉算子和變異算子集成到FA中,去增加FA種群多樣性以提高算法性能,將改進后的FA應用于LSTM模型輸入參數的優化,以此搭建一個高精度的時序預測模型。
LSTM模型有三個控制門來對信息進行選擇性通過[8]。首先是遺忘門f對輸入x t的遺忘程度,保留下來部分送往輸入門,輸入門i中的x t經激活函數sigmoid和tanh共同控制保留向量,最后經由輸出門h輸出當前值,其結構如圖1所示。

圖1 LSTM模型結構Fig.1 LSTM Model structure
式(1)~(7)是它的數學表達:


螢火蟲算法由Yang等提出[14],在FA中,螢火蟲的亮度I取決于它的位置X,它被認為是一個潛在的解,且群體的運動軌跡可以描述為一個搜索過程。它的實現是將空間中的每一只螢火蟲視為解決問題的候選人,而發光強的螢火蟲則吸引較弱的螢火蟲,它們最終集中在較亮螢火蟲周圍,螢火蟲在移動過程中完成了位置信息的更新,即完成了更新[15]。以下是它的數學表達,相對熒光亮度,如式(8):

式中,I0表示光源的光強度,γ是傳播介質的光吸收系數,I與β成正比,可以描述為式(9):

其中,β0是r=0時的吸引力,βmin是最小吸引力。根據上述定義,螢火蟲的運動可以描述為式(10):

其中,α是決定隨機游動大小的參數,rand是均勻分布在[0,1]上的隨機數。
在選取優化器時,考慮了FA、粒子群算法(particle swarm optimization,PSO)[16]以及蟻群算法(ant colony optimization,ACO)[17],分別對它們的初始參數、適用場景以及抗早熟能力進行了權衡。ACO較PSO以及FA顯著差異是它的正反饋機制,這就決定它不能進行全局信息共享,且ACO對問題的維度較為敏感,所以本文在FA和PSO之間進行了選擇。最終在驗證實驗中選取了FA,具體實驗在4.4節中顯示與討論。
早熟趨同被認為與個體在種群中的趨同密切相關,這對于持續搜索優化算法至關重要。多樣性越大,種群越分散,越利于算法的全局搜索,反之,種群越集中,越利于算法的局部搜索。為了使FA算法有更好的處理問題能力,將遺傳算法中的選擇、交叉與變異算子集成到FA算法中,通過輪盤賭選擇法,選擇確定執行交叉變異的個體,將選擇到的算子復制n次,產生新的種群個體,后使用改進的交叉變異概率在新的種群中創建新的種群個體,達到種群多樣性再生的目的,避免陷入局部最優,增強算法搜索能力,找到問題的最優解。
FA由于其隨著迭代次數的增加,種群的多樣性也逐步減少,于是,FA參數完成初始化后,在種群開始進化的進程中引入多樣性度量公式,計算當前多樣性進化結果與上一次多樣性進化結果的差值,迭代初期,收斂速度較快,連續多次的多樣性計算差值較大,t-(t-1)的迭代結果為正數。迭代后期,逐漸接近最優解,t-(t-1)的迭代結果為負數。進行連續三次差值計算,若三次結果都是負數且呈現遞減趨勢就證明接近最優解,陷入了局部最優,此時引入自適應多樣性增加機制豐富種群多樣性,這即是觸發多樣性增加機制的條件。在計算出多樣性后,判斷是否滿足多樣性增加機制的條件,如果滿足條件就將遺傳算法中的選擇、交叉與變異算子集成到FA中,創建新的種群,開始新一輪的迭代,同時為防止迭代到最后的局部震蕩,加入了自適應游動參數,防止局部震蕩的出現。本文采用任意兩個個體之間的平均距離來度量種群的多樣性,平均距離越大證明種群越分散,平均距離越小,證明種群越集中,|s|為種群個體個數,在種群中任取兩個不同的粒子計算平均距離,如式(11)所示:

其中,d(X i,X j)為歐式距離。粒子i和j的位置向量分別為X i=[Pi1,P i2,…,Pin],X j=[Pj1,P j2,…,P jn],則其歐式距離如式(12):

FA迭代后期由于種群多樣性的彌散,種群對于多樣性的要求也隨之降低,上述提到在識別到FA陷入局部最優時引入多樣性增加機制,但是算法迭代后期不需要特別分散的種群去做全局搜索,就需要較小的多樣性增加機制的概率,因此賦予多樣性機制一個遞減趨勢的權重來平衡算法由于多樣性需求降低而減緩收斂速度的要求,算法迭代前期ω值較大,后期ω值較小,更新度量多樣性公式如式(13):

其中,max為最大迭代次數,iter為當前迭代次數。
2.2.1 選擇算子
本文采用基于比例選擇的輪盤賭選擇法[18],依據螢火蟲個體在迭代更新中個體亮度值來選擇執行交叉變異的螢火蟲個體,以此創建新的種群,依據式(15)對螢火蟲個體進行選擇:

其中,f(X i)為螢火蟲個體Xi的亮度值,P(X i)為個體
被選概率,同時將個體被選概率累加,后通過隨機數對隨機數落在的區域對應的螢火蟲個體進行選取。
2.2.2 改進的交叉變異算子
在傳統的遺傳算法中,交叉和變異算子的值通常被確定為0.3≤Pc≤0.8和0.001≤Pm≤0.1,在實際操作中一般都選取某一固定值,這樣的選取帶來很多局限性。在算法進化初期,個體適應能力較弱,適應能力比平均適應能力差,需要較大的交叉概率值來進行全局搜索范圍,同時選擇較小的變異概率來保存染色體中的優良基因。在算法進化的后期,個體適應度超過了平均適應度值,此時需要較小的交叉概率進行局部搜索,同時需要增加變異概率來增強算法的局部搜索能力[19]。改進后的交叉與變異概率為式(16)、(17):

其中,Fmax為個體最大的適應度,Fmean為個體平均適應度,iter為當前迭代次數,F為父代染色體的適應度值,Fmin為個體最小適應度值。
2.2.3 自適應游動參數
從式(10)可以看出,決定隨機游動大小的參數是一個固定值,使在迭代前期能較好實現全局搜索,而迭代后期由于多樣性的彌散螢火蟲個體圍繞最優點做局部搜索,此時的α由于是一個定長值可能會使得無法收斂到最優點,所以本文采用自適應因子來自發平衡算法前后期的矛盾,迭代前期由于種群分散采用較大的游動參數進行全局搜索,迭代后期種群集中采用較小的游動參數進行局部搜索。調整如式(18):

其中,α0為初始隨機游動參數,max為最大迭代次數,iter為當前迭代次數。
為了分析GAFA算法的時間復雜度,給出了它的偽代碼,具體如下所示:

GAFA算法在每輪迭代中首先運用式(13)計算任意兩個個體間的平均距離,其時間復雜度為O(n),接著個體會向發光較亮個體移動,其時間復雜度為O(n),迭代t次,因此GAFA算法迭代一輪的時間復雜度為O(n2t)。
為了直接觀察到GAFA與FA在尋優效果上的顯著差異,本文對兩者進行了改進效果的測試。具體實驗細節在4.5節中顯示與討論。
時間序列數據預測受到多方面因素的影響,具有一定的不穩定性。本文將選用在時間序列分析與預測中表現優異的LSTM模型為基礎,構建時間序列數據預測模型。首先將LSTM模型的時間窗口大小、批處理處理量和隱藏層單元數的取值范圍分別作為改進螢火蟲算法的初始群體,應用貪心策略思想分別取得表現最優的參數個體,進而組成一組最優參數組合,將這一參數組合作為LSTM的輸入參數[20]。此外,為了進一步挖掘時間序列的時間依賴關系,本文將采用兩層LSTM網絡結構[21],進一步提高模型預測性能,至此GAFA-LSTM時序預測模型搭建完成。螢火蟲算法廣泛地應用于各種優化問題的求解,但隨著種群多樣性的減少,優化性能被削弱,改進后的螢火蟲算法能夠有效避免陷入局部最優,會使得LSTM模型能夠有效確定最優超參數組合,實現高精度預測。其中,每一只螢火蟲代表一種解,訓練時,訓練精度由平均絕對百分誤差來衡量。
本文提出的改進螢火蟲算法的混合優化器主要分五部分,FA的參數初始化模塊、FA改進模塊、LSTM結構模塊、LSTM參數更新模塊、LSTM訓練預測模塊。整個GAFA-LSTM算法的步驟如下所示,模塊圖如圖2所示。

圖2 改進螢火蟲算法優化LSTM網絡的算法流程圖Fig.2 Improved firefly algorithm to optimize algorithm flow chart of LSTM network
步驟1初始化參數。
步驟2多樣性計算。利用式(13)度量種群多樣性,在連續迭代多次無果陷入局部最優時,引入自適應多樣性增加機制,幫助跳出局部最優。
步驟3判斷是否達到最優,更新最優值,如達到最優更新LSTM參數。否則返回步驟2。
步驟4保留最優參數組合,進行預測。
用電負荷:該數據來自浙江某地區2020年2月至5月每隔1小時的實際用電負荷。用電負荷為實驗中預測的目標值。
股票:該數據來自網易財經提供的某公司2019年7月至2020年5月的股票數據。股票的收盤價作為預測的目標值。
用氣量:該數據來自前瞻數據庫提供的重慶天然氣2016年1月至2018年12月的用氣量。用氣量為實驗中預測的目標值。
Beijing PM2.5:該數據來自UCI(machine learning repository)數據集,采樣時間為2010年1月1日至2014年12月31日。PM2.5濃度是在實驗中預測的目標值。具體數據集信息如表1所示。

表1 數據集信息Table 1 Data set information

本文所有的實驗均在Windows10 64位操作系統下進行,設備使用的處理器是AMD瑞龍3,顯卡是gtx1080,內存大小為8.00 GB,實驗環境是Python 3.6,開發工具為Spyder,后端使用tensorflow-gpu1.14。
優化算法選取實驗在FA和PSO中進行,經分析兩者在初始參數階段沒有顯著差異,為了找到更適用于本文場景的算法,將兩者分別對LSTM的輸入參數進行優化,并在Beijing PM2.5UCI數據集上進行驗證對比,最終以適應度曲線形式體現算法優勢[22]。實驗結果如圖3所示。
圖3中可以看出FA在迭代前期適應度曲線呈梯度下降趨勢,收斂速度優于PSO,且在迭代后期兩者性能相當,在對抗早熟能力和適用場景比較分析之后決定選取FA算法對LSTM輸入參數進行優化。

圖3 FA與PSO適應度曲線圖Fig.3 Fitness curve of FA and PSO
在對本文所做的FA改進工作進行總結時,對其改進效果進行了測試,測試如下:將GAFA與FA分別進行尋優對比,實驗中螢火蟲粒子均為初始螢火蟲群體。實驗結果如圖4所示。

圖4 尋優效果對比圖Fig.4 Comparison diagram of optimization effect
圖4經過20次迭代選取了四組尋優效果對比圖,實驗結果表明,改進后的螢火蟲算法借助于種群再生的選擇、交叉與變異算子,能夠達到持續搜索的目的,與基礎螢火蟲相比,性能有了很大程度的提升。
4.6.1 數據預處理
用電負荷數據集、用氣量數據集和股票數據集均無缺失值,無需對缺失值進行處理,其中用電負荷數據是以一天的負荷為輸出,將前n天的29個前5個用電負荷特征值作為輸入[23],預測當天24時刻的負荷作為輸出;對用氣量數據進行處理時首先將字符型特征轉化為數值,將前n個時刻的氣象特征與用氣量作為輸入,預測當前時刻的用氣量;股票數據集中將股票名稱不作為特征值,輸入變量為頭十天內的開盤價、最低價格、最高價格。當天的收盤價作為輸出;對Beijing PM2.5數據集中的離散特征數值化,即將字符型特征轉化為數值,PM2.5值標準化之后均值為0,所以用0去替換缺失值,將前n個時刻的氣象特征值與PM2.5值作為輸入,預測當前時刻的PM2.5。然后,上述數據集中的四個輸入變量都被處理為式(22),輸出值按式(23)處理:

4.6.2 實驗結果分析
此節采用經典LSTM模型、GA-LSTM模型、典型混合HFPSO-LSTM[15]模型,以及本文所提GAFA-LSTM這四種預測模型在四組不同領域的數據集上進行預測結果與實際結果的比對,并且通過擬合曲線圖來體現不同預測模型的預測效果,如圖5所示。

圖5 不同模型預測值與真實值擬合效果圖Fig.5 Fitting effect diagram of predicted value and true value of different model
圖5為四種預測模型在四組不同數據集上的預測值與真實值的擬合圖。其中圖5(a)橫坐標代表全部數據,圖5(b)、(c)、(d)橫坐標代表選取了10%的數據做了擬合圖,所有圖的縱坐標都代表實驗中預測目標的值。其中四個數據集的時間跨度從3個月到4年,長度從98到43 824。從圖中可以看出,四種預測模型在四組不同領域的數據集上的預測趨勢與真實數據走向趨勢基本吻合,但是LSTM與GA-LSTM的預測效果的擬合程度明顯差于兩種改進后的螢火蟲算法優化模型的擬合程度,而本文所提的GAFA-LSTM的預測擬合程度又優于HFPSO-LSTM模型的預測擬合程度。這說明本文所提的GAFA-LSTM對LSTM網絡模型的超參數的優化更加有效,可借鑒度更高,預測效果更加準確。
從表2結果看出,LSTM在四組數據集上的三種誤差值的表現最差,GA-LSTM的預測模型在數據集上的誤差得到一定程度的降低,但是在用氣量和Beijing PM2.5的數據集上MAE的指標誤差超過了單一神經網絡的預測誤差,HFPSO-LSTM預測模型的誤差較GA-LSTM預測模型的誤差更小,在四個數據集上的三個誤差下的表現均具有優勢,這從側面反映出混合智能優化器優化參數的效果更有優勢。本文所提模型的R2在四個數據集上分別為0.934 4、0.986 0、0.976 6與0.949 8,較其他三個模型的誤差都小。其他兩個指標也相較于其他3個模型的預測誤差均不同程度地降低,其中MAPE達0.257 6,MAE達1.467 9,這表明本文所提GAFA-LSTM預測模型會使得預測更加準確,與真實數據的偏差小,進而提高了模型的預測精度。

表2 四組數據集下不同模型的實驗結果Table 2 Experimental results of different models under four data
根據以上兩組實驗可以得出,本文所提的GAFALSTM模型與實驗中所提其他模型相比,擬合程度更高,在不同數據集上具有較強的泛化能力和較強的預測精度,而且在波動較大的數據集上也可以取得較好的擬合效果和較小的預測誤差,是一種高效的時間序列預測模型。
4.6.3 模型性能分析
為了驗證GAFA-LSTM模型的性能,將在時間復雜度和算法運行時間兩個方面來對其進行性能分析。其中經過2.3節的分析,本文模型與其他3個模型的時間復雜度相同,都為O()n2,且因LSTM為單一模型所以不參與其他3個組合模型運行時間的比較。其中運行時間為運行10次的平均值。
從表3可以看出,在3個組合模型運行時間的比較中本文所提模型在股票數據集和PM2.5數據集上時間效率較高,分別為18.222 0 s與353.753 6 s,值得注意的是這兩個數據集數據量都較大,股票數據集波動較大,PM2.5數據集平穩,說明本文所提模型魯棒性和普適性都較好。

表3 不同模型性能分析結果Table 3 Performance analysis results of different models
為了進一步提高時間序列預測精度,本文提出了一種改進的螢火算法優化LSTM輸入參數的時序預測模型。FA在尋優過程中由于多樣性彌散而帶來的陷入局部最優問題,提出加入自適應多樣性度量機制增加多樣性,來提高它的局部搜索能力,防止陷入局部最優。在迭代后期再加入自適應游動參數來避免大量螢火蟲個體在最優值附近震蕩的問題,同時將每個螢火蟲個體看作一個超參數配置去不斷優化更新LSTM模型的超參數取值從而來匹配到最優參數組合。
本文所提模型與上述實驗中所提模型相比有以下兩個結論。(1)首先提出一種改進的螢火蟲算法,且效果在測試中表現較好。(2)其次采用改進螢火蟲算法對LSTM的輸入參數進行優化,搭建了一個GAFA-LSTM預測模型,解決了依據經驗選取的參數而導致預測精度低的問題。本文構建的GAFA-LSTM模型較文中所提其他預測模型預測效果有較大幅度的提升。但是本文方法也存在一定的局限性。首先GAFA-LSTM可以取得良好的預測結果,但是未能進行更長時間跨度預測的輸出,這將是下一步探究的方向。