秦 敏 胡向陽 梁玉楠 袁 偉 楊 冬
(中海石油(中國)有限公司海南分公司,海南海口 524057)
識別流體性質是油氣田勘探、開發的一項重要任務,最基本的方法就是綜合測井與地質、巖心以及中途測試等信息,利用不同流體的測井響應特征優選對流體敏感的參數,從而識別流體。
東方X氣田位于鶯歌海盆地,隨著勘探目標轉向中深層高溫、高壓領域,儲層孔隙結構復雜、非均質性強,導致氣、水關系復雜,使氣層、水層、氣水同層和干層的測井響應特征差異不明顯。目前,流體識別方法主要基于測井曲線之間的差異,利用常規圖板法定性識別,但識別結果過于依賴地區經驗判斷,且沒有考慮測井曲線與儲層含氣性之間的非線性關系。特別是在高溫、高壓儲層,儲層電性參數復雜,往往難以找準氣、水間的電性界限,導致常規方法識別儲層流體性質時精度較低或方法失效。
近年來,機器學習作為一種高效的數據挖掘方法,能夠挖掘測井響應特征之間的非線性關系,已經廣泛用于測井解釋,因此基于測井資料的機器學習算法成為流體識別的重要手段。目前儲層流體識別大多采用單一的機器學習模型,常見的有神經網絡[1-3]、決策樹[4-5]、支持向量機[6-8]、貝葉斯網絡[9-11]、隨機森林[12-13]和梯度提升樹[14]等。
在理論和實際應用中,每種機器學習算法各有優缺點,因此利用單一模型很難全面挖掘高溫、高壓儲層的測井響應信息。隨著模型融合技術的快速發展,模型融合算法很好地用于工業實踐[15-21],但是未被用于測井解釋領域。因此,本文提出利用Stacking模型融合方法(Stacked Generalization Ensemble,簡稱Stacking)建模,集成了流體識別效果較好的機器學習算法(決策樹、支持向量機、隨機森林和極端梯度提升),并利用Stacking識別鶯歌海盆地高溫、高壓儲層流體。結果發現,Stacking的預測精度明顯高于各個單模型,表明該算法可有效提高流體識別精度。
鶯瓊盆地中深層地溫梯度較高(4.6℃/100m),普遍發育異常高壓(壓力梯度高達18~22kPa/m),儲層受多期成巖作用改造,微觀孔隙類型多樣,具有較強的非均質性,嚴重影響測井流體識別精度。分析東方X氣田關鍵探井的測井曲線發現,測井曲線與地層中含氣量有如下關系:當儲層從水層向氣水同層過渡時,中子和密度曲線呈明顯交會的“挖掘效應”,部分井的電阻率發生明顯變化,部分井的電阻率差別較小,無明顯臺階型變化;當含氣飽和度繼續增加,從氣水同層向氣層過渡時,中子密度曲線變化較小,但電阻率曲線明顯變化,且干層普遍呈高自然伽馬值。
根據上述分析,繪制了東方X氣田中子—密度交會圖(圖1)和自然伽馬—電阻率交會圖(圖2)。由圖1可見:由于補償中子測井的“挖掘效應”,氣層、水層、氣水同層、干層數據點分別位于圖板左下方、上方、中部、右上方,這種分布符合氣層和水層的測井響應特征,但是由于不同流體性質樣本物性存在一定相似性,因此不同流體性質的樣本數據點交疊范圍明顯,故無法直接應用中子—密度交會圖識別流體。由圖2可見:與圖1相比,氣層和氣水同層的界限相對明顯,但分界線附近氣層和氣水同層的數據點依然很密集,在氣層電阻率普遍較低的背景下,容易造成誤判;氣水同層和水層的數據點存在一定重疊,難以找準高溫、高壓儲層的電性界限。

圖1 東方X氣田中子—密度交會圖

圖2 東方X氣田自然伽馬—電阻率交會圖
綜合分析上述圖板可知:東方X氣田不同流體性質儲層的測井響應差異不明顯,尤其難以確定不同流體的電阻率下限;利用孔隙度測井曲線識別流體(圖1)易受物性因素干擾,不同流體性質的樣本數據點存在重疊區域。故需要找到一種用于多參數綜合識別的機器學習模型,能夠綜合多種因素,盡量消除流體性質以外影響因素的干擾,盡可能區分不同流體性質的數據點。
基于測井資料,利用機器學習算法研究儲層流體性質是流體識別的重要方法。本文主要采用決策樹、支持向量機、隨機森林和極端梯度提升樹等機器學習算法,并最終用Stacking集成。
Stacking的本質是一種堆棧集成算法,其模型融合的策略是使用“學習法”,即通過一個次級學習器結合其余幾個初級學習器,然后使用次級學習器“改正”幾個初級學習器的錯誤,主動提升集成后性能。通常將初級學習器稱為基學習器,結合基學習器的次級學習器稱為元學習器。首先,Stacking將原始數據集劃分成若干子數據集,輸入到第1層預測模型的各個基學習器中,每個基學習器輸出各自的預測結果。然后,第1層的輸出再作為第2層的輸入,訓練第2層預測模型的元學習器,再由第2層的模型輸出最終預測結果。Stacking通過泛化多個模型的輸出結果,以提升整體預測精度(圖3)。

圖3 基于Stacking的集成學習方式示意圖

若Stacking采用分類與回歸樹(CART)、支持向量機(SVM)和隨機森林(RF)作為基學習器,極端梯度提升樹(Extreme Gradient Boosting,XGBoost)作為元學習器,則偽代碼如下:
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學習系統的預測結果。
偽代碼注釋如下:CV(Cross Validation)為交叉驗證;append函數表示在列表末尾添加新的對象;predict函數表示用某個機器學習算法對輸入數據進行預測。
分別以自然伽馬、深電阻率(A40H)、淺電阻率(P16H)、中子、密度曲線值為樣本點,并將模型識別結果輸出為:氣層設定為“4”,干層設定為“3”,氣水同層設定為“2”,水層設定為“1”。樣本數據來自DST(Drill-stem Testing,油氣井中途測試)或MDT(Modular Formation Dynamics Tester,模塊式地層動態測試器)測試層段。由于DST測試段不多,MDT測試段多但只反映單點特征,因此樣本數據嚴重不足。為了獲取足夠多的樣本數據分析流體的測井響應特征,在MDT測試層段根據測井響應特征和氣、水分布規律,在測井曲線穩定段適當擴大了樣本點選取范圍。選取東方X氣田共10口井、22個層段(氣層、氣水同層、水層和干層的層數分別為8、4、5和5)共813個樣本點(氣層、氣水同層、水層和干層的樣本數分別為267、135、353和58),將其中60%用于訓練集,并在訓練集中用10折交叉驗證法得到每個模型的最優參數,用40%作為測試集評估最終模型,分別建立CART、RF、SVM、XGBoost、Stacking模型。由于不同測井信息具有不同的量綱和數量級,影響數據分析結果,因此在建模前要進行數據標準化處理。對于線性刻度的測井曲線x(自然伽馬、密度和中子),在訓練時進行線性歸一化處理
(1)
對于非線性對數特征曲線X,如地層電阻率和沖洗帶電阻率,在輸入模型之前要進行對數變換
(2)
經過數據標準化后,將數據集分為訓練集和測試集,再利用10折交叉驗證法(圖4)將訓練集分為訓練子集和驗證集,利用訓練子集訓練模型、驗證集驗證模型,根據驗證結果不斷調整模型參數,并選擇最好的模型。最后,利用測試集評估最優模型,既能防止測試集信息泄露,又能用驗證集優化模型。

圖4 10折交叉驗證法示意圖
決策樹是一種常用的數據挖掘方法,類似于流程圖的樹型結構。決策樹算法主要包括構造和分類二個過程。構造決策樹分為建樹和剪枝兩個階段,前者歸納出決策樹,后者防止過度擬合。本文采用最常用的決策樹算法CART。
基于CART的決策樹一般需要調整的參數為樹的最大深度max_depth,樹越深,分裂越多,越能捕獲有關數據的信息,但同時越容易過擬合,使模型泛化能力變弱。因此,利用10折交叉驗證法觀測決策樹模型的訓練集和驗證集在樹的不同深度的表現(圖5):當max_depth不斷增大時,模型訓練集的錯誤率不斷降低,但是模型驗證集錯誤率呈先減小、后增大的趨勢,說明當max_depth較小時,模型偏差較大,決策樹學習能力較差;當max_depth較大時,模型方差較大,出現過擬合,導致模型過于復雜,泛化能力差;當max_depth=10時,模型在驗證集上表現最好,此時模型達到最優,錯誤率為23.57%。

圖5 不同決策樹max_depth與模型錯誤率關系
SVM由線性可分情況下的最優分類面發展而來,其基本思想是尋找一個滿足分類要求的超平面,在保證精度的同時使超平面兩側的空白區域最大化,并且使分類間隔最大。
利用SVM識別流體時,需要選擇轉換數據維度的核函數,本文為了解決流體識別的線性不可分問題,選用徑向基函數(RBF),其中懲罰系數C、γ(RBF作為核函數自帶的一個參數)是基于RBF的SVM模型的兩個非常重要的參數。C表征對誤差的寬容度,C越大,越容易過擬合,模型的方差越大;C越小,越容易欠擬合,模型的偏差越大。γ越小,方差越大,高斯分布曲線越尖峭,越容易過擬合。因此需要選取合適的C與γ值。利用10折交叉驗證方法,由驗證集評價各個參數的訓練模型,從而列出不同的C和γ值的流體識別準確率熱圖(圖6)。可

圖6 SVM的C值、γ值與判別準確率熱圖顏色越淺表示模型預測能力越強
見,當C=10000、γ=0.1時模型達到最優,迭代優化后的模型在驗證集中的流體識別準確率為77.89%。
RF是一種集成式的有監督學習算法,同時生成多個決策樹,并將模型的結果匯總以提升預測準確率,而且能提升模型的魯棒性。
本文所用的RF模型是基于CART的引導聚集(Bagging)算法,需要調節的參數包括Bagging框架參數和CART參數,所以需要調節的參數主要是弱學習器的最大迭代次數n_estimators以及決策樹的最大深度max_depth。通過10折交叉驗證方法,
用驗證集評估不同決策樹深度的模型錯誤率隨迭代次數的變化(圖7)。可見,當n_estimators=273、max_depth=15時模型達到最優,迭代優化后的模型在驗證集中的流體識別錯誤率為19.57%。

圖7 不同max_depth的RF判別錯誤率隨迭代次數變化
XGBoost[22]是經過優化的集成模型,由梯度提升樹模型改進和擴展而來。利用該算法構建流體性質預測模型,需要優化的參數主要有:控制模型復雜度的決策樹的最大深度max_depth;子節點中最小樣本權重和min_child_weight;正則項中的懲罰系數gamma;每一步迭代的步長learning_rate;弱學習器的最大迭代次數n_estimators。
因此使用交叉驗證法先優化調整對整個模型影響最大的參數max_depth和min_child_weight,得到模型在驗證集上的錯誤率隨min_child_weight和max_depth的變化關系(圖8)。可見,將模型錯誤率最低時的min_child_weight=1、max_depth=30確定為模型最優參數。然后調節gamma和lear-ning_rate,得到驗證集的準確率隨gamma和lear-ning_rate變化熱圖(圖9)。可見,將模型表現最優時的gamma=0.3、learning_rate=0.0001確定為模型最優參數。最后在確定以上參數的情況下,統計迭代次數與模型錯誤率的關系(圖10)。可見,隨著迭代次數增加,模型訓練集的錯誤率不斷降低,且當n_estimators=135時驗證集的錯誤率最低。因此最終確定模型的n_estimators=135,迭代優化后的模型在驗證集中的錯誤率為13.26%。

圖8 不同max_depth的XGBoost判別錯誤率隨min_child_weight變化

圖9 XGBoost的learning_rate、gamma值與判別準確率熱圖顏色越淺表示模型預測能力越強
Stacking能夠結合每個基模型的優點,忽略基模型本身的缺點,因此Stacking的預測精度明顯高于各個單模型。當基模型預測效果不同且各有優、缺點時,需要選擇合適的元學習器才能使最終模型堆疊達到最優,因此本文利用已經訓練好的四個模型(CART、SVM、RF和XGBoost)依次作為元學習器,其余三個模型作為基學習器,并用交叉驗證法在驗證集上檢驗這四種模型堆疊方法的準確率,最終得到不同元學習器驗證集準確率柱狀圖(圖11)。可見,當選用CART作為元學習器時,模型融合在驗證集的效果最好,準確率達到90.52%。

圖10 XGBoost迭代次數與模型錯誤率關系

圖11 不同元學習器驗證集準確率柱狀圖
利用上述各個優化后模型評估最終模型。分別利用CART、SVM、RF和XGBoost判別測試集樣本點,并與Stacking的判別結果對比(圖12),可見,CART、SVM、RF和XGBoost的準確率分別為78.46%、77.54%、79.69%、87.08%,而Stacking的準確率達到92%。由于高溫、高壓儲層的氣、水關系復雜,導致各個單模型對氣水同層的識別效果一般,如XGBoost的準確率只有76.19%,而Stacking識別氣水同層、氣層、水層和干層的準確率分別為90.48%、90.91%、92.62%及95.83%。因此Stacking的流體識別效果較好。

圖12 不同流體識別方法的準確率柱狀圖
圖13為X-1井測井解釋成果圖。由圖可見,根據測壓回歸資料分別證實,第6~第9層分別為干層、氣層、氣水同層和水層,而CART、SVM、RF和XGBoost對第6~第8層出現識別錯誤,如RF和XGBoost以及人工解釋都誤將第8層識別為氣層,只有Stacking判別第8層為氣水同層。因此無論是總體的識別準確率,還是識別氣層、氣水同層、水層以及干層的準確率,Stacking的預測效果明顯優于各個單模型,說明基于模型融合策略構建模型的流體識別準確率高于單一模型,并且模型的魯棒性更強,在每個分類上的表現也更穩定。
本文借鑒了人工智能領域的前沿算法,提出了一種基于模型融合算法的高溫、高壓儲層流體識別技術——Stacking,將原始測井數據標準化處理生成訓練樣本,并選擇流體識別效果較好的機器學習算法(SVM、RF和XGBoost作為Stacking的基分類器,CART作為Stacking的元分類器)建模,充分利用不同算法從不同角度觀測數據空間與結構,獲得了最優預測結果。
與CART、SVM及RF相比,XGBoost對高溫、高壓儲層的流體識別效果較好。與其他機器學習算法相比,Stacking的流體識別效果更好,說明模型融合算法具有較高的應用價值,可為測井解釋建模提供新思路。但是Stacking算法的復雜度導致計算時間急劇增加,因此,未來研究中有必要布置分布式計算環境,對不同基模型分別建模,有效減少計算時間。

圖13 X-1井測井解釋成果圖