李宗民, 李亞傳, 赫俊民, 張益政, 姚純純, 劉玉杰
(1.中國石油大學(xué)(華東)計算機科學(xué)與技術(shù)學(xué)院,山東青島 266580; 2.中國石油大學(xué)勝利學(xué)院, 山東東營257061; 3.中國石化勝利油田物探院, 山東東營 257022)
油氣儲量的分析與預(yù)測是油氣企業(yè)發(fā)展戰(zhàn)略研究中極為重要的一項基礎(chǔ)工作[1]。只有通過科學(xué)分析與計算,才能利用固定的投入創(chuàng)造更大的收益。準(zhǔn)確預(yù)測油藏儲量對提高油藏發(fā)現(xiàn)效率,優(yōu)化勘探規(guī)劃結(jié)構(gòu)都具有重大意義[2]。但是,在進(jìn)行油氣儲量趨勢預(yù)測過程中,由于諸多因素難以準(zhǔn)確地量化,導(dǎo)致預(yù)測結(jié)果存在較大誤差。現(xiàn)在通用的曲線擬合方法[3]需要人工確定自變量,預(yù)定義擬合函數(shù),勢必?zé)o法考慮所有影響因素,而且預(yù)定義的函數(shù)的普適性也值得懷疑。筆者在勘探規(guī)劃數(shù)據(jù)分析的基礎(chǔ)上,提出一種專注智能油藏儲量預(yù)測的深度時空注意力模型。通過建立不同級別地質(zhì)單元的預(yù)測模型,利用近幾十年的歷史數(shù)據(jù),實現(xiàn)對不同地質(zhì)單元的油氣儲量的預(yù)測。
時間序列預(yù)測算法已經(jīng)在很多領(lǐng)域廣泛使用,如財政預(yù)測[4]、天氣預(yù)報[5]、河流流量預(yù)警[6]等,雖然傳統(tǒng)預(yù)測算法在各自領(lǐng)域已經(jīng)得到充分利用,但是這些算法卻難以充分地擬合現(xiàn)實生活中存在的非線性關(guān)系,使得預(yù)測結(jié)果難以令人滿意。隨后,研究人員提出了各種非線性自回歸系統(tǒng)模型[7-10],一定程度上緩解了這一問題,但是非線性自回歸方法大多采用預(yù)先定義好的非線性形式,預(yù)定義模型與真實的非線性關(guān)系之間必然存在一定差距,對預(yù)測結(jié)果產(chǎn)生不可消除的負(fù)面影響。循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[11-13]是一種專門處理時間序列的深度學(xué)習(xí)網(wǎng)絡(luò),由于其在捕捉非線性關(guān)系方面的靈活性而受到廣泛關(guān)注。然而,原始的循環(huán)神經(jīng)網(wǎng)絡(luò)存在嚴(yán)重的梯度消失問題,導(dǎo)致難以捕獲長序列的依賴關(guān)系,使得其在實際應(yīng)用中受到極大限制。后人針對循環(huán)神經(jīng)網(wǎng)絡(luò)的這一缺陷進(jìn)行了一系列的改進(jìn),提出長短期記憶網(wǎng)絡(luò)(LSTM)[14]和門控循環(huán)單元(GRU)[15]等網(wǎng)絡(luò)模型,在時間序列處理方向獲得了廣泛的應(yīng)用。
注意力機制在多個人工智能領(lǐng)域得到廣泛應(yīng)用,包括自然語言處理[16]、計算機視覺[17-18]等。注意力機制之所以得到如此迅速的發(fā)展,主要包括3方面原因:①在多個領(lǐng)域中使用注意力機制都達(dá)到了目前的最好結(jié)果;②除了提高效果之外,它還可以提高神經(jīng)網(wǎng)絡(luò)的可解釋性(這一點也是神經(jīng)網(wǎng)絡(luò)被詬病最多的缺點之一);③它可以克服循環(huán)神經(jīng)網(wǎng)絡(luò)因為輸入太長而導(dǎo)致的丟失信息、記憶不夠精準(zhǔn)、計算開銷太大等問題。之后,谷歌提出的“Transformer”[19]更是完全摒棄了遞歸結(jié)構(gòu),依賴注意力機制,挖掘輸入和輸出之間的關(guān)系,進(jìn)一步發(fā)掘注意力機制的性能。簡而言之,注意力機制其實就是學(xué)出一個權(quán)重分布,再拿這個權(quán)重分布施加在原來的特征之上,可以廣義地解釋為重要性權(quán)重的向量。為了預(yù)測一個元素,使用注意力向量來估計它與其他元素的相關(guān)程度有多強,并將其值的總和作為目標(biāo)的近似值。受文獻(xiàn)[20]和[21]的啟發(fā),本文中將注意力機制引入到油藏儲量預(yù)測任務(wù)中,來學(xué)習(xí)代表重要性權(quán)重的向量,對之后的深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行指導(dǎo),從而達(dá)到優(yōu)化模型的目的。
早期油藏儲量預(yù)測通常采用翁氏模型[22],雖然翁氏模型對油田儲量的中長期預(yù)測有著不錯的效果,但是對短期預(yù)測的效果不明顯。為了實現(xiàn)短期油藏儲量預(yù)測,高磊等[3]提出“帚狀模型-‘S’曲線”這一油藏儲量預(yù)測模型,一定程度上解決了短期預(yù)測的難題。但是該模型屬于非線性自回歸系統(tǒng)模型,預(yù)定義模型與現(xiàn)實數(shù)據(jù)之間的固有差異仍舊無法消除,因此誤差難以消減。除此之外,為了滿足‘S’曲線的走勢,該模型對原始數(shù)據(jù)進(jìn)行了一次對數(shù)變換,進(jìn)一步增大了預(yù)測誤差。近年來,隨著深度學(xué)習(xí)在時間序列預(yù)測上的卓越表現(xiàn),油藏儲量預(yù)測也開始引入深度學(xué)習(xí)算法[23]。但是目前已知的相關(guān)工作尚且比較初級,只是對深度學(xué)習(xí)初步的嘗試,并沒有對油田數(shù)據(jù)量相對較少、數(shù)據(jù)波動大等特性做出針對性的改進(jìn),未能充分發(fā)揮出深度學(xué)習(xí)的性能。本文中針對油田具體現(xiàn)狀,結(jié)合近年來深度學(xué)習(xí)的發(fā)展,提出一種專注油藏儲量預(yù)測的深度時空注意力模型。
影響探測油藏儲量的因素相當(dāng)多,包括探井?dāng)?shù)量、分布,巖心的孔隙密度等,任何方法都難以考慮全面。但是,對于同一個油田,大多數(shù)因素都是不可控的,而且不會發(fā)生突變。在勘探技術(shù)沒有突破之前,探井?dāng)?shù)量是一個變化最大的可控因素,其與預(yù)測的油藏數(shù)量、油藏儲量在一定的范圍內(nèi)呈正相關(guān)關(guān)系。對于深度學(xué)習(xí)的方法而言,其他變量對預(yù)測結(jié)果的影響可以應(yīng)用深度學(xué)習(xí)網(wǎng)絡(luò)模型從真實油藏儲量的歷史數(shù)據(jù)中學(xué)習(xí)獲得。因此最終將模型簡化為探井?dāng)?shù)量與油藏儲量、油藏數(shù)量之間的函數(shù)關(guān)系,即
(1)
式中,k為探井?dāng)?shù)量;g、c為油藏數(shù)量和油藏儲量;F、G為映射函數(shù)。通過給定k,預(yù)測相應(yīng)的g、c,構(gòu)建合理的映射函數(shù)F、G。深度學(xué)習(xí)網(wǎng)絡(luò)可以同時預(yù)測多個值,因此可以將函數(shù)F、G合并為一個函數(shù)H:
(g,c)=H(k).
(2)
式中,H為用深度學(xué)習(xí)網(wǎng)絡(luò)來擬合的映射函數(shù)。
網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,其中k表示探井?dāng)?shù)量矩陣,“+”表示矩陣的加法操作,“·”表示矩陣的點乘操作,LSTM表示長短期記憶網(wǎng)絡(luò),該網(wǎng)絡(luò)模型中使用的是雙層LSTM,每層3個節(jié)點,h表示LSTM輸出的隱藏狀態(tài)。上次輸出的隱藏狀態(tài)作為本次的輸入,用來傳遞網(wǎng)絡(luò)的不同時間的狀態(tài)關(guān)聯(lián),首次輸入的隱藏狀態(tài)是從標(biāo)準(zhǔn)正態(tài)分布中采樣得到的,LSTM通過全連接層,得到預(yù)測結(jié)果g(油藏數(shù)量)、c(油藏儲量)。時間注意力網(wǎng)絡(luò)和空間注意力網(wǎng)絡(luò)會在之后的小節(jié)中單獨介紹。
圖1 深度時空注意力模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖
探井?dāng)?shù)量作為輸入經(jīng)過時間注意網(wǎng)絡(luò),權(quán)重重新分配后與上一次輸出的中間狀態(tài)一起進(jìn)入LSTM主網(wǎng)絡(luò),輸出中間狀態(tài)和預(yù)測結(jié)果:中間狀態(tài)經(jīng)過空間注意網(wǎng)絡(luò),準(zhǔn)備做為下一次循環(huán)的輸入;預(yù)測結(jié)果經(jīng)過一個全連接層得到兩個值,分別是預(yù)測的油藏數(shù)量和預(yù)測的油藏儲量,而這分別與真實值做回歸損失,然后反向傳播指導(dǎo)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)。
時空注意力網(wǎng)絡(luò)的功能類似,只不過關(guān)注的對象不同。時間注意力網(wǎng)絡(luò)作用于輸入的數(shù)據(jù)上,由于數(shù)據(jù)是不同年份的探井?dāng)?shù)量,代表了不同時間的屬性,因此稱為時間注意力網(wǎng)絡(luò);空間注意力網(wǎng)絡(luò)作用于LSTM輸出的中間隱藏狀態(tài),中間隱藏狀態(tài)是將時間數(shù)據(jù)映射到新的空間的結(jié)果,因此稱作空間注意力網(wǎng)絡(luò)(亦可稱為隱藏狀態(tài)注意網(wǎng)絡(luò))。實際上,二者的結(jié)構(gòu)也基本相同,都是由兩層全連接網(wǎng)絡(luò)與各自的激活函數(shù)組成。將最后一層的輸出經(jīng)過激活函數(shù),使最終結(jié)果分布在區(qū)間[-1,1],之后將通過時空注意力網(wǎng)絡(luò)得到的權(quán)重融合到原數(shù)據(jù)上,相當(dāng)于為原數(shù)據(jù)添加了一個掩碼。實際上,注意力網(wǎng)絡(luò)在網(wǎng)絡(luò)結(jié)構(gòu)上沒有特別的要求,可以替換成其他任何相似網(wǎng)絡(luò)。
對于大多數(shù)情況,這種方法是切實可行的,但是對某些數(shù)據(jù)波動較大的年份,權(quán)重可能反而使結(jié)果變壞,針對實際問題模型,該模型引入了權(quán)重再分配的方法,將權(quán)重重分配后的結(jié)果與原數(shù)據(jù)再次融合,得到最終結(jié)果,從而緩解數(shù)據(jù)波動對試驗結(jié)果的不利影響。整個時空注意力網(wǎng)絡(luò)可以表示為
(3)
式中,Tmask為時間注意力網(wǎng)絡(luò);Hmask為空間注意力網(wǎng)絡(luò);k為輸入的探井?dāng)?shù)量;h為LSTM輸出的隱藏狀態(tài);tatt和hatt為k與h分別經(jīng)過時、空注意力網(wǎng)絡(luò)后得到的結(jié)果。
標(biāo)準(zhǔn)的LSTM網(wǎng)絡(luò)迭代過程可以總結(jié)為
ft=σ(Wf[ht-1;kt]+bf),
(4)
it=σ(Wi[ht-1;kt]+bi),
(5)
ot=σ(Wo[ht-1;kt]+bo),
(6)
st=ft·st-1+ittanh(Ws[ht-1;kt]+bs),
(7)
ht=ot·tanh(st).
(8)
式中,[ht-1;kt]為網(wǎng)絡(luò)上一次輸出的隱藏狀態(tài)(短記憶)ht-1與當(dāng)前輸入的探井?dāng)?shù)量kt的聯(lián)合表示;st-1為上一次輸出狀態(tài)(長記憶);ft、it和ot分別為LSTM網(wǎng)絡(luò)輸入門、遺忘門和輸出門的輸出結(jié)果;st和ht分別為長記憶和短記憶的計算結(jié)果,作為下一次迭代的輸入來完成整個LSTM網(wǎng)絡(luò)的計算過程;Wf、Wi、Wo、bf、bi、bo為要學(xué)習(xí)的參數(shù);σ表示sigmoid函數(shù)。結(jié)合時空注意力網(wǎng)絡(luò)之后,整個網(wǎng)絡(luò)更新公式升級為
ft=σ(Wf[(ht-1+Tmask·ht-1);kt]+bf),
(9)
it=σ(Wi[(ht-1+Tmask·ht-1);kt]+bi),
(10)
ot=σ(Wo[(ht-1+Tmask·ht-1);kt]+bo),
(11)
st=ft·st-1+Wttanh(Ws[ht-1+Tmask·ht-1];kt)+bs),
(12)
ht=ot·tanh(st)+Hmask·ot·tanh(st).
(13)
損失函數(shù)使用的是一階距離(L1)損失:
式中,x為預(yù)測值;y為真實值;N為訓(xùn)練的批次總數(shù)。試驗結(jié)果表明,損失函數(shù)對試驗最終結(jié)果影響不大,一階距離損失、二階距離損失、交叉熵?fù)p失都可以作為該網(wǎng)絡(luò)的損失函數(shù)。由于要同時優(yōu)化油藏數(shù)量和油藏儲量兩個值,因此需要聯(lián)合計算兩者的損失函數(shù)之和Loss:
式中,g和g′分別為油藏數(shù)量真實值、預(yù)測值;c和c′分別為油藏儲量真實值、預(yù)測值;α為超參數(shù),需要人工預(yù)定義。
此外,相比自然語言處理等通用時間序列預(yù)測問題,油藏儲量預(yù)測的結(jié)果與時間的線性關(guān)系更強,也就是說,越靠近的數(shù)據(jù)之間相關(guān)性越強。針對這一特性,該模型對損失函數(shù)做了進(jìn)一步的優(yōu)化,LSTM中有一個時間步長參數(shù)t,將t時間內(nèi)的數(shù)據(jù)同時輸入網(wǎng)絡(luò),通過網(wǎng)絡(luò)來學(xué)習(xí)t時間內(nèi)不同數(shù)據(jù)與最終結(jié)果之間的權(quán)重參數(shù)。通常情況下t是定值,t時間內(nèi)數(shù)據(jù)初始權(quán)重相同。由于油藏儲量預(yù)測的結(jié)果與時間的線性關(guān)系更強,該模型使用不定時間步長,令新步長t′的值為小于t的所有正整數(shù),分別輸入網(wǎng)絡(luò)做回歸損失。從而使與預(yù)測年份越接近的年份對最終預(yù)測結(jié)果的影響越大,加強臨近年份的權(quán)重。
試驗數(shù)據(jù)來源于中國某大型油田1964—2013年的實測數(shù)據(jù),分別在其中4個大的區(qū)塊(010101、010102、010201、010301)進(jìn)行試驗,模型使用pytorch框架完成,使用顯卡為TITANV,訓(xùn)練的批次總數(shù)為8,訓(xùn)練的時間步長為10,學(xué)習(xí)率為0.001,超參數(shù)α=0.4。因為油藏數(shù)量是整數(shù),只要小于某個閾值就可以大幅下降,相比油藏儲量,更容易學(xué)習(xí),而且實際使用中人們也是更關(guān)注油藏儲量的預(yù)測結(jié)果,所以預(yù)測油藏數(shù)量的超參系數(shù)占比可以稍微減小,借此進(jìn)一步提高預(yù)測結(jié)果的準(zhǔn)確性。
在4個區(qū)塊上分別試驗,需要的試驗數(shù)據(jù)有歷年的探井?dāng)?shù)量、油藏數(shù)量、油藏儲量。將1964—1984年作為訓(xùn)練數(shù)據(jù)來預(yù)測1985年的結(jié)果,然后用1964—1985年的數(shù)據(jù)來預(yù)測1986年的結(jié)果。以此類推,最終用1964—2012年數(shù)據(jù)預(yù)測2013年。因為誤差放大問題,如果直接用1964—1984年的數(shù)據(jù)預(yù)測之后所有年份,會使之后的誤差逐年放大,偏離真實值。
每一年的預(yù)測只能接觸到之前年份的數(shù)據(jù),因此充分保證了試驗的客觀性。
常用的油藏儲量預(yù)測方法的試驗結(jié)果平均值如表1所示(試驗結(jié)果是在4個區(qū)塊上分別求得誤差后計算的平均值)。表1中,S曲線方法是目前已經(jīng)投入使用的主流方法,但是該方法不僅誤差大,而且對于某些數(shù)值波動較大的年份無法預(yù)測,需要手工修正。在此基礎(chǔ)上取消對數(shù)變換,提出“原始曲線”預(yù)測方法,該方法基本不會出現(xiàn)無法預(yù)測的情況,但是由于該方法難以找到契合的預(yù)定義函數(shù),使得誤差進(jìn)一步變大。深度學(xué)習(xí)方法比曲線擬合方法效果有明顯提升,其中RNN與LSTM都是兩層結(jié)構(gòu),試驗結(jié)果相近;LSTM_att是在LSTM的基礎(chǔ)上分別增加了時間注意力機制,效果明顯優(yōu)于LSTM;LSTM_2att方法是在LSTM_att的基礎(chǔ)上又增加了空間注意力機制,進(jìn)一步優(yōu)化了試驗結(jié)果,用消融試驗的思想證明了時間注意力機制和空間注意力機制的各自效果。LSTM_2att方法的油藏數(shù)量相對誤差值最小,油藏儲量相對誤差略高于LSTM_att方法,但明顯優(yōu)于其他方法,在最終的平均相對誤差上,本文中提出的時空注意力機制(LSTM_2att)取得最好結(jié)果。
表1 常用油藏儲量預(yù)測方法試驗對比結(jié)果
圖2是在010301區(qū)塊上的擬合效果。為了更好地觀察試驗效果,從5種對比方法中挑選2種比較有代表性的方法作為對比,即傳統(tǒng)方法中目前效果最好的原始曲線方法和目前為止深度學(xué)習(xí)方法中效果最好的LSTM_att方法(只用一個時間注意力機制的LSTM方法,是本試驗的消融對比試驗)。從圖2中可以觀察到,幾種方法預(yù)測曲線基本能夠把握住數(shù)據(jù)總體的趨勢走向,與傳統(tǒng)的曲線擬合方法相比,深度學(xué)習(xí)方法效果明顯更好,能夠很好的消除某一年份的數(shù)值波動對之后年份的影響。本文中提出的att2方法(紅色曲線)結(jié)果明顯優(yōu)于LSTM_att方法(藍(lán)色曲線),尤其是在預(yù)測的穩(wěn)定性上,取得目前已知的最優(yōu)結(jié)果,充分證明了該方法的有效性。
圖2 油藏個數(shù)與油藏儲量擬合效果
提出的專注油藏儲量預(yù)測的深度時空注意力模型,首次將深度學(xué)習(xí)中的注意力機制引入油藏儲量預(yù)測任務(wù),顯著降低了預(yù)測的誤差,大大提高了預(yù)測結(jié)果的準(zhǔn)確性,并在真實數(shù)據(jù)上的試驗結(jié)果驗證了該方法的有效性。專注油藏儲量預(yù)測的深度時空注意力模型在該油田的數(shù)據(jù)上取得目前已知的最好結(jié)果,充分發(fā)揮深度學(xué)習(xí)注意力機制在時序序列預(yù)測中的潛力,能夠有效消除異常數(shù)據(jù)以及數(shù)據(jù)波動對后續(xù)預(yù)測準(zhǔn)確度的不利影響。今后可在以下方面對該模型進(jìn)行改進(jìn):探索適合于油田儲量序列建模的其他代價函數(shù);改變深度模型中的節(jié)點的連接方式, 進(jìn)一步減少數(shù)據(jù)突變對網(wǎng)絡(luò)模型的影響, 增強模型的健壯性;探索深度注意力模型在中長期油藏儲量預(yù)測中的使用方法,緩解誤差放大這一傳統(tǒng)難題。