于志剛 辛小軍 范遠洪 宋文江 張德政
(1.中海石油(中國)有限公司湛江分公司;2.中法渤海地質服務有限公司)
油田投產(chǎn)后, 油層本身的能量被不斷消耗,同時層間壓力也在不斷減小,導致油田產(chǎn)量大幅降低。 為了提高油田的采收率,必須對油田進行注水[1~3]。 目前,國內(nèi)油田始終堅持“注好水,注夠水,精細注水”的原則[4~6],但普遍存在注采失衡的問題。 因此,對油田注水流量的預測研究具有十分重要的實際意義。
近年來,深度學習已經(jīng)成為機器學習領域一個熱門的研究方向,被廣泛應用于時間序列數(shù)據(jù)的預測[7,8]。門控循環(huán)單元(GRU)是深度學習領域一個非常受歡迎的模型, 目前已被用于解決電力、交通及養(yǎng)殖業(yè)等領域的問題。 文獻[9]提出了一種將隨機森林(RF)與GRU神經(jīng)網(wǎng)絡相結合的風電預測模型, 針對氣象信息與風電的因果關聯(lián),將融合特征輸入GRU網(wǎng)絡提取時序聯(lián)系進行風電預測,并基于真實數(shù)據(jù)集驗證了所提模型的有效性; 文獻 [10] 分別采用循環(huán)神經(jīng)網(wǎng)絡(RNN)、長短期記憶(LSTM)和GRU 3種模型對魚塘中的溶解氧含量進行了預測,結果表明GRU和LSTM的預測能力相近, 但GRU針對參數(shù)設置和模型訓練更簡便、快捷,總體上性能更優(yōu);文獻[11]利用生態(tài)浮標監(jiān)測數(shù)據(jù),分別建立了單隱層和雙隱層兩種不同隱層的人工神經(jīng)網(wǎng)絡(ANN)模型對葉綠素a (Chl-a) 濃度進行了預測; 文獻[12] 基于雙層GRU神經(jīng)網(wǎng)絡和飛蛾火焰優(yōu)化(MFO) 算法提出了一種新型自動駕駛行為決策方法,實驗表明,該方法在汽車自動駕駛的行為決策方面比現(xiàn)有的方法準確性更高。
由于注水流量數(shù)據(jù)具有一定的周期性,且當前注水量受上一時刻注水量的影響,為了充分利用該特性,提高注水流量預測精度,筆者考慮采用GRU神經(jīng)網(wǎng)絡模型進行注水流量預測。 但是以往采用GRU模型對水力發(fā)電站的水流、油田特高含水期產(chǎn)量、股票走勢及交通流量等的預測研究大多采用單一隱層的神經(jīng)網(wǎng)絡結構,其擬合能力雖強,但對主要信息的特征提取能力較差。
因此,筆者利用國內(nèi)某油田注水井的歷史注水數(shù)據(jù),建立了單隱層和雙隱層兩種GRU模型對注水流量進行預測,通過對比兩種不同隱層的預測結果來證明深度學習在注水流量預測效果上更具優(yōu)勢。
GRU神經(jīng)網(wǎng)絡模型是在RNN模型的基礎上進行改進得到的。 作為一種強大的深度學習網(wǎng)絡,RNN與其他神經(jīng)網(wǎng)絡有所不同, 它對前面的信息有一種獨特的“記憶”功能[13],同時,RNN之所以被稱為循環(huán)神經(jīng)網(wǎng)絡,是因為在RNN的網(wǎng)絡結構(圖1)中,一個時間序列當前時刻的輸出值與前一時刻的輸出值具有相關性,網(wǎng)絡會記憶前一時刻的輸出信息并直接應用到當前時刻輸出的計算中, 即隱含層之間的節(jié)點是有連接的,且當前時刻隱含層的輸入不僅包括輸入層的輸出還包括上一時刻隱含層的輸出。
圖1 傳統(tǒng)RNN結構
GRU神經(jīng)網(wǎng)絡和LSTM神經(jīng)網(wǎng)絡都是在傳統(tǒng)RNN的基礎上改進得到的, 由于獨特的結構設計,常被用于處理與時序相關的重要事件。 LSTM單元結構中包含3個門結構,分別是輸入門、遺忘門和輸出門。 與LSTM不同,GRU模型單元結構更加簡單,只有2個門結構,分別是重置門rt和更新門zt(圖2)。 圖中,xt表示輸入,ht代表t時刻隱含層的輸出,ht-1代表t-1時刻隱含層的輸出, h~t表示候選隱含層信息。 由于結構簡單,算法運算的復雜程度也隨之降低,模型更容易訓練,且在預測表現(xiàn)上與LSTM模型效果相當,因此筆者選擇GRU網(wǎng)絡結構來構建注水流量預測模型。 當樣本信息輸入GRU模型時,根據(jù)設定的規(guī)則來判斷輸入樣本里哪些是有用的信息,哪些是沒用的信息,有用的信息留下,沒用的信息會被丟棄。 通過引入門結構,在一定程度上解決了RNN反向傳播過程中存在梯度消失或梯度爆炸的問題[14]。
圖2 GRU單元結構
首先通過更新門和重置門的計算來確定當前時刻的隱含層狀態(tài)和當前的記憶內(nèi)容。 當前時刻的輸入xt和上一時刻隱含層輸出ht-1分別與權重矩陣W、U相乘,相加之后再利用sigmoid激活函數(shù)將結果壓縮在0~1之間。 如果zt趨于0,則說明上一時刻隱含層輸出將被遺棄,反之,若趨于1,則保留。 更新門和重置門的輸出為:
sigmoid函數(shù)為:
rt用來控制遺棄或保留上一時刻的記憶內(nèi)容, 如果rt為0, 那么~只包含當前時刻的輸入信息:
tanh函數(shù)為:
zt決定需要從上一時刻的隱含層中遺棄多少信息,需要加入多少當前時刻的候選隱含層信息~,最后得到ht:
為了提高模型對輸入樣本信息主要特征的提取能力,提高模型預測的精度,擬對GRU神經(jīng)網(wǎng)絡模型的隱含層結構進行改進,結合所研究的油田注水流量預測問題,給出改進后的GRU神經(jīng)網(wǎng)絡結構(圖3)。 隱含層的設置是用來更好地處理層間關系, 使神經(jīng)網(wǎng)絡具備學習訓練的功能,但過多的隱含層會直接導致神經(jīng)網(wǎng)絡計算量增大、訓練時間變長等負面問題,甚至導致預測能力降低,發(fā)生過擬合現(xiàn)象[11,15]。 因此經(jīng)過多次試驗,綜合模型的預測效果,采用了雙隱層的GRU結構,同時設置不同的神經(jīng)元節(jié)點個數(shù),對試驗結果進行對比。 輸入層代表采集到的注水歷史流量樣本輸入,輸入變量的個數(shù)設置為3個,即油壓p1、套壓p2和實際流量值Qt。在注水流量預測中,輸出層的輸出變量個數(shù)設置為1,即預測流量值Qp。
圖3 雙隱層GRU網(wǎng)絡結構示意圖
注水量主要受壓力、 溫度等多重因素的影響, 但由于同層井間溫度上下浮動變化不明顯,所以對預測結果造成的影響可以忽略不計,因此樣本數(shù)據(jù)主要采集了影響注水量的其他兩種因素,即油壓、套壓。 將國內(nèi)某油田注水井的單層歷史注水數(shù)據(jù)作為樣本數(shù)據(jù) (圖4) 進行處理和分析,該層井深1 036.3 m,選取時間段為2015年11月12日12時54分至2015年11月12日13時58分,數(shù)據(jù)采集間隔為5 s,共采集到樣本數(shù)據(jù)776組。
圖4 注水井某一時段單層歷史注水數(shù)據(jù)
為了降低模型仿真訓練的難度,提升網(wǎng)絡訓練的速度,同時為避免因輸入樣本數(shù)據(jù)過大導致的數(shù)值問題, 首先要對樣本數(shù)據(jù)進行預處理,由于樣本數(shù)據(jù)中不存在極端的最大值或最小值,因此采用歸一化處理,將數(shù)據(jù)縮放至[0,1]的范圍內(nèi)。 歸一化公式為:
其中,x′為歸一化后的值;xmax、xmin分別表示歷史注水數(shù)據(jù)中的最大值和最小值。
所選取的數(shù)據(jù)集共包含776組樣本數(shù)據(jù),試驗時將前676組數(shù)據(jù)作為訓練集,后100組數(shù)據(jù)作為測試集。 模型在注水流量上的預測結果,采用平均相對誤差(MRE)和均方誤差(MSE)進行評價,誤差越小,表明預測結果越準確,評價公式為:
其中,Qp表示預測流量值,Qt表示實際流量值。
在模型訓練過程中,合適的訓練方法和優(yōu)化器的選擇對模型訓練的效果和預測的準確度也有很大的影響。 為了避免訓練樣本數(shù)據(jù)輸入過多導致模型訓練速度過慢, 甚至出現(xiàn)過擬合的現(xiàn)象,考慮采用小批量的訓練方法,批量大小設置為5, 即按照時序每批輸入5組樣本數(shù)據(jù)進行訓練。 對于優(yōu)化器的選擇,為了能加快模型的收斂速度,選用了常見的Adam優(yōu)化器,與其他優(yōu)化算法有所不同,該優(yōu)化算法不需將學習率設定為常數(shù),算法在優(yōu)化過程中會計算神經(jīng)網(wǎng)絡每個參數(shù)的自適應學習率[16]。并采用Dropout方法來防止出現(xiàn)過擬合,丟棄率設為0.5。 每次試驗設置的迭代次數(shù)均為100次。 具體算法流程如圖5所示。
圖5 基于GRU網(wǎng)絡模型的預測算法流程
為了更直觀地進行對比驗證, 首先搭建了RNN、LSTM和GRU 3種預測模型分別對訓練集樣本數(shù)據(jù)進行訓練、測試集數(shù)據(jù)進行預測,并利用評價指標MSE對3種模型的評價結果進行評估(表1)。從表1中可以看出,LSTM和GRU兩種模型的預測誤差非常接近,均小于RNN。 且在圖6中,可以更加直觀地看出,LSTM和GRU兩種預測模型的擬合度更高, 且兩種模型的預測效果也基本吻合。但是,由于GRU在結構上進行了簡化,這使得它在模型訓練過程中消耗的時間更短,提高了試驗的整體效率。
表1 不同神經(jīng)網(wǎng)絡模型預測效果對比
圖6 不同神經(jīng)網(wǎng)絡模型測試集預測結果對比
在試驗過程中, 不同隱含層神經(jīng)元節(jié)點數(shù)的設置會對模型的預測結果造成一定影響。 如果隱含層神經(jīng)元節(jié)點數(shù)設置過少, 網(wǎng)絡對輸入信息主要特征的提取能力會相對減弱, 導致預測誤差偏大;如果節(jié)點設置過多,極易出現(xiàn)過擬合現(xiàn)象,造成模型最終泛化能力降低(表2)。 通過對兩種不同隱含層的神經(jīng)元節(jié)點數(shù)進行反復試驗,單隱層GRU網(wǎng)絡結構為3-10-1時預測效果最好(即輸入層節(jié)點數(shù)設置為3個,隱含層節(jié)點數(shù)為10個,輸出層節(jié)點數(shù)為1個),測試集的平均相對誤差為0.050 4, 雙隱層GRU結構為3-6-6-1時預測效果最好, 測試集的平均相對誤差為0.024 5。
表2 GRU不同隱層和節(jié)點設置對測試結果的影響
利用預測效果最好的單隱層(3-10-1)和雙隱層 (3-6-6-1)GRU模型分別對訓練集和測試集樣本數(shù)據(jù)進行預測結果對比,結果如圖7所示。 結果表明, 無論是訓練集仿真值和實際值的對比,還是測試集預測值和實際值的對比,單隱層和雙隱層GRU模型都能夠較好地預測注水流量的變化趨勢。
圖7 不同隱層GRU模型訓練集仿真和測試集預測效果
單隱層GRU模型676組訓練集樣本仿真MSE為0.073,100組測試集樣本預測MSE為0.084;雙隱層GRU 模型676 組訓練集樣本仿真MSE 為0.038,100組測試集樣本預測MSE為0.055。
通過對兩種不同隱層GRU模型預測結果的對比發(fā)現(xiàn):雙隱層GRU模型無論是對訓練集的仿真還是對測試集的預測效果都比單隱層GRU的效果更好。 雙隱層GRU模型訓練集仿真的MSE比單隱層下降了0.035 m3/d,測試集的MSE比單隱層下降了0.029 m3/d。這說明雙隱層結構GRU模型在對輸入信息主要特征提取方面的能力要優(yōu)于單隱層結構GRU模型,因此也有效地證明了深層學習在實際應用中的優(yōu)越性。
4.1 利用國內(nèi)某油田注水井歷史注水數(shù)據(jù)作為樣本數(shù)據(jù),采用RNN、LSTM、GRU 3種神經(jīng)網(wǎng)絡對注水流量進行了預測,結果表明GRU神經(jīng)網(wǎng)絡總體上具有更優(yōu)的性能。
4.2 搭建了兩種不同隱層結構的GRU油田注水流量預測模型,通過對兩種不同隱層GRU模型預測結果的對比和分析得出:雙隱層結構較單隱層結構有更強的主要信息特征提取能力,預測精度也更高。
4.3 通過對歷史注水數(shù)據(jù)進行仿真和預測,表明了GRU神經(jīng)網(wǎng)絡在油田注水流量預測方面的可行性和優(yōu)越性。 在實際的油田注采中,基于深層GRU神經(jīng)網(wǎng)絡的預測模型對油田注水流量進行預測有著很好的應用前景。