閆星宇 顧漢明*② 肖逸飛 任 浩 倪 俊
(①中國地質大學(武漢)地球物理與空間信息學院,湖北武漢 430074;②地球內部多尺度成像湖北省重點實驗室,湖北武漢 430074)
致密砂巖氣儲層作為一種非常規氣藏,在油氣勘探開發中受到了越來越多的關注[1],準確識別和評價致密砂巖氣儲層是成功開采氣藏的前提。測井作為重要的油氣勘探手段,信息量大且數據連續,能有效地識別各類儲層。但是,在致密氣藏的測井解釋中,通常面臨著低信噪比、低分辨率和非均質、非線性等難點。常規的測井解釋[2-4]往往需要通過專業知識與地區經驗,盡量挖掘測井資料中的隱藏信息,計算孔隙度、滲透率等地質參數,人工判定不同的測井解釋結論。這些工作往往效率極低且易出錯,因此,尋求新的致密砂巖氣儲層測井解釋技術成為當今致密砂巖氣藏勘探中急需解決的重點問題[5]。
近年來,機器學習作為一種高效的數據挖掘方法,越來越多地應用于測井解釋之中: Rogers等[6]、Baldwin等[7]基于人工神經網絡(ANNs),使用測井數據進行巖性識別與測井評價; 張向君等[8]、Anazi等[9]、Sebtosheikh等[10]使用支持向量機算法(SVM)進行儲層預測; Shi等[11]、Li等[12]通過決策樹(DT)算法進行氣層識別與測井解釋。實際測井數據特征往往具有不均衡性,數據集中某些類的樣本遠多于其他類,單一模型的算法對于測井解釋具有一定的局限性,集成學習(Ensemble Learning)方法則可以很好地解決這一問題[13-14]。李詒靖等[14]將集成學習方法中的提升(boosting)算法應用于儲層含油性識別; 宋建國等[15]、 Cracknell等[16]、 周雪晴等[17]分別將隨機森林(RF)分類與回歸方法用于儲層預測與巖相分類之中。極端梯度提升(XGBoost,eXtreme Gradient Boosting)算法是對提升算法的優化[18],具有更高的模型精度與泛化能力,并加入了防止過擬合的正則項,且支持并行計算,在金融、圖像識別、醫學等領域得到了廣泛應用[19-20],但在地球物理領域中應用較少。
致密砂巖氣儲層的測井數據屬于典型的不均衡數據,非儲層的樣本數量遠遠大于儲層。基于A工區測井資料,通過XGBoost算法預測該區孔隙度與滲透率參數,進一步對該區儲層進行預測分類,并與同為集成學習方法的隨機森林方法和單一模型的支持向量機算法進行比較,以最終分類結果的混淆矩陣和準確率作為評價標準,研究XGBoost算法在致密砂巖氣儲層測井解釋方面的應用。
集成學習方法是指將多個學習模型組合,以獲得更好的效果。提升算法屬于集成學習方法,其基本思想是將數以百計的低精度簡單樹模型結合起來,在每次迭代后都會為模型生成一棵新樹,以建立更精確的模型。目前最有效的建立樹模型方法是由Friedman[21]提出的梯度提升樹,它利用梯度下降法生成基于所有先前樹的新樹,從而將目標函數推向最小方向。
極端梯度提升算法是對梯度提升樹算法的優化,可以應用于回歸問題與分類問題,相較于梯度提升算法,該方法對目標誤差函數以二階泰勒公式展開,并加入了正則項。
使用XGBoost算法建立測井解釋模型時,首先基于分類回歸樹(CART)作為基分類器定義目標函數,它包含損失函數與正則項
(1)
(2)

之后輸入測井數據進行累加訓練,對于第t輪迭代,模型目標函數可表示為
(3)
式中:ft(xi)表示加入的第t棵分類回歸樹; 常數C表示前t-1棵樹的復雜程度。
通過泰勒公式近似目標函數,對式(3)以二階泰勒公式展開

(4)


(5)
目標函數obj(t)對ωj求偏導,并令其等于0,可得到使該目標函數值最小的最優權重
(6)
將式(6)代入式(5),得到目標函數的最優值
(7)
XGBoost算法在訓練過程中借鑒了隨機森林[15]的思想,在迭代過程中沒有用到所有樣本特征,而是采用了隨機子空間方法。若輸入的特征變量由I種不同的測井參數Li組成,則每一個節點從中隨機選擇部分特征,并比較其中的最優分割進行節點分裂,可有效提高模型的泛化能力。為此,在選擇子樹分裂點時,定義增益
(8)

將輸入的測井參數特征Li排列后使用式(8)遍歷每一維特征的每一個分裂點,通過使增益Gain的值最大來判別最佳分裂點。
將XGBoost算法應用于A工區致密氣藏的儲層類型識別。該區發育南北向展布的三角洲前緣砂體,儲集物性較好,有利于巖性圈閉氣藏的形成。該區油氣藏屬于典型的致密砂巖氣藏。樣本數據為A工區已完成測井解釋的31口井的測井資料,首先通過建立XGBoost回歸模型進行孔隙度與滲透率參數的預測。然后將預測結果作為新的特征加入輸入變量,用于該工區致密砂巖氣儲層的識別。
在樣本數據中隨機抽取24口井(共計3414個樣本數據)作為訓練集,其中7口井(共計921個樣本數據)作為測試集,以評估模型的預測效果。
經統計,該區主要的測井解釋結論有差氣層、干層、含水氣層、煤層、氣層、氣水同層、水層7種。通過對測井曲線資料進行分析,提取適合A工區判定儲層類型的測井響應參數,其中選取聲波時差(AC)、體積密度(DEN)、補償中子(CNL)、自然伽馬(GR)與深感應電阻率(RILD)等5類,根據人工實測測井解釋資料統計結果,對該區塊各類測井響應參數做交會分析,分析各類測井響應參數對于儲層的敏感性,結果如圖1所示。
圖1中各個窗格分別顯示了不同儲層與對應橫、縱坐標軸上兩個響應參數之間的關系,從圖中可以看出,各類測井響應參數對于大部分儲層的判別均比較敏感。

圖1 測井曲線響應特征與測井解釋交會圖
孔隙度與滲透率是評價儲層性質的重要物性參數,通常是依據各類測井曲線,通過一定的數學公式及經驗公式、交會圖法等進行計算[22],或者利用一些地球物理反演方法[23-25]進行預測。文中采用XGBoost算法,將測井響應參數作為訓練模型的輸入參數,分別建立預測該區域孔隙度與滲透率的XGBoost回歸預測模型。由于XGBoost算法基分類器采用樹模型,對參數特征的敏感度較低,因此無需對輸入數據歸一化。提取訓練集24口井的AC、DEN、CNL、GR與RILD等5類測井響應參數作為特征變量,孔隙度與滲透率數據作為預測結果,形成了3414組樣本數據。該區實測孔隙度的極大值為16.4%,極小值為0,均值為6.5%。實測滲透率極大值為8.95mD,極小值為0.01mD,均值為0.318mD。訓練集部分樣本數據如表1所示。

表1 訓練集部分樣本數據
通過XGBoost算法建立該區孔隙度與滲透率的回歸預測模型,按照孔隙度、滲透率預測值與實測值的均方根誤差公式計算訓練誤差或測試誤差
(9)

通過XGBoost算法建立回歸預測模型,需要設置的參數主要有: 迭代次數,即加入的分類回歸樹個數t; 用于控制模型復雜度的分類回歸樹的最大深度(Dmax)和子節點中最小樣本權重和(Wmin);正則項中的懲罰系數α、λ; 在使用隨機子空間時用于增加模型隨機性的參數隨機采樣訓練樣本(Ss)、列采樣(Cs); 以及判斷節點是否分裂的閾值,即所需的最小損失函數下降值γ。
在大致確定其他參數的情況下,統計回歸預測模型迭代次數從1~300時每次相應的訓練集和測試集的均方根誤差(RMSE)。迭代統計結果如圖2所示。統計結果表明,隨著迭代次數增加,XGBoost回歸預測模型的訓練誤差和測試誤差均逐漸下降。當迭代到一定次數時,均方根誤差值基本趨于穩定。在孔隙度預測中,訓練集的均方根誤差值最終在1.6左右輕微浮動,測試集誤差在1.8左右浮動;滲透率預測中,訓練集的均方根誤差值最終在0.72左右浮動,測試集的誤差在0.75左右浮動。說明XGBoost回歸預測模型對于不同的訓練樣本具有一定的穩定性。但在進行滲透率預測時,測試集最終的均方根誤差要明顯高于訓練集,可見XGBoost回歸預測模型對于該區滲透率預測的泛化能力較弱,之后可以通過降低模型復雜程度與增加模型隨機性避免滲透率預測中的過擬合現象。迭代次數以精度不再發生明顯變化為原則,本區孔隙度預測一般可設置為200次迭代,滲透率預測一般可設置250次迭代。

圖2 孔隙度(a)與滲透率(b)預測結果均根方誤差隨迭代次數變化
在選定孔隙度、滲透率預測迭代次數分別為200與250次后,首先調節Dmax與Wmin。可以通過適當降低Dmax及增大Wmin控制模型復雜度,避免模型過擬合。在訓練集中,令Dmax與Wmin分別從1變化到7,并統計不同組合下的誤差結果。孔隙度與滲透率預測中的誤差結果分別如圖3a、圖3b所示。誤差值總體變化不大,且在Dmax=2、Wmin=2時孔隙度預測誤差最小;Dmax=2、Wmin=4時滲透率預測誤差最小。之后調節正則項中的懲罰系數α、λ,在訓練集中,λ=1時α在不同取值情況下的誤差統計如圖3c、圖3d中的紅線所示,α=1時λ在不同取值下的誤差統計如圖3c、圖3d中的黑線所示。統計結果表明,在孔隙度預測中,α=35、λ=39時誤差最小;在滲透率預測中,α=0.9、λ=19時誤差最小。
確定以上參數后,調節Ss和Cs。Ss決定用于訓練模型的子樣本占整個樣本集合的比例;Cs表示創建分類回歸樹時對特征(即測井參數的種類)采樣的比例。兩者可用于增加采樣隨機性,防止模型過擬合,但取值過小時容易導致欠擬合,取值范圍一般為0.5~1.0。在訓練集中,令Ss與Cs分別從0.5變化到1.0,并統計不同組合下的均方根誤差值。孔隙度與滲透率預測誤差分別如圖4a、圖4b所示,孔隙度、滲透率預測均方根誤差均在Ss=0.9、Cs=0.8時最小。之后調節參數γ,γ設置為損失函數減小的最低閾值,如果分裂使損失函數減小的值大于γ值,則這個節點才分裂,孔隙度與滲透率預測中的誤差結果分別如圖4c、圖4d所示。根據統計結果,γ對于該區孔隙度與滲透率預測結果精度影響較小,最優參數均取0.3即可。

圖3 部分參數對于均根方誤差影響統計圖

圖4 部分參數對于均根方誤差影響統計圖
從統計結果可以看出,雖然XGBoost算法參數較多,但相較于迭代次數,其他參數對于回歸預測精度影響較小。因此,利用XGBoost算法對孔隙度、滲透率預測,只需要保證迭代次數足夠大即可。根據均方根誤差統計結果優化參數,最終建立適用于該區的孔隙度、滲透率回歸預測模型,并用于測試集7口井的預測。測試集中的KT-a井孔隙度、滲透率預測結果散點圖如圖5所示。
計算測試集數據中樣本預測值相對于實測值的平均相對誤差
(10)

圖5 KT-a井孔隙度(a)與滲透率(b)預測結果統計圖
在測試集中,孔隙度預測結果平均相對誤差為17.45%;滲透率預測結果平均相對誤差為33.90%,計算結果表明,通過XGBoost算法建立的回歸模型在該工區總體預測效果較好。
為研究XGBoost算法分類預測在該區儲層識別中的應用,本文利用XGBoost算法建立分類模型對該區儲層類型進行預測。將回歸預測計算出的孔隙度、滲透率參數融入特征變量,與AC、DEN、CNL、GR、RILD等5類測井響應參數組成新的特征變量加入訓練,并優化模型參數,使分類預測模型達到最佳效果(訓練樣本分類準確率最高)。對測試集的7口井的儲層類型進行分類預測,以研究模型預測效果。將輸出的分類結果以混淆矩陣的方式統計,如表2所示。
表2中每列代表樣本儲層類型的預測類別,每行代表樣本儲層的真實歸屬,對角線上數據為各個儲層類型正確分類的數量。儲層預測模型的準確率表示模型正確預測的樣本個數與測試集中該類儲層樣本總和的比值(即對角線上數值與每行總和的比值),精確率表示每類儲層被正確預測的個數與該儲層被預測出的總數比值(即對角線上數值與每列總和的比值)。

表2 XGBoost識別結果混淆矩陣
從表2中可以看出,XGBoost算法對于該區測井解釋的分類效果較好,準確率為0.846。對于煤層、氣層的識別較為準確,識別出了100%的煤層、65%的氣層和64%的含水氣層。
之后分別使用隨機森林模型和支持向量機模型對該區儲層類型進行預測,分類結果統計如表3、表4所示。對比三種機器學習模型的預測效果,其中: XGBoost模型預測準確率為0.846; 隨機森林模型預測準確率為0.824; 支持向量機模型預測準確率為0.810。從表中可以看出, XGBoost模型針對該區儲層類型的預測效果要優于其他兩類機器學習模型,而隨機森林模型預測準確率雖然低于XGBoost模型,但依舊高于支持向量機模型,這進一步證明了集成學習方法在處理致密砂巖氣儲層測井數據中的優勢。在測試集中選取KT-a、KT-b兩口井柱狀圖進行比較,如圖6、圖7所示。

表3 隨機森林識別結果混淆矩陣

表4 支持向量機識別結果混淆矩陣
從圖6、圖7中可以進一步看出,XGBoost模型對于各段儲層的識別準確率高于隨機森林與支持向量機模型,尤其對于氣層的識別較為準確,能識別出絕大部分的氣層。但對于部分差氣層與氣層的區分效果較差。總體而言XGBoost模型有著良好的泛化能力,在處理致密砂巖氣儲層測井數據時具有一定的優勢。

圖6 不同機器學習模型關于KT-a井儲層預測結果對比

圖7 不同機器學習模型關于KT-b井儲層預測結果對比
針對致密砂巖氣儲層測井數據在應用于測井解釋時存在的種種難點,文中基于A工區測井解釋資料,通過XGBoost算法建立回歸模型與分類模型,分別用于該區孔隙度、滲透率預測與儲層分類預測,討論不同參數對于模型預測精度的影響,并將分類預測模型與隨機森林模型、支持向量機模型進行對比,得出以下結論。
(1)基于XGBoost算法建立的回歸預測模型在A工區致密砂巖氣儲層的孔隙度與滲透率預測中具有較高的準確性。雖然XGBoost算法需要優化的參數較多,但在迭代次數(即加入的分類回歸樹個數)達到一定數量后,訓練與測試樣本誤差便趨于穩定。相較于孔隙度預測,回歸模型在該工區滲透率預測中泛化能力較弱,可以適當降低模型復雜度或增加基分類器采樣隨機性避免過擬合現象。
(2)XGBoost分類預測模型在該工區致密砂巖氣藏的儲層預測中也收到了良好的效果,優于傳統單一模型的支持向量機算法與集成方法中的隨機森林方法,可有效地應用于致密砂巖氣儲層的儲層識別中。