潘少偉,李 輝,王亞玲,蔡文斌
(1.西安石油大學 計算機學院,陜西 西安 710065;2.中國石油 長慶油田公司勘探開發研究院,陜西 西安 710018;3.西安石油大學 石油工程學院,陜西 西安 710065)
石油是國民經濟的血液,是重要的戰略資源[1]。石油在國民經濟發展、民生狀況改善中具有舉足輕重的作用[2-3]。未經提煉的石油稱為原油,其價格波動通常較大。國際上的原油價格波動往往會對世界各國的經濟造成重大影響,因此對國際上的原油價格預測就成為一項非常有意義的工作。根據預測時間的長短,可把原油價格預測劃分為兩大類:原油價格短期預測和原油價格長期預測。原油價格短期預測是指利用機器學習方法和統計分析方法等對未來幾十天甚至幾個月之內的原油價格做出預測[4-6];原油價格長期預測是指利用機器學習方法和統計分析方法等對未來一年甚至幾年內的原油價格做出預測[7-10]。國際上的原油定價機制比較復雜,而且受到某些突發政治、經濟事件的影響,所以在原油價格長期預測結果中會帶有一定的不確定性。可見,為更好地為國民經濟的發展提供服務,通過短期預測及時掌握原油價格的動態變化規律就變得非常重要。在原油價格短期預測中,傳統機器學習方法和統計分析方法取得了一定成功,但在擬合時經常會忽略歷史原油價格對當前原油價格的影響,遺漏掉隱藏于原油價格數據中的某些動態變化特征,導致最終無法完整獲取原油價格變化的邏輯序列。
近年來,計算機性能的提高使得深度學習的應用越來越廣泛[11-15]。深度學習中的循環神經網絡(recurrent neural networks,RNN)作為一種循環反饋的神經網絡框架,能夠充分考慮時間序列的相關性,并通過分析歷史信息,建立完整的時間序列模型。但RNN在訓練中容易出現梯度消失和梯度爆炸問題。長短期記憶(long short-term memory,LSTM)神經網絡作為一種特殊的RNN模型,能有效規避梯度消失和梯度爆炸問題,實現對歷史信息真實有效的利用。LSTM神經網絡在當前時間序列數據預測中得到廣泛應用[16-17]。
Bernabe等曾經指出:石油價格時間序列是一個非線性的長記憶系統[18]。所以國際上原油價格日數據也可看作是典型的時間序列,因為當天的原油價格會受到昨天或前面幾天的原油價格影響。于是,為規避某些突發政治、經濟事件的影響,深入挖掘蘊藏于原油價格日數據中的動態變化模式,進而全面把握其中的動態變化特征,該文把LSTM神經網絡應用于原油價格日數據的短期預測中。共設計三組基于LSTM神經網絡預測原油價格日數據的實驗,最終實驗結果表明利用前二十四個月的原油價格日數據預測后三個月原油價格日數據的評估效果最好,利用前六個月的原油價格日數據預測后一個月原油價格日數據的評估效果最差。
1997年,Hochreiter和Schmidhuber一起提出長短期記憶神經網絡[19],即LSTM神經網絡。LSTM神經網絡很好地解決了RNN中存在的梯度消失和梯度爆炸問題。與RNN相比,它可以記憶更長時間步上的信息。2013年,Graves等對LSTM神經網絡進行了改進,并將其應用到語音識別中[20]。如今LSTM神經網絡日益發展成熟,其基本結構如圖1所示。

圖1 LSTM神經網絡基本結構
圖1中,帶箭頭的線條表示向量的傳輸,箭頭指引向量的傳輸方向。箭頭交匯處的小圓圈表示向量按位進行相應運算,處于中央位置的大圓圈(ct)表示LSTM神經網絡的細胞狀態單元。合并的線條表示不同向量的連接,分開的線條則表示向量被復制后向不同方向傳輸。由圖1可知,LSTM神經網絡表現為三種門結構:輸入門(it)、輸出門(ot)和遺忘門(ft)。輸入門主要作用是控制進入當前細胞狀態單元的信息量,輸出門則主要控制當前細胞狀態單元輸出的信息量,遺忘門主要作用是控制并丟棄當前細胞狀態單元不需要的來自上一個細胞狀態單元的信息。通過輸入門、輸出門和遺忘門,LSTM神經網絡得以保持和更新細胞單元狀態。
LSTM神經網絡信息傳遞的基本流程如下(僅以一個神經網絡節點為例進行闡述):(1)遺忘門通過sigmoid函數對輸入信息進行控制,決定哪些信息可以進入到當前細胞狀態單元中;(2)由tanh層生成一個可添加到當前細胞狀態單元中的候選值,之后將該候選值、上一步的輸入信息和上一時刻的細胞單元狀態按位進行運算,獲得新的細胞單元狀態值;(3)通過sigmoid函數獲得初始輸出信息后,再利用tanh層把新的細胞單元狀態值進行處理,使其在-1到1之間,最后把初始輸出信息和處理后的細胞單元狀態值按位進行運算并輸出。
LSTM神經網絡信息傳遞過程中涉及的公式如下:
it=σ(Wxixt+Whiht-1+bi)
(1)
ft=σ(Wxfxt+Whfht-1+bf)
安徽中煙在“十三五”信息化規劃中提出統一數據平臺實施方案,建設“兩級數據中心”,匯集企業的生產數據,采用數據倉庫技術及各種高級統計分析和數據挖掘技術,幫助企業實現“數據、信息、知識”的轉化,實現科學決策,真正成為數據集散中心、報表處理中心和決策輔助支持中心,成為信息資源管理體系的中心和樞紐。將分散在各個業務處理系統中的數據歸集起來,為各級用戶提供數據提取和查詢服務,同時實現綜合查詢與分析,聯動查詢與統計,實現各類統計業務報表的內容共享[2]。
(2)
ot=σ(Wxoxt+Whoht-1+bo)
(3)
ct=ft×ct-1+it×tanh(Wxcxt+Whcht-1+bc)
(4)
ht=ot×tanh(ct)
(5)
式(1)中it表示輸入門中,上一時刻隱含層的輸出值和當前時刻的輸入值經過sigmoid函數處理后的值;式(2)中ft表示遺忘門中,上一時刻隱含層的輸出值和當前時刻的輸入值經過sigmoid函數處理后的值;式(3)中ot表示輸出門中,上一時刻隱含層的輸出值和當前時刻的輸入值經過sigmoid函數處理后的值;式(4)中ct表示當前時刻更新之后的細胞單元狀態值;式(5)中ht表示當前時刻隱含層的輸出值。在式(1)~式(5)中,σ和tanh為循環激活函數,ht-1表示上一時刻隱含層的輸出值,xt表示當前時刻的輸入值,W表示不同的權重矩陣,b表示不同的偏置參數。
LSTM神經網絡的這種特殊結構使它不僅可以對時間序列數據進行長期預測,還可以進行短期預測并取得了不錯的效果,因此該文將LSTM神經網絡應用于原油價格短期預測中。
本次實驗用計算機的配置:操作系統為Windows 10家庭中文版,中央處理器是Intel Core i7-9750H,內存為8.00 GB。實驗集成開發環境為PyCharm 2019.2.3(Professional Edition),程序設計語言為Python 3.7.3,神經網絡庫為Keras 2.3.1。
國際市場上的原油價格制定基本以世界主要產油區的標準油作為基準。因此該文選取美國西德克薩斯州輕質中間基原油(west Texas intermediate,WTI)的現貨價格日數據作為研究對象進行預測分析。預測分析數據的樣本區間為2016年1月1日到2019年6月30日,對由于假期等因素導致缺失的原油價格日數據利用缺失值前一天的數據進行補全,最終得到1 277個關于原油價格的樣本數據。由原油價格樣本數據可知,在2016年1月1日到2019年6月30日這段時間內,原油價格日數據表現出一定的波動,總體上表現為下降、上升,再下降再上升這樣的反復趨勢。
為了評價LSTM神經網絡對原油價格日數據的預測精度,選取均方根誤差(root mean square error,RMSE)、平均絕對誤差(mean absolute error,MAE)和平均絕對百分比誤差(mean absolute percent error,MAPE)作為評價指標。它們的計算公式如下:
(6)
(7)
(8)

用于原油價格日數據預測的LSTM神經網絡模型(以下簡稱LSTM模型)總體分為三部分:輸入層、隱含層和輸出層。輸入層功能包括歸一化樣本數據、拆分訓練集和測試集、確定時間步長和把數據重新塑造為符合LSTM神經網絡輸入格式的三維結構。隱含層是整個LSTM神經網絡的核心,LSTM模型共設置兩個隱含層,第一個隱含層設置100個神經元、第二個隱含層設置50個神經元。以均方誤差MSE作為損失函數,同時采用Adam算法作為優化算法。另外,時間步長設置為3,批處理數設置為8,總共訓練迭代100次。經過多次測試發現,此種設置的預測效果相對較好。另外,為解決LSTM模型在訓練過程中可能出現的過擬合問題,在隱含層后面嘗試增加了Dropout方法,但測試發現增加Dropout方法后的預測效果反而變差,因此在隱含層中去掉了Dropout方法。輸出層包括一個Dense層,用來對預測值進行降維并輸出。
本次實驗的流程如圖2所示,依據此流程,設計三組基于LSTM神經網絡的原油價格預測實驗。

圖2 LSTM神經網絡預測原油價格基本流程
三組實驗的詳細描述如下:
2.5.1 第一組實驗
把數據集中前六個月、前十二個月、前十八個月、前二十四個月、前三十個月和前三十六個月的原油價格日數據作為訓練集,把后一個月的原油價格日數據作為測試集進行實驗,獲得實驗結果如圖3所示。圖3中,橫坐標為預測天數,單位是天;縱坐標為原油價格,單位是美元/桶;實心黑色曲線代表原油價格日數據真實值,帶圓點、正方形、左三角、右三角、上三角和下三角標記的曲線分別代表利用前六個月、前十二個月、前十八個月、前二十四個月、前三十個月和前三十六個月的原油價格日數據構建LSTM模型產生的預測值。由圖3可看出,利用前二十四個月原油價格日數據構建的LSTM模型的預測值曲線最接近原油價格日數據真實值曲線,利用前六個月原油價格日數據構建的LSTM模型的預測值曲線與原油價格日數據真實值曲線偏離最遠,其他的LSTM模型預測值曲線與原油價格日數據真實值曲線的偏離程度介于上述兩種LSTM模型的預測值曲線之間。

圖3 后一個月原油價格日數據真實值與預測值曲線
表1給出六種LSTM模型預測后一個月原油價格日數據產生的RMSE、MAE和MAPE值。表1中,RMSE、MAE和MAPE的最小值分別為0.883 7、0.618 3和1.205 0,均由利用前二十四個月的原油價格日數據構建的LSTM模型產生;RMSE、MAE和MAPE的最大值分別為1.674 6、1.386 2和2.714 4,均由利用前六個月的原油價格日數據構建的LSTM模型產生;其他LSTM模型預測產生的RMSE、MAE和MAPE值介于上述兩種LSTM模型之間。

表1 后一個月原油價格日數據預測的評價指標對比
2.5.2 第二組實驗
把數據集中前六個月、前十二個月、前十八個月、前二十四個月、前三十個月和前三十六個月的原油價格日數據作為訓練集,把后面三個月的原油價格日數據作為測試集進行實驗,獲得實驗結果如圖4所示。圖4中橫縱坐標和各曲線的表征意義與圖3相同,在此不再贅述。由圖4可知,利用前二十四個月原油價格日數據構建的LSTM模型的預測值曲線最接近原油價格日數據真實值曲線,利用前六個月原油價格日數據構建的LSTM模型的預測值曲線與原油價格日數據真實值曲線偏離最遠,其他的LSTM模型預測值曲線與原油價格日數據真實值曲線的偏離程度介于上述兩種LSTM模型的預測值曲線之間。

圖4 后三個月原油價格日數據真實值與預測值曲線

表2 后三個月原油價格日數據預測的評價指標對比
表2給出六種LSTM模型預測后三個月原油價格日數據產生的RMSE、MAE和MAPE值。表2中,RMSE、MAE和MAPE的最小值分別為0.744 5、0.508 3和0.938 8,均由利用前二十四個月的原油價格日數據構建的LSTM模型產生;RMSE、MAE和MAPE的最大值分別為1.331 5、1.080 8和1.999 0,均由利用前六個月的原油價格日數據構建的LSTM模型產生;其他LSTM模型預測產生的RMSE、MAE和MAPE值介于上述兩種LSTM預測模型之間。
2.5.3 第三組實驗
把數據集中前六個月、前十二個月、前十八個月、前二十四個月、前三十個月和前三十六個月的原油價格日數據作為訓練集,把后面六個月的原油價格日數據作為測試集進行實驗,獲得實驗結果如圖5所示。圖5中橫縱坐標和各曲線的表征意義與圖3、圖4相同。由圖5可知,利用前二十四個月原油價格日數據構建的LSTM模型的預測值曲線最接近原油價格日數據真實值曲線,利用前六個月原油價格日數據構建的LSTM模型的預測值曲線與原油價格日數據真實值曲線偏離最遠,其他的LSTM模型預測值曲線與原油價格日數據真實值曲線的偏離程度介于上述兩種LSTM模型的預測值曲線之間。

圖5 后六個月原油價格日數據真實值與預測值曲線
表3給出六種LSTM模型預測后六個月原油價格日數據的RMSE、MAE和MAPE值。由表3可知,當訓練集為前二十四個月的原油價格日數據時,構建LSTM模型預測后六個月原油價格日數據產生的RMSE值最小,為0.866 2;當訓練集為前三十個月的原油價格日數據時,構建LSTM模型預測后六個月原油價格日數據產生的MAE和MAPE值最小,分別為0.556 1和0.986 3;當訓練集為前六個月的原油價格日數據時,預測后六個月原油價格日數據產生的RMSE、MAE和MAPE值均最大,分別為1.356 8、1.041 5和1.853 3;其他LSTM模型預測產生的RMSE、MAE和MAPE值介于上述LSTM預測模型之間。

表3 后六個月原油價格日數據預測的評價指標對比
綜合比較上述三組實驗產生的對原油價格日數據的預測結果(見表4),發現利用前六個月原油價格日數據預測后一個月的原油價格日數據產生的RMSE、MAE和MAPE值最大,分別為1.674 6、1.386 2和2.714 4,而利用前二十四個月原油價格日數據預測后三個月的原油價格日數據產生的RMSE、MAE和MAPE值最小,分別為0.744 5、0.508 3和0.938 8。同時比較圖3和圖4,發現利用前二十四個月原油價格日數據構建的LSTM模型在預測后三個月的原油價格日數據時,產生的預測值曲線與真實值曲線最為接近,而利用前六個月原油價格日數據構建的LSTM模型在預測后一個月的原油價格日數據時,產生的預測值曲線與真實值曲線偏離最遠。

表4 三組實驗中原油價格日數據預測的評價指標比較
(1)為深入挖掘蘊藏于原油價格日數據中的動態變化模式,進而全面掌握原油價格日數據的動態變化特征,該文把LSTM神經網絡引入到原油價格日數據短期預測中。
(2)利用LSTM神經網絡,以美國WTI 2016年1月1日到2019年6月30日的現貨價格日數據為研究對象,共設計三組實驗進行原油價格日數據的短期預測研究。最終實驗表明利用前二十四個月的原油價格日數據預測后三個月的原油價格日數據的評估結果最好,利用前六個月的原油價格日數據預測后一個月的原油價格日數據的評估結果最差。
(3)國際上的原油定價機制非常復雜,而且原油價格經常會受到某些突發政治、經濟事件的影響,所以原油價格的預測難度非常大。該文僅從機器學習的角度把原油價格數據當作時間序列進行預測,因此具有一定的局限性。在實際工作中,還需利用多種技術手段,結合多種信息來對原油價格變化進行綜合研究。