秦 敏 胡向陽 梁玉楠 袁 偉 楊 冬
(中海石油(中國)有限公司海南分公司,海南???524057)
識別流體性質(zhì)是油氣田勘探、開發(fā)的一項重要任務(wù),最基本的方法就是綜合測井與地質(zhì)、巖心以及中途測試等信息,利用不同流體的測井響應(yīng)特征優(yōu)選對流體敏感的參數(shù),從而識別流體。
東方X氣田位于鶯歌海盆地,隨著勘探目標(biāo)轉(zhuǎn)向中深層高溫、高壓領(lǐng)域,儲層孔隙結(jié)構(gòu)復(fù)雜、非均質(zhì)性強,導(dǎo)致氣、水關(guān)系復(fù)雜,使氣層、水層、氣水同層和干層的測井響應(yīng)特征差異不明顯。目前,流體識別方法主要基于測井曲線之間的差異,利用常規(guī)圖板法定性識別,但識別結(jié)果過于依賴地區(qū)經(jīng)驗判斷,且沒有考慮測井曲線與儲層含氣性之間的非線性關(guān)系。特別是在高溫、高壓儲層,儲層電性參數(shù)復(fù)雜,往往難以找準(zhǔn)氣、水間的電性界限,導(dǎo)致常規(guī)方法識別儲層流體性質(zhì)時精度較低或方法失效。
近年來,機器學(xué)習(xí)作為一種高效的數(shù)據(jù)挖掘方法,能夠挖掘測井響應(yīng)特征之間的非線性關(guān)系,已經(jīng)廣泛用于測井解釋,因此基于測井資料的機器學(xué)習(xí)算法成為流體識別的重要手段。目前儲層流體識別大多采用單一的機器學(xué)習(xí)模型,常見的有神經(jīng)網(wǎng)絡(luò)[1-3]、決策樹[4-5]、支持向量機[6-8]、貝葉斯網(wǎng)絡(luò)[9-11]、隨機森林[12-13]和梯度提升樹[14]等。
在理論和實際應(yīng)用中,每種機器學(xué)習(xí)算法各有優(yōu)缺點,因此利用單一模型很難全面挖掘高溫、高壓儲層的測井響應(yīng)信息。隨著模型融合技術(shù)的快速發(fā)展,模型融合算法很好地用于工業(yè)實踐[15-21],但是未被用于測井解釋領(lǐng)域。因此,本文提出利用Stacking模型融合方法(Stacked Generalization Ensemble,簡稱Stacking)建模,集成了流體識別效果較好的機器學(xué)習(xí)算法(決策樹、支持向量機、隨機森林和極端梯度提升),并利用Stacking識別鶯歌海盆地高溫、高壓儲層流體。結(jié)果發(fā)現(xiàn),Stacking的預(yù)測精度明顯高于各個單模型,表明該算法可有效提高流體識別精度。
鶯瓊盆地中深層地溫梯度較高(4.6℃/100m),普遍發(fā)育異常高壓(壓力梯度高達(dá)18~22kPa/m),儲層受多期成巖作用改造,微觀孔隙類型多樣,具有較強的非均質(zhì)性,嚴(yán)重影響測井流體識別精度。分析東方X氣田關(guān)鍵探井的測井曲線發(fā)現(xiàn),測井曲線與地層中含氣量有如下關(guān)系:當(dāng)儲層從水層向氣水同層過渡時,中子和密度曲線呈明顯交會的“挖掘效應(yīng)”,部分井的電阻率發(fā)生明顯變化,部分井的電阻率差別較小,無明顯臺階型變化;當(dāng)含氣飽和度繼續(xù)增加,從氣水同層向氣層過渡時,中子密度曲線變化較小,但電阻率曲線明顯變化,且干層普遍呈高自然伽馬值。
根據(jù)上述分析,繪制了東方X氣田中子—密度交會圖(圖1)和自然伽馬—電阻率交會圖(圖2)。由圖1可見:由于補償中子測井的“挖掘效應(yīng)”,氣層、水層、氣水同層、干層數(shù)據(jù)點分別位于圖板左下方、上方、中部、右上方,這種分布符合氣層和水層的測井響應(yīng)特征,但是由于不同流體性質(zhì)樣本物性存在一定相似性,因此不同流體性質(zhì)的樣本數(shù)據(jù)點交疊范圍明顯,故無法直接應(yīng)用中子—密度交會圖識別流體。由圖2可見:與圖1相比,氣層和氣水同層的界限相對明顯,但分界線附近氣層和氣水同層的數(shù)據(jù)點依然很密集,在氣層電阻率普遍較低的背景下,容易造成誤判;氣水同層和水層的數(shù)據(jù)點存在一定重疊,難以找準(zhǔn)高溫、高壓儲層的電性界限。
圖1 東方X氣田中子—密度交會圖
圖2 東方X氣田自然伽馬—電阻率交會圖
綜合分析上述圖板可知:東方X氣田不同流體性質(zhì)儲層的測井響應(yīng)差異不明顯,尤其難以確定不同流體的電阻率下限;利用孔隙度測井曲線識別流體(圖1)易受物性因素干擾,不同流體性質(zhì)的樣本數(shù)據(jù)點存在重疊區(qū)域。故需要找到一種用于多參數(shù)綜合識別的機器學(xué)習(xí)模型,能夠綜合多種因素,盡量消除流體性質(zhì)以外影響因素的干擾,盡可能區(qū)分不同流體性質(zhì)的數(shù)據(jù)點。
基于測井資料,利用機器學(xué)習(xí)算法研究儲層流體性質(zhì)是流體識別的重要方法。本文主要采用決策樹、支持向量機、隨機森林和極端梯度提升樹等機器學(xué)習(xí)算法,并最終用Stacking集成。
Stacking的本質(zhì)是一種堆棧集成算法,其模型融合的策略是使用“學(xué)習(xí)法”,即通過一個次級學(xué)習(xí)器結(jié)合其余幾個初級學(xué)習(xí)器,然后使用次級學(xué)習(xí)器“改正”幾個初級學(xué)習(xí)器的錯誤,主動提升集成后性能。通常將初級學(xué)習(xí)器稱為基學(xué)習(xí)器,結(jié)合基學(xué)習(xí)器的次級學(xué)習(xí)器稱為元學(xué)習(xí)器。首先,Stacking將原始數(shù)據(jù)集劃分成若干子數(shù)據(jù)集,輸入到第1層預(yù)測模型的各個基學(xué)習(xí)器中,每個基學(xué)習(xí)器輸出各自的預(yù)測結(jié)果。然后,第1層的輸出再作為第2層的輸入,訓(xùn)練第2層預(yù)測模型的元學(xué)習(xí)器,再由第2層的模型輸出最終預(yù)測結(jié)果。Stacking通過泛化多個模型的輸出結(jié)果,以提升整體預(yù)測精度(圖3)。
圖3 基于Stacking的集成學(xué)習(xí)方式示意圖
若Stacking采用分類與回歸樹(CART)、支持向量機(SVM)和隨機森林(RF)作為基學(xué)習(xí)器,極端梯度提升樹(Extreme Gradient Boosting,XGBoost)作為元學(xué)習(xí)器,則偽代碼如下:
S1,S2,…,Sk=CV(3,k)
Snew={ }
FOR EACHSkinS1,S2,…,Sk;
FOR EACHxiinSj
zi1=CARTModelj.predict(xi)
zi2=SVMModelj.predict(xi)
zi3=RFj.predict(xi)
Snew.append(zi1,zi2,zi3,yi)
END FOR
END FOR
XGBoostModel=XGBoost(Snew)
輸出:Stacking學(xué)習(xí)系統(tǒng)的預(yù)測結(jié)果。
偽代碼注釋如下:CV(Cross Validation)為交叉驗證;append函數(shù)表示在列表末尾添加新的對象;predict函數(shù)表示用某個機器學(xué)習(xí)算法對輸入數(shù)據(jù)進(jìn)行預(yù)測。
分別以自然伽馬、深電阻率(A40H)、淺電阻率(P16H)、中子、密度曲線值為樣本點,并將模型識別結(jié)果輸出為:氣層設(shè)定為“4”,干層設(shè)定為“3”,氣水同層設(shè)定為“2”,水層設(shè)定為“1”。樣本數(shù)據(jù)來自DST(Drill-stem Testing,油氣井中途測試)或MDT(Modular Formation Dynamics Tester,模塊式地層動態(tài)測試器)測試層段。由于DST測試段不多,MDT測試段多但只反映單點特征,因此樣本數(shù)據(jù)嚴(yán)重不足。為了獲取足夠多的樣本數(shù)據(jù)分析流體的測井響應(yīng)特征,在MDT測試層段根據(jù)測井響應(yīng)特征和氣、水分布規(guī)律,在測井曲線穩(wěn)定段適當(dāng)擴大了樣本點選取范圍。選取東方X氣田共10口井、22個層段(氣層、氣水同層、水層和干層的層數(shù)分別為8、4、5和5)共813個樣本點(氣層、氣水同層、水層和干層的樣本數(shù)分別為267、135、353和58),將其中60%用于訓(xùn)練集,并在訓(xùn)練集中用10折交叉驗證法得到每個模型的最優(yōu)參數(shù),用40%作為測試集評估最終模型,分別建立CART、RF、SVM、XGBoost、Stacking模型。由于不同測井信息具有不同的量綱和數(shù)量級,影響數(shù)據(jù)分析結(jié)果,因此在建模前要進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化處理。對于線性刻度的測井曲線x(自然伽馬、密度和中子),在訓(xùn)練時進(jìn)行線性歸一化處理
(1)
對于非線性對數(shù)特征曲線X,如地層電阻率和沖洗帶電阻率,在輸入模型之前要進(jìn)行對數(shù)變換
(2)
經(jīng)過數(shù)據(jù)標(biāo)準(zhǔn)化后,將數(shù)據(jù)集分為訓(xùn)練集和測試集,再利用10折交叉驗證法(圖4)將訓(xùn)練集分為訓(xùn)練子集和驗證集,利用訓(xùn)練子集訓(xùn)練模型、驗證集驗證模型,根據(jù)驗證結(jié)果不斷調(diào)整模型參數(shù),并選擇最好的模型。最后,利用測試集評估最優(yōu)模型,既能防止測試集信息泄露,又能用驗證集優(yōu)化模型。
圖4 10折交叉驗證法示意圖
決策樹是一種常用的數(shù)據(jù)挖掘方法,類似于流程圖的樹型結(jié)構(gòu)。決策樹算法主要包括構(gòu)造和分類二個過程。構(gòu)造決策樹分為建樹和剪枝兩個階段,前者歸納出決策樹,后者防止過度擬合。本文采用最常用的決策樹算法CART。
基于CART的決策樹一般需要調(diào)整的參數(shù)為樹的最大深度max_depth,樹越深,分裂越多,越能捕獲有關(guān)數(shù)據(jù)的信息,但同時越容易過擬合,使模型泛化能力變?nèi)?。因此,利?0折交叉驗證法觀測決策樹模型的訓(xùn)練集和驗證集在樹的不同深度的表現(xiàn)(圖5):當(dāng)max_depth不斷增大時,模型訓(xùn)練集的錯誤率不斷降低,但是模型驗證集錯誤率呈先減小、后增大的趨勢,說明當(dāng)max_depth較小時,模型偏差較大,決策樹學(xué)習(xí)能力較差;當(dāng)max_depth較大時,模型方差較大,出現(xiàn)過擬合,導(dǎo)致模型過于復(fù)雜,泛化能力差;當(dāng)max_depth=10時,模型在驗證集上表現(xiàn)最好,此時模型達(dá)到最優(yōu),錯誤率為23.57%。
圖5 不同決策樹max_depth與模型錯誤率關(guān)系
SVM由線性可分情況下的最優(yōu)分類面發(fā)展而來,其基本思想是尋找一個滿足分類要求的超平面,在保證精度的同時使超平面兩側(cè)的空白區(qū)域最大化,并且使分類間隔最大。
利用SVM識別流體時,需要選擇轉(zhuǎn)換數(shù)據(jù)維度的核函數(shù),本文為了解決流體識別的線性不可分問題,選用徑向基函數(shù)(RBF),其中懲罰系數(shù)C、γ(RBF作為核函數(shù)自帶的一個參數(shù))是基于RBF的SVM模型的兩個非常重要的參數(shù)。C表征對誤差的寬容度,C越大,越容易過擬合,模型的方差越大;C越小,越容易欠擬合,模型的偏差越大。γ越小,方差越大,高斯分布曲線越尖峭,越容易過擬合。因此需要選取合適的C與γ值。利用10折交叉驗證方法,由驗證集評價各個參數(shù)的訓(xùn)練模型,從而列出不同的C和γ值的流體識別準(zhǔn)確率熱圖(圖6)???/p>
圖6 SVM的C值、γ值與判別準(zhǔn)確率熱圖顏色越淺表示模型預(yù)測能力越強
見,當(dāng)C=10000、γ=0.1時模型達(dá)到最優(yōu),迭代優(yōu)化后的模型在驗證集中的流體識別準(zhǔn)確率為77.89%。
RF是一種集成式的有監(jiān)督學(xué)習(xí)算法,同時生成多個決策樹,并將模型的結(jié)果匯總以提升預(yù)測準(zhǔn)確率,而且能提升模型的魯棒性。
本文所用的RF模型是基于CART的引導(dǎo)聚集(Bagging)算法,需要調(diào)節(jié)的參數(shù)包括Bagging框架參數(shù)和CART參數(shù),所以需要調(diào)節(jié)的參數(shù)主要是弱學(xué)習(xí)器的最大迭代次數(shù)n_estimators以及決策樹的最大深度max_depth。通過10折交叉驗證方法,
用驗證集評估不同決策樹深度的模型錯誤率隨迭代次數(shù)的變化(圖7)。可見,當(dāng)n_estimators=273、max_depth=15時模型達(dá)到最優(yōu),迭代優(yōu)化后的模型在驗證集中的流體識別錯誤率為19.57%。
圖7 不同max_depth的RF判別錯誤率隨迭代次數(shù)變化
XGBoost[22]是經(jīng)過優(yōu)化的集成模型,由梯度提升樹模型改進(jìn)和擴展而來。利用該算法構(gòu)建流體性質(zhì)預(yù)測模型,需要優(yōu)化的參數(shù)主要有:控制模型復(fù)雜度的決策樹的最大深度max_depth;子節(jié)點中最小樣本權(quán)重和min_child_weight;正則項中的懲罰系數(shù)gamma;每一步迭代的步長learning_rate;弱學(xué)習(xí)器的最大迭代次數(shù)n_estimators。
因此使用交叉驗證法先優(yōu)化調(diào)整對整個模型影響最大的參數(shù)max_depth和min_child_weight,得到模型在驗證集上的錯誤率隨min_child_weight和max_depth的變化關(guān)系(圖8)??梢?,將模型錯誤率最低時的min_child_weight=1、max_depth=30確定為模型最優(yōu)參數(shù)。然后調(diào)節(jié)gamma和lear-ning_rate,得到驗證集的準(zhǔn)確率隨gamma和lear-ning_rate變化熱圖(圖9)??梢姡瑢⒛P捅憩F(xiàn)最優(yōu)時的gamma=0.3、learning_rate=0.0001確定為模型最優(yōu)參數(shù)。最后在確定以上參數(shù)的情況下,統(tǒng)計迭代次數(shù)與模型錯誤率的關(guān)系(圖10)。可見,隨著迭代次數(shù)增加,模型訓(xùn)練集的錯誤率不斷降低,且當(dāng)n_estimators=135時驗證集的錯誤率最低。因此最終確定模型的n_estimators=135,迭代優(yōu)化后的模型在驗證集中的錯誤率為13.26%。
圖8 不同max_depth的XGBoost判別錯誤率隨min_child_weight變化
圖9 XGBoost的learning_rate、gamma值與判別準(zhǔn)確率熱圖顏色越淺表示模型預(yù)測能力越強
Stacking能夠結(jié)合每個基模型的優(yōu)點,忽略基模型本身的缺點,因此Stacking的預(yù)測精度明顯高于各個單模型。當(dāng)基模型預(yù)測效果不同且各有優(yōu)、缺點時,需要選擇合適的元學(xué)習(xí)器才能使最終模型堆疊達(dá)到最優(yōu),因此本文利用已經(jīng)訓(xùn)練好的四個模型(CART、SVM、RF和XGBoost)依次作為元學(xué)習(xí)器,其余三個模型作為基學(xué)習(xí)器,并用交叉驗證法在驗證集上檢驗這四種模型堆疊方法的準(zhǔn)確率,最終得到不同元學(xué)習(xí)器驗證集準(zhǔn)確率柱狀圖(圖11)??梢?,當(dāng)選用CART作為元學(xué)習(xí)器時,模型融合在驗證集的效果最好,準(zhǔn)確率達(dá)到90.52%。
圖10 XGBoost迭代次數(shù)與模型錯誤率關(guān)系
圖11 不同元學(xué)習(xí)器驗證集準(zhǔn)確率柱狀圖
利用上述各個優(yōu)化后模型評估最終模型。分別利用CART、SVM、RF和XGBoost判別測試集樣本點,并與Stacking的判別結(jié)果對比(圖12),可見,CART、SVM、RF和XGBoost的準(zhǔn)確率分別為78.46%、77.54%、79.69%、87.08%,而Stacking的準(zhǔn)確率達(dá)到92%。由于高溫、高壓儲層的氣、水關(guān)系復(fù)雜,導(dǎo)致各個單模型對氣水同層的識別效果一般,如XGBoost的準(zhǔn)確率只有76.19%,而Stacking識別氣水同層、氣層、水層和干層的準(zhǔn)確率分別為90.48%、90.91%、92.62%及95.83%。因此Stacking的流體識別效果較好。
圖12 不同流體識別方法的準(zhǔn)確率柱狀圖
圖13為X-1井測井解釋成果圖。由圖可見,根據(jù)測壓回歸資料分別證實,第6~第9層分別為干層、氣層、氣水同層和水層,而CART、SVM、RF和XGBoost對第6~第8層出現(xiàn)識別錯誤,如RF和XGBoost以及人工解釋都誤將第8層識別為氣層,只有Stacking判別第8層為氣水同層。因此無論是總體的識別準(zhǔn)確率,還是識別氣層、氣水同層、水層以及干層的準(zhǔn)確率,Stacking的預(yù)測效果明顯優(yōu)于各個單模型,說明基于模型融合策略構(gòu)建模型的流體識別準(zhǔn)確率高于單一模型,并且模型的魯棒性更強,在每個分類上的表現(xiàn)也更穩(wěn)定。
本文借鑒了人工智能領(lǐng)域的前沿算法,提出了一種基于模型融合算法的高溫、高壓儲層流體識別技術(shù)——Stacking,將原始測井?dāng)?shù)據(jù)標(biāo)準(zhǔn)化處理生成訓(xùn)練樣本,并選擇流體識別效果較好的機器學(xué)習(xí)算法(SVM、RF和XGBoost作為Stacking的基分類器,CART作為Stacking的元分類器)建模,充分利用不同算法從不同角度觀測數(shù)據(jù)空間與結(jié)構(gòu),獲得了最優(yōu)預(yù)測結(jié)果。
與CART、SVM及RF相比,XGBoost對高溫、高壓儲層的流體識別效果較好。與其他機器學(xué)習(xí)算法相比,Stacking的流體識別效果更好,說明模型融合算法具有較高的應(yīng)用價值,可為測井解釋建模提供新思路。但是Stacking算法的復(fù)雜度導(dǎo)致計算時間急劇增加,因此,未來研究中有必要布置分布式計算環(huán)境,對不同基模型分別建模,有效減少計算時間。
圖13 X-1井測井解釋成果圖