侯春華
(中國石化勝利油田分公司勘探開發(fā)研究院,山東東營257015)
通過新井的不斷投入來彌補(bǔ)老井遞減,是保持油田產(chǎn)油量持續(xù)穩(wěn)定的必然手段。但由于新井生產(chǎn)歷史短,不確定因素多,一直是油田產(chǎn)油量預(yù)測的重點和難點。中國對油田新井產(chǎn)油量的預(yù)測有諸多種方法,主要可以概括為基于單因素的預(yù)測方法和基于多因素的預(yù)測方法[1-9]。其中,基于單因素的預(yù)測主要采用曲線擬合法,往往只考慮時間因素;基于多因素的預(yù)測考慮了開發(fā)指標(biāo)與其他相關(guān)影響因素的關(guān)系,一般有多個輸入變量和1個輸出變量。近年來,隨著人工智能算法的進(jìn)步,人工智能預(yù)測方法逐漸應(yīng)用于油田新井產(chǎn)油量預(yù)測。人工智能算法可以較好地對復(fù)雜的非線性函數(shù)映射關(guān)系進(jìn)行描述,對數(shù)據(jù)中的特征進(jìn)行挖掘和學(xué)習(xí),從而將數(shù)據(jù)轉(zhuǎn)換為更高層次的表達(dá),擬合和預(yù)測效果均較好。目前在油田新井產(chǎn)油量預(yù)測中使用的人工智能算法主要有支持向量機(jī)回歸和反向傳播(簡稱BP)神經(jīng)網(wǎng)絡(luò)[10-13],但這2種方法無法考慮數(shù)據(jù)在時間上的相關(guān)性,并且對自變量的選擇較敏感。為此,筆者采用改進(jìn)的循環(huán)(簡稱RNN)神經(jīng)網(wǎng)絡(luò),即基于長短期記憶(簡稱LSTM)神經(jīng)網(wǎng)絡(luò)對油田新井產(chǎn)油量進(jìn)行預(yù)測,該方法不僅可以考慮相關(guān)因素對產(chǎn)油量的影響,還能考慮數(shù)據(jù)在時間上的相關(guān)性,預(yù)測精度高,適應(yīng)性強(qiáng),可作為一種新的方法應(yīng)用于油田新井產(chǎn)油量預(yù)測。
神經(jīng)網(wǎng)絡(luò)模型模仿了生物神經(jīng)元,具有加權(quán)、求和與轉(zhuǎn)移3個功能。BP神經(jīng)網(wǎng)絡(luò)[14]是一種按照誤差逆向傳播算法訓(xùn)練的多層前饋神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)包括輸入層、隱含層和輸出層,是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)。在輸入層輸入后,下一層第j個神經(jīng)元的凈輸入值方程為:
凈輸入通過傳遞函數(shù)(Transfer Function)后,即可得第j個神經(jīng)元的輸出方程為:
BP算法由數(shù)據(jù)流的正向傳播和誤差信號的反向傳播2個過程構(gòu)成。正向傳播時,傳播方向為輸入層→隱層→輸出層,每層神經(jīng)元的狀態(tài)只影響下一層神經(jīng)元。若在輸出層得不到期望的輸出,則轉(zhuǎn)向誤差信號的反向傳播流程。通過交替進(jìn)行這2個過程獲得參數(shù)值。
相比于普通的BP神經(jīng)網(wǎng)絡(luò),RNN神經(jīng)網(wǎng)絡(luò)是有記憶的,它能夠捕捉到序列的歷史信息并將其應(yīng)用于當(dāng)前輸出的計算中。在RNN神經(jīng)網(wǎng)絡(luò)中,一個序列在當(dāng)前的輸出不僅與其在當(dāng)前的輸入有關(guān),也與前面的輸出有關(guān),即能夠捕捉到序列的歷史信息并將其應(yīng)用于當(dāng)前輸出的計算中。而BP神經(jīng)網(wǎng)絡(luò)假設(shè)樣本之間是相互獨立的,無法將數(shù)據(jù)在時間上的相關(guān)性考慮進(jìn)去,因此在處理序列數(shù)據(jù)時采用RNN神經(jīng)網(wǎng)絡(luò)可以避免BP神經(jīng)網(wǎng)絡(luò)的缺點。
油田產(chǎn)油量除了受到工作量、地質(zhì)因素和技術(shù)因素等影響之外,在時間上也表現(xiàn)出較強(qiáng)的相關(guān)性,若進(jìn)行產(chǎn)油量預(yù)測時未將其考慮進(jìn)去則會對預(yù)測的準(zhǔn)確度造成較大的影響,因此RNN神經(jīng)網(wǎng)絡(luò)更適合于油田產(chǎn)油量的預(yù)測。RNN神經(jīng)網(wǎng)絡(luò)主要是利用其隱藏層單元將產(chǎn)油量在時間上的相關(guān)性考慮進(jìn)去,其隱藏層單元展開如圖1所示。
由當(dāng)前步的輸入和隱藏層上一步的狀態(tài)計算得到當(dāng)前步的狀態(tài)為:
RNN神經(jīng)網(wǎng)絡(luò)可以通過時間反向傳播(Back-Propagation Through Time,簡稱 BPTT)算法進(jìn)行訓(xùn)練。由于RNN神經(jīng)網(wǎng)絡(luò)每一隱藏層的各個時間步都共享權(quán)重參數(shù)U,W和V,即當(dāng)前損失函數(shù)對網(wǎng)絡(luò)權(quán)重的偏導(dǎo)數(shù)不僅與當(dāng)前時間步有關(guān),還與之前的時間步有關(guān),因此需要對每個時間步反向傳播的結(jié)果利用鏈?zhǔn)椒▌t進(jìn)行疊加,得到損失函數(shù)對網(wǎng)絡(luò)權(quán)重的偏導(dǎo)數(shù),再通過梯度下降對網(wǎng)絡(luò)權(quán)重進(jìn)行更新。
在RNN神經(jīng)網(wǎng)絡(luò)中,理論上隱藏層第t時間步的狀態(tài)是可以包含前面所有時間步信息的,但隨著時間步反向迭代的進(jìn)行,較遠(yuǎn)時間步的梯度會逐漸趨近于0,致使標(biāo)準(zhǔn)RNN神經(jīng)網(wǎng)絡(luò)無法學(xué)習(xí)到長期依賴,這被稱為梯度消失(Vanishing Gradient)問題。
在建立油田產(chǎn)油量的預(yù)測模型時,利用的數(shù)據(jù)往往是一個較長周期內(nèi)的年度數(shù)據(jù),甚至是大量的月度和每日的數(shù)據(jù)。因此,如果直接基于RNN神經(jīng)網(wǎng)絡(luò)構(gòu)建預(yù)測模型,則會由于梯度消失的問題對較早時期的數(shù)據(jù)無法學(xué)習(xí)。
為了解決梯度消失問題,有學(xué)者對標(biāo)準(zhǔn)RNN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),提出了LSTM神經(jīng)網(wǎng)絡(luò)[15]。在RNN神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,LSTM神經(jīng)網(wǎng)絡(luò)引入了記憶單元(Memory Cell)和隱藏層狀態(tài)(Cell State)的機(jī)制來控制隱藏層之間的信息傳遞。一個LSTM神經(jīng)網(wǎng)絡(luò)的記憶單元內(nèi)有3個門(Gates)計算結(jié)構(gòu)(圖2),分別是輸入門(Input Gate)、遺忘門(Forget Gate)和輸出門(Output Gate)。其中,輸入門能控制新信息的加入或濾出;遺忘門能忘記需要丟掉的信息以及保留過去有用的信息;輸出門能使記憶單元只輸出與當(dāng)前時間步相關(guān)的信息。這3個門結(jié)構(gòu)在記憶單元中進(jìn)行矩陣乘法和非線性求和等運算,使得記憶在不斷的迭代中仍然不會衰減。
圖2 LSTM神經(jīng)網(wǎng)絡(luò)的記憶單元結(jié)構(gòu)Fig.2 Memory cell structure of LSTM neural network
第t時間步輸入的信息首先通過輸入門,第t時間步記憶單元輸入層的值和隱藏層狀態(tài)的候選值分別為:
隨后,信息通過Forget Gate,第t時間步記憶單元遺忘層的值為:
此時,可以得到記憶單元隱藏層狀態(tài)在第t時間步時的更新值為:
最后,信息通過Output Gate,第t時間步記憶單元輸出層的值以及最終記憶單元的輸出值分別為:
研究[16-17]表明,LSTM神經(jīng)網(wǎng)絡(luò)在諸多條件下的表現(xiàn)均優(yōu)于標(biāo)準(zhǔn)RNN神經(jīng)網(wǎng)絡(luò)?;谝陨辖榻B,針對LSTM神經(jīng)網(wǎng)絡(luò)對多元時間序列建模能力強(qiáng)的特點,采用LSTM神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)中的特征進(jìn)行挖掘和學(xué)習(xí),得到更加理想的預(yù)測模型,對油田產(chǎn)油量進(jìn)行預(yù)測。
利用LSTM神經(jīng)網(wǎng)絡(luò)的建模步驟主要包括:①對所選數(shù)據(jù)集進(jìn)行劃分,得到訓(xùn)練集和驗證集來進(jìn)行交叉驗證,并保留一部分作為測試集對模型進(jìn)行評價。②為避免過多輸入變量造成求解模型的困難,對輸入的影響變量進(jìn)行篩選。③為消除各個變量之間的不同量綱并加快模型訓(xùn)練速度,在輸入數(shù)據(jù)前對每個變量的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。④選擇模型的一系列超參數(shù)進(jìn)行網(wǎng)絡(luò)訓(xùn)練,并根據(jù)結(jié)果不斷進(jìn)行調(diào)試,得到最終的預(yù)測模型。⑤將訓(xùn)練好的模型在測試集上進(jìn)行測試,對比預(yù)測結(jié)果與實際值的差距,檢驗?zāi)P偷念A(yù)測效果。
油田的產(chǎn)油量預(yù)測包括自然產(chǎn)油量、新井產(chǎn)油量、措施產(chǎn)油量等不同構(gòu)成產(chǎn)油量的預(yù)測。不同的構(gòu)成,影響因素不同,但都可以采用該方法進(jìn)行預(yù)測。為說明方法的使用步驟及驗證方法的精度,以某油田新井單井年產(chǎn)油量預(yù)測為例,構(gòu)建相應(yīng)的LSTM神經(jīng)網(wǎng)絡(luò)模型進(jìn)行產(chǎn)油量預(yù)測,并與支持向量回歸和BP神經(jīng)網(wǎng)絡(luò)2種方法的預(yù)測結(jié)果進(jìn)行對比。
選取某油田2001—2017年開發(fā)指標(biāo)中的年度數(shù)據(jù)。其中,將2001—2012年的數(shù)據(jù)作為訓(xùn)練集用于擬合模型,2013—2016年的數(shù)據(jù)作為驗證集用于確定網(wǎng)絡(luò)結(jié)構(gòu)和模型參數(shù),保留2017年的數(shù)據(jù)作為測試集用于評價模型性能。模型的輸出變量是新井單井年產(chǎn)油量,候選的輸入變量包括區(qū)塊的綜合含水率、注采比、單井控制地質(zhì)儲量、采出程度、新井總井?dāng)?shù)、新井當(dāng)年生產(chǎn)天數(shù)。LSTM神經(jīng)網(wǎng)絡(luò)模型的構(gòu)建通過Keras深度學(xué)習(xí)框架實現(xiàn)。
過多的輸入變量將會導(dǎo)致網(wǎng)絡(luò)規(guī)模過大、參數(shù)過多、收斂速度慢。此外,若輸入變量之間高度相關(guān),造成變量的重復(fù)使用和數(shù)據(jù)冗余,也會增加網(wǎng)絡(luò)的計算量。因此,采用Pearson相關(guān)性分析來衡量油田數(shù)據(jù)的線性相似度,選擇與新井單井年產(chǎn)量相關(guān)性較高但相關(guān)性較小的輸入變量來避免上述問題。2個變量的Pearson相關(guān)系數(shù)計算公式為:
Pearson相關(guān)系數(shù)的絕對值越接近1,2個變量間的相關(guān)程度越高;Pearson相關(guān)系數(shù)越接近0,2個變量間的相關(guān)程度越弱。從所選輸入變量及其之間的相關(guān)性分析結(jié)果(表1)可以看出,綜合含水率與單井控制地質(zhì)儲量、采出程度相關(guān)系數(shù)達(dá)到0.77以上,說明這3個指標(biāo)存在較明顯的相關(guān)性,開發(fā)指標(biāo)之間并不是獨立的。因此,僅選取其中1項綜合含水率進(jìn)入模型即可代表3個因素對預(yù)測變量的影響。同時,由于綜合含水率、注采比、新井總井?dāng)?shù)、新井當(dāng)年生產(chǎn)天數(shù)4個變量之間相關(guān)性較低,因此選擇這幾個作為模型的輸入變量較為合適。
表1 油田所選輸入變量及其之間的相關(guān)性分析結(jié)果Table1 Selected input variables and their correlation analysis result
在輸入數(shù)據(jù)前,對每個變量進(jìn)行極差標(biāo)準(zhǔn)化處理,映射到(0,1)區(qū)間,公式為:
實際操作中,在變量進(jìn)入模型前,由于考慮了多個滯后期的影響,需要指定時間步長并對數(shù)據(jù)進(jìn)行重塑。時間步長為1意味著t-1時點的輸入特征會作為預(yù)測t時點目標(biāo)變量的輸入,時間步長為2意味著t-2和t-1時點的輸入特征會作為預(yù)測t時點目標(biāo)變量的輸入,依此類推。最終進(jìn)入模型的數(shù)據(jù)被重塑為(樣本數(shù)目、時間步長、特征數(shù)目)三維數(shù)據(jù)。通過多次調(diào)整,觀察到在利用所選數(shù)據(jù)構(gòu)建預(yù)測模型時,采用時間步長為3可以得到較好的預(yù)測效果。
采用雙LSTM層的神經(jīng)網(wǎng)絡(luò)模型對新井單井年產(chǎn)油量進(jìn)行預(yù)測。經(jīng)過不斷地調(diào)試和搜索,最終確定模型第1層有50個神經(jīng)元,第2層有60個神經(jīng)元,激活函數(shù)采用ReLU激活函數(shù),損失函數(shù)采用均方誤差函數(shù),優(yōu)化器為Adam優(yōu)化算法,每次訓(xùn)練的輪次為100。由于多個網(wǎng)絡(luò)層帶來大量參數(shù),實際訓(xùn)練中容易過擬合,因此采用Dropout方法防止過擬合。Dropout方法在眾多數(shù)據(jù)集上被驗證是防止過擬合的有效方法[18],是指在深度學(xué)習(xí)網(wǎng)絡(luò)的訓(xùn)練過程中,按照一定的比例將神經(jīng)網(wǎng)絡(luò)單元暫時從網(wǎng)絡(luò)中丟棄。采取的Dropout比例為0.1。另外,由于實際訓(xùn)練時網(wǎng)絡(luò)初始權(quán)重的設(shè)定等過程存在隨機(jī)性,因此將訓(xùn)練過程重復(fù)實驗30次,將表現(xiàn)指標(biāo)上得到的結(jié)果取平均值作為衡量模型表現(xiàn)的參考。其中一次訓(xùn)練過程中,模型的損失函數(shù)下降過程(圖3)以及產(chǎn)油量實際值和擬合值的對比(圖4)可以看到,模型在訓(xùn)練集上的損失函數(shù)不斷下降并最終趨近于0,說明最終得到的參數(shù)是該結(jié)構(gòu)下的最優(yōu)參數(shù)結(jié)果;而從圖4中可以看到,模型得到的擬合值曲線與新井單井年產(chǎn)油量的實際值曲線表現(xiàn)出了同樣的趨勢,并且在每一年度中兩者之間的誤差都比較小甚至十分接近,說明模型的擬合效果很好。
圖3 損失函數(shù)下降過程Fig.3 Loss function decline process
圖4 新井單井年產(chǎn)油量實際值與擬合值對比Fig.4 Comparison of actual and fitting values of yearly oil production of new single well
利用模型訓(xùn)練得到擬合值和所選取數(shù)據(jù)的實際值之間的平均相對誤差來衡量模型的擬合效果,30次訓(xùn)練的平均相對誤差均值為9.91%,說明該模型擬合效果較好。
將訓(xùn)練好的模型用于預(yù)測2017年新井單井年產(chǎn)油量,根據(jù)標(biāo)準(zhǔn)化的過程,將預(yù)測變量逆向還原后與實際值對比,并計算預(yù)測值的平均預(yù)測誤差。利用支持向量回歸模型和BP神經(jīng)網(wǎng)絡(luò)對同一數(shù)據(jù)集建模進(jìn)行預(yù)測。從3種方法的預(yù)測結(jié)果及對比(表2)可看出,LSTM神經(jīng)網(wǎng)絡(luò)的預(yù)測值為1 255.67 t/a,與實際值1 287.76 t/a差距較小,平均預(yù)測誤差為1.45%,說明應(yīng)用LSTM神經(jīng)網(wǎng)絡(luò)對油田產(chǎn)油量的預(yù)測精度較高;并且30次訓(xùn)練過程中預(yù)測值的標(biāo)準(zhǔn)差為18.48,預(yù)測誤差的標(biāo)準(zhǔn)差為0.99%,說明構(gòu)建出的模型在不同的隨機(jī)初始權(quán)重下得到的預(yù)測結(jié)果有著較好的穩(wěn)定性。
表2 3種方法預(yù)測2017年新井單井年產(chǎn)油量效果對比Table2 Performance comparison of forecasted yearly oil production of new single wells by LSTM neural network,support vector regression model and BP neural network in 2017
支持向量回歸模型和BP神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集和驗證集上的平均相對誤差分別為10.92%和12.17%,對2017年數(shù)據(jù)的平均預(yù)測誤差為6.24%和9.88%。這2種模型的擬合效果稍差于LSTM神經(jīng)網(wǎng)絡(luò),預(yù)測準(zhǔn)確性相比于LSTM神經(jīng)網(wǎng)絡(luò)差距較大。因此基于LSTM神經(jīng)網(wǎng)絡(luò)構(gòu)建的新井單井年產(chǎn)油量預(yù)測模型的效果要優(yōu)于基于支持向量回歸和BP神經(jīng)網(wǎng)絡(luò)構(gòu)建出的模型。
將3種方法得到的擬合和預(yù)測結(jié)果分別與實際值對比(圖5)可以看到,LSTM神經(jīng)網(wǎng)絡(luò)模型不僅能夠擬合和預(yù)測得更加準(zhǔn)確,還能更好地把握住數(shù)據(jù)變化的趨勢,而另外2種模型對數(shù)據(jù)趨勢的把握都稍差于LSTM神經(jīng)網(wǎng)絡(luò)模型。
圖5 3種方法新井單井年產(chǎn)油量實際值與擬合值對比Fig.5 Comparison of actual and fitting values of yearly oil production of new single well estimated by three methods
提出基于LSTM神經(jīng)網(wǎng)絡(luò)的油田新井產(chǎn)油量預(yù)測模型。以某油田新井單井年產(chǎn)油量預(yù)測為例,說明了方法使用步驟,驗證方法精度。利用Pearson相關(guān)性分析對網(wǎng)絡(luò)輸入變量進(jìn)行了篩選,設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)及確定參數(shù),將數(shù)據(jù)歸一化并重塑后對模型進(jìn)行訓(xùn)練并進(jìn)行預(yù)測。實例結(jié)果表明,與支持向量回歸模型和BP神經(jīng)網(wǎng)絡(luò)相比,LSTM模型預(yù)測精度較高、適應(yīng)性較強(qiáng),基于LSTM神經(jīng)網(wǎng)絡(luò)的預(yù)測方法是可行的,可以作為一種新的方法用于預(yù)測油田新井產(chǎn)油量。
符號解釋:
Sj——下一層第 j個神經(jīng)元的凈輸入;j,i——變量,1,2,…,n;wji——第i個神經(jīng)元與下一層第j個神經(jīng)元的連接強(qiáng)度,即權(quán)值;xi——第i個神經(jīng)元的輸入,即自變量的第i個樣本點;bj——閾值;yj——下一層第j個神經(jīng)元的輸出,即因變量的第j個樣本點;f(·)——傳遞函數(shù);wij——神經(jīng)元之間的權(quán)值;st——隱藏層第t時間步的狀態(tài);t——隱藏層記憶單元的時間長度;θs——隱藏層激活函數(shù);U——輸入層到隱藏層的權(quán)重矩陣;S——神經(jīng)網(wǎng)絡(luò)的隱藏層;W——隱藏層到隱藏層的權(quán)重矩陣;V——隱藏層到輸出層的權(quán)重矩陣;o——神經(jīng)網(wǎng)絡(luò)的輸出層;x——神經(jīng)網(wǎng)絡(luò)的輸入層;xt——第t時間步時的輸入;ot——第t時間步記憶單元輸出層的值;θo——輸出層激活函數(shù);it——第t時間步記憶單元輸入層的值;θi——該層激活函數(shù);Wi——記憶單元中輸入對應(yīng)的權(quán)重;Ui——記憶單元中上一時間步輸出值對應(yīng)的權(quán)重;ht-1——上一時間步輸出值;bi——記憶單元中的常數(shù);C?t——第t時間步隱藏層狀態(tài);θC——隱藏層激活函數(shù);WC——隱藏層中輸入對應(yīng)的權(quán)重;UC——隱藏層中上一時間步輸出值對應(yīng)的權(quán)重;bC——隱藏層中的常數(shù); ft——第t時間步記憶單元遺忘層的值;θf——遺忘層的激活函數(shù);Wf——遺忘層中輸入對應(yīng)權(quán)重;Uf——遺忘層中上一時間步輸出值對應(yīng)的權(quán)重;bf——遺忘層中的常數(shù);Ct——隱藏層狀態(tài)在第t時間步的值;?——矩陣的哈達(dá)瑪積(Hadamard Prod?uct);Wo——該層中輸入對應(yīng)權(quán)重;Uo——輸出層中上一時間步輸出值對應(yīng)的權(quán)重;Vo——輸出層中隱藏層狀態(tài)對應(yīng)的權(quán)重;bo——輸出層中常數(shù);ht——第t時間步最終輸出值;θh——對隱藏層狀態(tài)值的激活函數(shù); r——Pearson相關(guān)系數(shù);N——樣本數(shù)量;xij——第i個樣本第j個變量的值。