張庭婷, 潘美琪, 朱天怡, 曹 煜, 張站權(quán), 劉單珂, 賀 興, 于立軍
(1.上海交通大學(xué) 碳中和發(fā)展研究院, 上海 200230; 2.上海交通大學(xué) 智慧能源創(chuàng)新學(xué)院, 上海 200240;3.上海交通大學(xué) 電子信息與電氣工程學(xué)院, 上海 200240)
油田開(kāi)發(fā)指標(biāo)的科學(xué)可靠預(yù)測(cè)是評(píng)價(jià)油田開(kāi)發(fā)條件、編制油田開(kāi)發(fā)計(jì)劃、設(shè)計(jì)油田開(kāi)發(fā)方案的基礎(chǔ)和依據(jù)。油藏開(kāi)發(fā)過(guò)程中,當(dāng)油藏含水超過(guò)90%時(shí),通常認(rèn)為它處于特高含水期。相較中低含水油藏的開(kāi)發(fā),特高含水油藏階段的顯著特征主要表現(xiàn)在采油速度低、剩余油過(guò)于分散、措施效果變差、井況惡化、開(kāi)發(fā)經(jīng)濟(jì)效益下降等方面[1-2]。目前中國(guó)大多數(shù)油田已進(jìn)入高/特高含水期[3-4],這給油田的高效開(kāi)發(fā)提出了更高的要求,亟須科學(xué)可靠的開(kāi)發(fā)指標(biāo)預(yù)測(cè)(如產(chǎn)量預(yù)測(cè)等)來(lái)支撐油田的開(kāi)發(fā)。
在對(duì)油田產(chǎn)量進(jìn)行預(yù)測(cè)時(shí),常規(guī)的方法是依據(jù)各種曲線理論,如遞減曲線、增長(zhǎng)曲線和水區(qū)曲線等[5-6],但特高含水期利用水驅(qū)特征曲線等傳統(tǒng)方法來(lái)預(yù)測(cè)產(chǎn)量時(shí),常帶來(lái)水驅(qū)特征曲線上翹的問(wèn)題,使得預(yù)測(cè)誤差增大。并且,進(jìn)入特高含水期的油田,地層物性變化多樣,開(kāi)發(fā)情況復(fù)雜,原始數(shù)據(jù)獲取困難,加上數(shù)據(jù)的殘缺性和波動(dòng)性,容易造成原有產(chǎn)量預(yù)測(cè)模型的結(jié)果與該階段的真實(shí)生產(chǎn)狀況偏離較大[7]。同時(shí),傳統(tǒng)的油藏?cái)?shù)值模擬等方法花費(fèi)高、時(shí)效性差。因此,對(duì)油藏開(kāi)發(fā)工作而言,迫切需要開(kāi)發(fā)出既能提高工作效率、又能提高預(yù)測(cè)精度的預(yù)測(cè)方法。
近些年,隨著人工智能技術(shù)的發(fā)展,石油工業(yè)的智能化得以快速發(fā)展[8],以機(jī)器學(xué)習(xí)為代表的人工智能技術(shù)貫穿于石油工業(yè)的上下游全產(chǎn)業(yè)鏈[9],顯著提高了油氣全產(chǎn)業(yè)鏈的效率和效益[10]。在油氣開(kāi)發(fā)和生產(chǎn)中,機(jī)器學(xué)習(xí)被廣泛應(yīng)用于動(dòng)態(tài)分析、生產(chǎn)指標(biāo)預(yù)測(cè)、開(kāi)發(fā)方案智能決策與優(yōu)化及開(kāi)發(fā)實(shí)驗(yàn)數(shù)據(jù)挖掘與應(yīng)用等問(wèn)題[10]。針對(duì)特高含水期油田產(chǎn)量預(yù)測(cè),國(guó)內(nèi)外學(xué)者都進(jìn)行了大量的研究,使用的網(wǎng)絡(luò)從BP神經(jīng)網(wǎng)絡(luò)拓展到結(jié)構(gòu)相對(duì)復(fù)雜、層數(shù)較深的網(wǎng)絡(luò)[11-13]。常被用于油田產(chǎn)量預(yù)測(cè)的機(jī)器算法有支持向量機(jī)(SVM)[14]、自回歸(AR)、人工神經(jīng)網(wǎng)絡(luò)(ANN)[15-16]和長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)[17]等,研究的重點(diǎn)包括數(shù)據(jù)預(yù)處理[18]、特征選擇和學(xué)習(xí)器的選擇[13]等。研究表明,學(xué)習(xí)器的選擇會(huì)對(duì)預(yù)測(cè)結(jié)果產(chǎn)生很大影響,學(xué)習(xí)器選擇不當(dāng)會(huì)導(dǎo)致訓(xùn)練速度慢、預(yù)測(cè)精度低、擬合度過(guò)高等問(wèn)題。文獻(xiàn)[19]認(rèn)為L(zhǎng)STM在油氣生產(chǎn)率時(shí)間序列預(yù)測(cè)中優(yōu)于Simple RNN。此外,數(shù)據(jù)信息的多少也會(huì)影響預(yù)測(cè)結(jié)果,輸入數(shù)據(jù)里涵蓋不同的有用信息,其預(yù)測(cè)精度也往往不同。在對(duì)油田產(chǎn)量進(jìn)行預(yù)測(cè)時(shí),若僅憑預(yù)測(cè)誤差的高低來(lái)舍棄誤差較大的方法,往往會(huì)造成信息的丟失,從而降低預(yù)測(cè)的可靠性?;诙喾N方法綜合集成的組合預(yù)測(cè)方法可有效解決這類問(wèn)題。
組合預(yù)測(cè)方法的本質(zhì)是綜合多個(gè)“好而不一樣”的預(yù)測(cè)模型的有用信息,構(gòu)成一個(gè)新的預(yù)測(cè)模型,旨在降低方差,提高指標(biāo)的整體預(yù)測(cè)精度。平均法、投票法和學(xué)習(xí)法(Stacking)是3種常見(jiàn)的集成學(xué)習(xí)結(jié)合策略。其中,采用多折交叉驗(yàn)證的Stacking是相對(duì)更為穩(wěn)健的一種模型融合策略。近兩年,基于Stacking集成的模型融合預(yù)測(cè)被用于電力負(fù)荷預(yù)測(cè)[20-21]、交通流量預(yù)測(cè)[22]、火災(zāi)預(yù)測(cè)[23]、圖像識(shí)別[24]等領(lǐng)域,取得了較好的效果。在石油開(kāi)發(fā)領(lǐng)域,也出現(xiàn)了一些Stacking模型的應(yīng)用探索。文獻(xiàn)[25]在綜合Stacking、Boosting、Bagging等集成方法優(yōu)缺點(diǎn)的基礎(chǔ)上,提出一種名為B2S的融合模型并將其應(yīng)用于提高油氣采收率,該模型在426個(gè)樣本數(shù)據(jù)集上實(shí)現(xiàn)了96.94%的測(cè)試精度。
特高含水油田開(kāi)發(fā)系統(tǒng)錯(cuò)綜復(fù)雜。在構(gòu)建針對(duì)特高含水油田的動(dòng)態(tài)產(chǎn)量預(yù)測(cè)模型時(shí),需要在剖析常規(guī)多種預(yù)測(cè)方法的基礎(chǔ)上,發(fā)展適合特高含水油田區(qū)塊里不同產(chǎn)油井的組合預(yù)測(cè)方法,從而指導(dǎo)油田高效生產(chǎn)開(kāi)發(fā)。本文將典型的和前沿的機(jī)器學(xué)習(xí)算法極限梯度提升樹(shù)(XGBoost)、LSTM、時(shí)域卷積網(wǎng)絡(luò)(TCN)等與集成學(xué)習(xí)方式進(jìn)行融合,構(gòu)建基于Stacking的組合預(yù)測(cè)方法,用于預(yù)測(cè)油田區(qū)塊多個(gè)差異化油井的動(dòng)態(tài)產(chǎn)量。首先對(duì)Stacking集成學(xué)習(xí)的理論框架以及各種算法的訓(xùn)練機(jī)理進(jìn)行介紹;其次,考慮多口產(chǎn)油井的數(shù)據(jù)觀測(cè),建立Stacking框架下的多模型融合油田產(chǎn)量預(yù)測(cè)模型;最后,通過(guò)多口油井的產(chǎn)量預(yù)測(cè)驗(yàn)證算法的有效性。
圖1所示為Stacking集成學(xué)習(xí)的算法框架結(jié)構(gòu)[26]。它首先將原始數(shù)據(jù)集按照一定的規(guī)則進(jìn)行劃分,劃分后的若干子集輸入到第1層預(yù)測(cè)模型中通過(guò)各基學(xué)習(xí)器進(jìn)行訓(xùn)練,得到的預(yù)測(cè)結(jié)果為第1層模型的輸出。然后將該預(yù)測(cè)結(jié)果輸入到第2層模型,并利用該層的元學(xué)習(xí)器模型進(jìn)行訓(xùn)練,得到最終的預(yù)測(cè)結(jié)果。Stacking在訓(xùn)練基學(xué)習(xí)器時(shí),需要使用交叉驗(yàn)證法,再在眾多基學(xué)習(xí)器求出的預(yù)測(cè)結(jié)果基礎(chǔ)上訓(xùn)練元學(xué)習(xí)器。集成學(xué)習(xí)方式可解決單個(gè)模型容易陷入欠擬合或過(guò)擬合的困境,得到泛化性能優(yōu)良的學(xué)習(xí)器,從而改善模型的整體預(yù)測(cè)精度。
圖1 Stacking集成學(xué)習(xí)算法框架結(jié)構(gòu)
訓(xùn)練Stacking模型時(shí),主要包括3個(gè)步驟[27]:
1)數(shù)據(jù)集劃分與學(xué)習(xí)器確定。對(duì)于數(shù)據(jù)集A={(yn,xn),n=1,2,…,N},xn代表樣本n的特征向量,yn為樣本n對(duì)應(yīng)的預(yù)測(cè)值。借助隨機(jī)采樣的方式,將樣本數(shù)據(jù)集劃分為訓(xùn)練集S和測(cè)試集T,同時(shí)確定基學(xué)習(xí)器的個(gè)數(shù)為M和元學(xué)習(xí)器的個(gè)數(shù)為1。
2)進(jìn)行k折交叉運(yùn)算。將訓(xùn)練集S劃分成k個(gè)大小相似的集合S1,S2,…,Sk,其中S-k=S-Sk,Sk為k折交叉驗(yàn)證中的訓(xùn)練集,S-k則為測(cè)試集。在第1層預(yù)測(cè)模型中,對(duì)Sk采用基學(xué)習(xí)器算法m進(jìn)行訓(xùn)練,得到基模型Lm,m=1,2,…,M。對(duì)Sk中的每個(gè)樣本xn,用zkn來(lái)表示基學(xué)習(xí)器Lm對(duì)它的預(yù)測(cè)。樣本對(duì)應(yīng)的預(yù)測(cè)值yn和各基學(xué)習(xí)器預(yù)測(cè)得到的新結(jié)果zkn一同構(gòu)成新樣本S′,即S′={(yn,z1n,z2n,…,zkn),n=1,2,…,N},新生成的S′將被用于訓(xùn)練元學(xué)習(xí)器。
3)元學(xué)習(xí)器訓(xùn)練。通過(guò)第2層預(yù)測(cè)模型對(duì)新生成的S′進(jìn)行訓(xùn)練得到L′,利用M個(gè)基學(xué)習(xí)器產(chǎn)生的M個(gè)測(cè)試指標(biāo)集對(duì)元學(xué)習(xí)器進(jìn)行檢驗(yàn)和判斷評(píng)價(jià)。
Stacking融合方式的最大特征在于充分考慮第1層算法的特征,并通過(guò)第2層的結(jié)合策略發(fā)現(xiàn)第1層模型中各類算法的預(yù)測(cè)誤差并及時(shí)糾正,從而可對(duì)模型的整體預(yù)測(cè)精度進(jìn)行改善。
1.2.1 極限梯度提升樹(shù)模型
極限梯度提升樹(shù)(XGBoost)是從傳統(tǒng)梯度提升決策樹(shù)改進(jìn)和擴(kuò)展而得到的集成樹(shù)模型[28]。它的主要特色在于:不但可使用分類與回歸樹(shù)(CART),也能使用線性基礎(chǔ)模型;可自定義損失函數(shù),增加了模型構(gòu)建的靈活性;在損失函數(shù)中加入了一個(gè)正則項(xiàng),有助于模型泛化并防止模型過(guò)擬合;使用損失函數(shù)的二階偏導(dǎo)數(shù),可提供有關(guān)梯度方向的更多信息。
XGBoost與GBDT類似,本質(zhì)為加法模型,即是在每一步迭代中只優(yōu)化當(dāng)前步中的子模型,其目標(biāo)函數(shù)為
(1)
運(yùn)用二階泰勒展開(kāi)來(lái)可將XGBoost的損失函數(shù)近似表達(dá),即
(2)
(3)
由于前m-1個(gè)子模型已確定,故上式中除了fm(x)外都是常數(shù),因此,目標(biāo)函數(shù)可轉(zhuǎn)為
(4)
對(duì)新的目標(biāo)函數(shù)[式(4)]進(jìn)行模型尋優(yōu),十分依賴gi和hi。為了防止過(guò)擬合,有時(shí)會(huì)在模型更新公式Fm(xi)=Fm-1(xi)+fm(xi)中在該輪訓(xùn)練的基學(xué)習(xí)器上乘以一個(gè)系數(shù),稱為學(xué)習(xí)速率(也稱縮減系數(shù))。學(xué)習(xí)速率的取值越小,每個(gè)輪次更新時(shí)“步長(zhǎng)“越小,模型越保守。
1.2.2 Bagging
Bagging是典型的并行類算法,其核心是基于自助采樣(bootstrap sampling)[29]。假設(shè)數(shù)據(jù)集D有m個(gè)樣本,需要在D中按照有放回的方式進(jìn)行采樣產(chǎn)生新的數(shù)據(jù)集D′,具體采用過(guò)程為:每次隨機(jī)從D中挑選一個(gè)樣本,將其拷貝放入D′,然后將該樣本放回D中,再次進(jìn)行采樣,這次采樣有可能采到上次放回的樣本,如此重復(fù)執(zhí)行m次后,得到數(shù)據(jù)集D′。從以上過(guò)程中可以看出,D中有一部分樣本會(huì)在D′中多次出現(xiàn),一部分樣本始終不會(huì)在D′中出現(xiàn)。一般采用D′作為訓(xùn)練集,未被選中的作為測(cè)試集,測(cè)試結(jié)果亦稱“包外估計(jì)”?!鞍夤烙?jì)”的數(shù)據(jù)沒(méi)有參與訓(xùn)練,可用來(lái)檢驗(yàn)?zāi)P偷姆夯芰Α?/p>
Bagging算法是在自助采樣的基礎(chǔ)上完成的。首先在數(shù)據(jù)集中進(jìn)行有放回的采樣生產(chǎn)m個(gè)采樣集;接著對(duì)每個(gè)采樣集訓(xùn)練對(duì)應(yīng)的基學(xué)習(xí)器;最后將這些基學(xué)習(xí)器進(jìn)行按照一定的方式結(jié)合并輸出結(jié)果。其中對(duì)分類任務(wù)采用簡(jiǎn)單投票法進(jìn)行輸出;對(duì)回歸任務(wù)采用簡(jiǎn)單平均法進(jìn)行結(jié)果輸出。
1.2.3 長(zhǎng)短期記憶網(wǎng)絡(luò)
長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)是在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的基礎(chǔ)上改進(jìn)得來(lái)[30],只是在結(jié)構(gòu)上與一般的RNN略有不同。它的神經(jīng)元在 RNN 單位元的基礎(chǔ)上加了“門(mén)”結(jié)構(gòu)機(jī)制(輸入、遺忘、輸出3種門(mén)),這些“門(mén)”可以捕獲沿時(shí)間步的長(zhǎng)期記憶和短期記憶,解決了標(biāo)準(zhǔn)RNN無(wú)法處理長(zhǎng)期依賴信息的關(guān)鍵癥結(jié)點(diǎn)——梯度消失和梯度爆炸問(wèn)題[31]。
LSTM網(wǎng)絡(luò)的原理如圖2所示。LSTM的核心構(gòu)成是細(xì)胞元組,其在時(shí)刻t的狀態(tài)記為Ct,計(jì)算公式為
(5)
圖2 LSTM的單元架構(gòu)示意圖[31]
ft=sigmoid(Wf·[ht-1,xt]+bf)
(6)
it=sigmoid(Wi·[ht-1,xt]+bi)
(7)
(8)
(9)
ot=sigmoid(Wo·[ht-1,xt]+bo)
(10)
ht=ot*tanh(Ct)
(11)
式中:Wi、Wf、Wo分別為輸入門(mén)、遺忘門(mén)和輸出門(mén)函數(shù)的權(quán)重項(xiàng);bi、bf、bo分別為輸入門(mén)、遺忘門(mén)和輸出門(mén)的偏置項(xiàng);*為矩陣對(duì)應(yīng)元素相乘。通常用sigmoid作為遺忘門(mén)、輸入門(mén)的激活函數(shù),其輸出為一個(gè)介于[0,1]區(qū)間內(nèi)的值。用tanh函數(shù)作為單元狀態(tài)更新值的激活函數(shù),將數(shù)值限制在-1~1(關(guān)于原點(diǎn)對(duì)稱),適用于對(duì)信息的壓縮。
圖3 TCN的網(wǎng)絡(luò)架構(gòu)示意圖
可以看出,從t-1時(shí)刻到t時(shí)刻 LSTM 傳遞的是長(zhǎng)時(shí)記憶Ct-1和短時(shí)記憶ht-1,在本時(shí)刻中,各項(xiàng)參數(shù)主要依靠幾個(gè)門(mén)控函數(shù)進(jìn)行計(jì)算。遺忘門(mén)的作用是通過(guò)當(dāng)前時(shí)刻輸入和上一時(shí)刻傳遞的短時(shí)記憶信息對(duì)長(zhǎng)時(shí)記憶信息進(jìn)行選擇,選擇重要性較大的進(jìn)行保留,否則將其舍棄。當(dāng)前時(shí)刻的輸入門(mén)用于決定當(dāng)前時(shí)刻的輸入有多少要被保存至長(zhǎng)時(shí)記憶中。隨后將經(jīng)遺忘門(mén)和輸入門(mén)的控制輸出后的兩部分新舊記憶相加得到當(dāng)前時(shí)刻最終的長(zhǎng)時(shí)記憶。
1.2.4 時(shí)域卷積網(wǎng)絡(luò)
時(shí)域卷積網(wǎng)絡(luò)(TCN)是在CNN和RNN的基礎(chǔ)上發(fā)展起來(lái)的一種能夠處理時(shí)間序列數(shù)據(jù)的網(wǎng)絡(luò)結(jié)構(gòu),在特定條件下,處理效果優(yōu)于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)(RNN、CNN等),與LSTM類似,TCN也避免了遞歸模型的常見(jiàn)缺陷——梯度爆炸/消失或缺乏內(nèi)存保留等[32]。
TCN的基本原理如圖3所示。TCN的顯著特點(diǎn)是:①結(jié)構(gòu)上的卷積是因果關(guān)系,即是沒(méi)有從未來(lái)到過(guò)去的信息泄露;②體系結(jié)構(gòu)可以獲取任意長(zhǎng)度的序列,并將其映射到相同長(zhǎng)度的輸出序列。對(duì)一維序列輸入X∈″和卷積核f:{0,…,k-1}→∈″,元素s的擴(kuò)張卷積運(yùn)算公式為
(12)
式中:d為擴(kuò)張系數(shù);k為卷積核大??;s-d·i表示過(guò)去的方向。d值的大小與神經(jīng)網(wǎng)絡(luò)的感受野有關(guān),當(dāng)d=1時(shí),擴(kuò)張卷積為規(guī)則卷積,d值越大,代表頂層的輸出可代表更大范圍的輸入,從而有效擴(kuò)展神經(jīng)網(wǎng)絡(luò)的感受野。因此,有兩種方式可擴(kuò)大TCN的感受野:一是選擇大的卷積核k,二是增加擴(kuò)張系數(shù)d。通常情況下,d以指數(shù)形式增長(zhǎng),這確保有效命中歷史記錄中的每個(gè)輸入。隨著網(wǎng)絡(luò)深度的增加,d越大,代表可生成龐大的有效歷史記錄,如圖3(a)所示。
殘差塊[圖3(b)]包括一個(gè)分支,該分支引出一系列傅立葉變換F,變換后的輸出同X作為輸入。
o=Activation[X+F(x)]
(13)
在圖3(b)所示的殘差塊里,TCN包括擴(kuò)張因果卷積和非線性兩層,對(duì)此采用修正線性單元(ReLU),以防止梯度消失,提高模型的表達(dá)能力,使網(wǎng)絡(luò)具有稀疏性。在歸一化中,對(duì)卷積核采用權(quán)重歸一化。此外,每個(gè)擴(kuò)張卷積后加入空間Dropout進(jìn)行正則化,目的在于防止過(guò)擬合,提高模型的運(yùn)輸精度。TCN的感受野取決于網(wǎng)絡(luò)深度n、卷積核大小k和擴(kuò)張因子d。穩(wěn)定性對(duì)大而深的TCN網(wǎng)絡(luò)而言至關(guān)重要。當(dāng)殘差輸入和輸出有不同的維度,會(huì)往其中添加一個(gè)1×1的卷積,這不僅可以使網(wǎng)絡(luò)擁有跨層傳遞信息的功能,而且還能保證輸入輸出的一致性。
本文所研究的基于油田動(dòng)態(tài)產(chǎn)量的預(yù)測(cè)屬于回歸問(wèn)題,選用Stacking策略進(jìn)行融合。根據(jù)Krogh和Vedelsby提出的“誤差-分歧分解(error-ambiguity decomposition)”理論[33],在選擇基學(xué)習(xí)器時(shí)應(yīng)當(dāng)遵循“好而不同”的原則,即考慮個(gè)體學(xué)習(xí)器性能好壞的同時(shí),也要考慮個(gè)體學(xué)習(xí)器的兩兩不相似性。本研究先挑選KNN、SVM、Bagging、Adaboost、XGBoost、隨機(jī)森林、LSTM、TCN等模型作為基學(xué)習(xí)器的候選模型,分別用來(lái)對(duì)特高含水油田的產(chǎn)量進(jìn)行預(yù)測(cè),然后挑選出預(yù)測(cè)性能較好的模型作為基學(xué)習(xí)器。經(jīng)過(guò)初級(jí)篩選,發(fā)現(xiàn)XGBoost、Bagging、LSTM、TCN 4個(gè)模型在這8個(gè)模型中表現(xiàn)突出,本文選取這4個(gè)表現(xiàn)較優(yōu)的模型作為基學(xué)習(xí)器。研究表明,元學(xué)習(xí)器為多元線性回歸(MLR)時(shí)可以取得較好的預(yù)測(cè)效果[34],故本文選用MLR線性回歸模型作為元學(xué)習(xí)器。圖4為多模型Stacking融合框架。
圖4 基于Stacking的多模型融合油井產(chǎn)量預(yù)測(cè)方法
選取中國(guó)東部某油田6口產(chǎn)油井(well A、well B、well C、well D、well E、well F)自開(kāi)井以來(lái)的產(chǎn)油數(shù)據(jù),建立動(dòng)態(tài)產(chǎn)量預(yù)測(cè)模型。該油田為已進(jìn)入進(jìn)入特高含水階段的水驅(qū)開(kāi)發(fā)油田,含水率大于95%。油田開(kāi)發(fā)是復(fù)雜的過(guò)程,油井產(chǎn)量受影響的因素眾多,包括注水方式、含水率、生產(chǎn)制度、剩余開(kāi)采儲(chǔ)量、措施增油量等[13]。初步研究表明,多個(gè)特征的加入可增加預(yù)測(cè)模型與工程實(shí)際的結(jié)合緊密度,但隨著特征個(gè)數(shù)的增加,特征的冗余可能導(dǎo)致精度下降。在對(duì)特高含水油田進(jìn)行動(dòng)態(tài)產(chǎn)量預(yù)測(cè)時(shí),常用油氣的生產(chǎn)曲線作為預(yù)測(cè)的數(shù)據(jù)集??紤]到本研究是基于時(shí)間序列數(shù)據(jù)進(jìn)行油井動(dòng)態(tài)產(chǎn)量預(yù)測(cè),主要目的是研究模型的融合方式對(duì)油井時(shí)序動(dòng)態(tài)產(chǎn)量預(yù)測(cè)的影響,故本研究的樣本數(shù)據(jù)集為選中油井的歷史產(chǎn)油量、產(chǎn)水量、注入量等時(shí)間序列數(shù)據(jù)。
因數(shù)據(jù)集中同一井生產(chǎn)過(guò)程中有個(gè)別點(diǎn)產(chǎn)量為零值的異常值,預(yù)測(cè)時(shí)先對(duì)數(shù)據(jù)集進(jìn)行了零值消除。數(shù)據(jù)集時(shí)間跨度為17 057 d(約46.7 a),時(shí)間顆粒度前期為月、后期為日。數(shù)據(jù)集劃分是選取數(shù)據(jù)集的前85%為訓(xùn)練集,后15%為測(cè)試集,采取5折交叉驗(yàn)證。模型訓(xùn)練時(shí)使用Keras搭建網(wǎng)絡(luò)結(jié)構(gòu),采用Python 3.3作為實(shí)驗(yàn)程序編寫(xiě)的語(yǔ)言,同時(shí)使用了Sklearn、Numpy等第三方庫(kù)計(jì)算技術(shù)指標(biāo)。訓(xùn)練過(guò)程中的一些關(guān)鍵參數(shù)取值見(jiàn)表1。
表1 模型部分關(guān)鍵參數(shù)
為評(píng)判Stacking模型的預(yù)測(cè)效果,實(shí)驗(yàn)分別采用單一模型(XGBoost、Boosting、LSTM和TCN)以及Stacking融合模型對(duì)選定油井產(chǎn)量進(jìn)行預(yù)測(cè),并將預(yù)測(cè)結(jié)果進(jìn)行對(duì)比分析。其中,Stacking融合模型考慮了兩種融合策略:一是采用XGBoost、Boosting、LSTM和TCN作為基學(xué)習(xí)器的組合模型;二是采用隨機(jī)森林(RF)、梯度提升決策樹(shù)(GBR)、LightGBM、支持向量回歸(SVR)、XGBoost、極端樹(shù)回歸(ETR)作為第一層模型的基學(xué)習(xí)器。具體設(shè)置見(jiàn)表2。
表2 實(shí)驗(yàn)組別設(shè)置
(14)
(15)
采用XGBoost、Boosting、LSTM和TCN 4種單一模型分別對(duì)6口產(chǎn)油井的日產(chǎn)油量進(jìn)行預(yù)測(cè),結(jié)果見(jiàn)表3。從表中可知,XGBoost、Boosting、LSTM和TCN 4個(gè)模型都表現(xiàn)出較好的預(yù)測(cè)性能。其中:XGBoost在產(chǎn)油井A和產(chǎn)油井D上表現(xiàn)最突出,預(yù)測(cè)的平均絕對(duì)誤差最小;Boosting在產(chǎn)油井D上表現(xiàn)出最低的均方誤差MSE;LSTM整體表現(xiàn)優(yōu)越,在產(chǎn)油井C和產(chǎn)油井E上的平均絕對(duì)誤差和均方誤差均最低,在產(chǎn)油井A上也表現(xiàn)出最低的均方誤差;與LSTM類似,TCN模型也表現(xiàn)突出,在產(chǎn)油井B和產(chǎn)油井F上都表現(xiàn)出最低的平均絕對(duì)誤差和均方誤差??梢?jiàn),所選的4個(gè)基模型能實(shí)現(xiàn)油井產(chǎn)量的有效預(yù)測(cè),不同模型在不同油井上的預(yù)測(cè)效果存在差異,這一方面說(shuō)明了不同模型的差異化特征,同時(shí)也說(shuō)明了油井樣本數(shù)據(jù)的差異直接影響最優(yōu)預(yù)測(cè)模型的選擇。
表3 6口產(chǎn)油井單一模型預(yù)測(cè)效果評(píng)價(jià) 單位:t
將構(gòu)建的Stacking模型進(jìn)行訓(xùn)練后用來(lái)預(yù)測(cè)選定油井的產(chǎn)油量。第1層模型選用XGBoost、Boosting、LSTM和TCN來(lái)進(jìn)行構(gòu)建,通過(guò)5折交叉運(yùn)算以避免過(guò)擬合的發(fā)生,然后將基學(xué)習(xí)器訓(xùn)練得到的預(yù)測(cè)結(jié)果進(jìn)行整合和維數(shù)轉(zhuǎn)化輸入到元學(xué)習(xí)器。第2層模型選擇MLR作為元學(xué)習(xí)器進(jìn)行訓(xùn)練,對(duì)第1層的基學(xué)習(xí)器集成學(xué)習(xí),然后對(duì)最終結(jié)果進(jìn)行預(yù)測(cè)。
由圖5可知,采用Stacking模型對(duì)6口油井的日產(chǎn)量預(yù)測(cè)呈現(xiàn)較穩(wěn)定的預(yù)測(cè)效果,但不同油井的產(chǎn)量預(yù)測(cè)曲線形態(tài)則有著明顯差異。相比單一模型,Stacking融合模型(5#)能夠結(jié)合多種基學(xué)習(xí)器的優(yōu)勢(shì),預(yù)測(cè)的平均誤差較小(表3),預(yù)測(cè)魯棒性較好,但當(dāng)預(yù)測(cè)準(zhǔn)確度較差時(shí),模型融合可能會(huì)增大誤差。從理論層面上看,Stacking集成模型的特色在于Stacking模型通過(guò)第2層模型的結(jié)合可摒棄第1層模型中各個(gè)基學(xué)習(xí)器預(yù)測(cè)效果較差的部分,從而將第1層模型中各基學(xué)習(xí)器的優(yōu)勢(shì)充分發(fā)揮。在對(duì)油井產(chǎn)量預(yù)測(cè)模型進(jìn)行訓(xùn)練時(shí),往往會(huì)給予一定的假設(shè),這有可能引起預(yù)測(cè)的偏差,例如多個(gè)不同的假設(shè)在訓(xùn)練集上表現(xiàn)出性能相似的情況。此時(shí),通過(guò)Stacking集成學(xué)習(xí),可有效降低單一模型的泛化能力缺陷。此外,在對(duì)單一模型進(jìn)行訓(xùn)練優(yōu)化時(shí),往往會(huì)陷入局部最小點(diǎn),而局部最小并不代表模型的泛化能力好。通過(guò)多種基學(xué)習(xí)器進(jìn)行結(jié)合,可有效避免模型陷入最小點(diǎn)。這也是采用Stacking可顯著提升預(yù)測(cè)精度的關(guān)鍵原因。
圖5 6口產(chǎn)油井Stacking集成學(xué)習(xí)預(yù)測(cè)效果
本研究設(shè)置了另一Stacking融合模型2對(duì)照組,以驗(yàn)證Stacking融合模型對(duì)油田產(chǎn)油井產(chǎn)量預(yù)測(cè)的有效性。在融合模型對(duì)照組(6#)里,模型采用隨機(jī)森林、梯度提升決策樹(shù)、LightGBM、支持向量回歸、XGBoost和極端樹(shù)回歸作為基學(xué)習(xí)器,元學(xué)習(xí)器仍采用MLR。表4為兩組Stacking融合模型的預(yù)測(cè)結(jié)果??梢钥吹?,除了油井F外,融合模型1在油井A、油井B、油井C、油井D和油井E上都表現(xiàn)優(yōu)異(6#)。主要原因有:①模型融合模型1中選擇了學(xué)習(xí)能力更強(qiáng)的基學(xué)習(xí)器,這些基學(xué)器提升了Stacking模型的整體預(yù)測(cè)能力;②所選產(chǎn)油井雖然位于同一區(qū)塊,但油井在靜態(tài)、動(dòng)態(tài)等多項(xiàng)數(shù)據(jù)參數(shù)都呈現(xiàn)出不同的數(shù)據(jù)空間觀測(cè)特征,需要多樣性和差異性較大的算法模型來(lái)提升預(yù)測(cè)的穩(wěn)健性和精確性。
利用Stacking集成方式將Bagging、XGBoost、LSTM、TCN等多個(gè)算法進(jìn)行融合后對(duì)國(guó)內(nèi)某特高含水水驅(qū)開(kāi)發(fā)油田生產(chǎn)歷史數(shù)據(jù)進(jìn)行動(dòng)態(tài)產(chǎn)油量預(yù)測(cè),得到以下結(jié)論:
1)采用XGBoost、Boosting、LSTM和TCN 4種所選的4個(gè)基模型能實(shí)現(xiàn)油井產(chǎn)量的有效預(yù)測(cè),不同模型在不同油井上的預(yù)測(cè)效果存在差異。
2)本文提出的Staking融合模型充分考慮各個(gè)模型的優(yōu)勢(shì),對(duì)6口油井的日產(chǎn)量預(yù)測(cè)呈現(xiàn)較穩(wěn)定的預(yù)測(cè)效果,但不同油井的產(chǎn)量預(yù)測(cè)曲線形態(tài)則有著明顯差異。
3)相比單一模型,Stacking融合模型能夠結(jié)合多種模型的優(yōu)勢(shì),預(yù)測(cè)的平均誤差較小,預(yù)測(cè)魯棒性較好,但當(dāng)預(yù)測(cè)準(zhǔn)確度較差時(shí),模型融合可能會(huì)增大誤差。
上述研究成果可以豐富油田產(chǎn)量預(yù)測(cè)方法,支撐油田開(kāi)發(fā)調(diào)整工作。今后的工作中將針對(duì)以下問(wèn)題開(kāi)展深入探討。
表4 6口產(chǎn)油井不同基模型組合方式的Stacking算法產(chǎn)量預(yù)測(cè)誤差分析 單位:t
1)提升Stacking融合模型的運(yùn)算時(shí)間。Stacking集成學(xué)習(xí)的框架設(shè)計(jì)比較復(fù)雜,對(duì)于基模型要訓(xùn)練多次,即使減少了模型訓(xùn)練時(shí)的若干數(shù)據(jù)量,仍存在計(jì)算時(shí)間較長(zhǎng)等問(wèn)題。針對(duì)這一問(wèn)題,未來(lái)可考慮對(duì)不同基模型分別建模,從而有效減少運(yùn)算時(shí)間。
2)提升Stacking融合模型的泛化性能。油田區(qū)塊中產(chǎn)油井的產(chǎn)量受多種因素影響。本文的研究?jī)H是考慮了時(shí)間序列的動(dòng)態(tài)產(chǎn)量預(yù)測(cè),后續(xù)研究可進(jìn)一步對(duì)油藏開(kāi)發(fā)相關(guān)資料進(jìn)行深入分析,篩選出更多的靜態(tài)和動(dòng)態(tài)特征納入模型訓(xùn)練,從而提升模型的泛化能力。