邢 強(qiáng),張晉言,王鎮(zhèn)方,馬 睿,姜文宗,劉寶弟,王延江
(1.中石化經(jīng)緯有限公司勝利測(cè)井公司,山東東營(yíng)257096;2.中國(guó)石油大學(xué)(華東)海洋與空間信息學(xué)院,山東青島266580;3.中國(guó)石油大學(xué)(華東)控制科學(xué)與工程學(xué)院,山東青島266580)
近年來,隨著深井、超深井、復(fù)雜井的日益增多[1],以及油氣風(fēng)險(xiǎn)勘探開發(fā)力度的不斷加大,利用快速發(fā)展的人工智能算法實(shí)現(xiàn)測(cè)井資料處理解釋的自動(dòng)化、智能化[2],提高測(cè)井資料處理解釋的質(zhì)量與效率,降低勞動(dòng)強(qiáng)度,已成為測(cè)井資料處理解釋的發(fā)展趨勢(shì)。
在測(cè)井解釋評(píng)價(jià)領(lǐng)域,解釋評(píng)價(jià)技術(shù)存在著區(qū)域性差異和共性[3-4]。由于沉積環(huán)境、埋深等地質(zhì)條件的不同,各區(qū)塊在孔、滲、飽等評(píng)價(jià)參數(shù)方面既有共性又有差異性[5],而采用傳統(tǒng)的測(cè)井解釋方法很難判斷這兩者的區(qū)別,只有通過經(jīng)驗(yàn)的累積(包括解釋軟件使用經(jīng)驗(yàn)、實(shí)驗(yàn)室成果分析以及取心、錄井資料的對(duì)比),才能解決這一問題。
20世紀(jì)80年代國(guó)外已經(jīng)發(fā)展了多種石油測(cè)井解釋的專家系統(tǒng),如地層傾角解釋咨詢系統(tǒng)、巖性模式識(shí)別(LITHO)專家系統(tǒng)以及巖石物性評(píng)價(jià)知識(shí)庫(kù)(LOGIX)系統(tǒng),而國(guó)內(nèi)主要有油井測(cè)井解釋專家系統(tǒng)(OWLI)和石油測(cè)井解釋專家系統(tǒng)(LIX)[6]。這些系統(tǒng)通過計(jì)算機(jī)模擬專家的思維方法和解釋過程,匯集多個(gè)解釋專家的知識(shí)和經(jīng)驗(yàn)作為專家規(guī)則庫(kù),可以讓普通解釋人員完成類專家級(jí)的解釋評(píng)價(jià)任務(wù)。但在實(shí)際應(yīng)用中,上述系統(tǒng)存在規(guī)則邏輯處理較為復(fù)雜、規(guī)則庫(kù)只能由測(cè)井解釋專家手工編寫、不能自動(dòng)獲取規(guī)則等問題。近年來,隨著人工智能技術(shù)的發(fā)展,利用機(jī)器學(xué)習(xí)相關(guān)的方法進(jìn)行測(cè)井解釋已然成為熱點(diǎn)研究方向[1-2,5-6]。朱劍兵等[7]提出了基于雙向循環(huán)深井網(wǎng)絡(luò)的河流相儲(chǔ)層預(yù)測(cè)方法,有效指導(dǎo)了研究區(qū)的勘探部署;林年添等[8]提出了基于無監(jiān)督與監(jiān)督學(xué)習(xí)的多波地震油氣儲(chǔ)層分布預(yù)測(cè)方法,較為準(zhǔn)確地刻畫了含油氣儲(chǔ)層的分布邊界;王興龍等[9]提出利用C5.0決策樹算法來解釋儲(chǔ)層滲透率,該方法具有一定的普適性;丁磊等[10]針對(duì)泥質(zhì)體積分?jǐn)?shù)高、物性差的儲(chǔ)層,基于印度尼西亞公式開發(fā)了改進(jìn)皮克特圖版,為測(cè)井解釋評(píng)價(jià)提供了更為精確的參數(shù)。目前,大多數(shù)方法[7-10]使用單個(gè)學(xué)習(xí)器完成測(cè)井解釋任務(wù),容易出現(xiàn)過擬合和欠擬合的情況,而鮮有方法將集成決策樹模型應(yīng)用于此。集成決策樹模型是監(jiān)督學(xué)習(xí)中最強(qiáng)大也最常用的模型之一,其本身不是一個(gè)單獨(dú)的機(jī)器學(xué)習(xí)算法,而是通過構(gòu)建并結(jié)合多個(gè)機(jī)器學(xué)習(xí)器來完成學(xué)習(xí)任務(wù),由此來提升算法性能?;诖怂枷?CHEN等[11]提出了極端梯度提升決策樹算法(extreme gradient boosting,XGBoost),學(xué)習(xí)過程中迭代多棵決策樹來共同決策。相比于單決策樹的模型,XGBoost訓(xùn)練過程比較穩(wěn)定,提升了預(yù)測(cè)效果。
針對(duì)上述問題,本文在文獻(xiàn)[11]的基礎(chǔ)上,提出了一種基于極端梯度提升決策樹的測(cè)井解釋專家規(guī)則的自動(dòng)獲取方法。該方法以測(cè)井?dāng)?shù)據(jù)、錄井資料、地質(zhì)資料等為特征,以試油結(jié)果為標(biāo)簽,在數(shù)據(jù)集中訓(xùn)練集成決策樹模型,建立輸入特征與試油結(jié)論之間的專家規(guī)則。為證明XGBoost算法的有效性,本文使用支持向量機(jī)(support vector machine,SVM)算法[12-13]和梯度提升決策樹(gradient boosting decision tree,GBDT)算法[14]建立相同的規(guī)則庫(kù)進(jìn)行效果對(duì)比,并將其應(yīng)用于老井復(fù)查以形成研究區(qū)內(nèi)共性的解釋知識(shí)規(guī)則。
集成學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種范式,該方法通過訓(xùn)練多個(gè)弱分類器來解決相同的問題,并將它們結(jié)合起來以獲得更好的結(jié)果。而XGBoost作為一種改進(jìn)的集成決策樹算法,因其性能優(yōu)越,對(duì)輸入要求不嚴(yán)格,計(jì)算復(fù)雜度低等特點(diǎn),往往是數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)[15-16]算法中必備工具之一,在工業(yè)界中也有大量應(yīng)用。
XGBoost使用分類回歸決策樹(classification and regression tree,CART)模型作為基分類器,將多個(gè)決策樹以加法訓(xùn)練(additive training)的形式集成起來得到最后的輸出模型,訓(xùn)練原理如圖1所示。與GBDT不同的是,XGBoost在目標(biāo)函數(shù)中增加了正則化項(xiàng)來控制模型的復(fù)雜度,并且對(duì)損失函數(shù)進(jìn)行二階泰勒展開,利用二階導(dǎo)數(shù)信息可使得模型收斂更快,精度更高。
圖1 XGBoost訓(xùn)練原理
XGBoost的目標(biāo)函數(shù)J定義如下:
(1)
對(duì)于加法訓(xùn)練模型來講,每一輪的訓(xùn)練數(shù)據(jù)來自于上一輪訓(xùn)練時(shí)產(chǎn)生的殘差,本輪的總預(yù)測(cè)值是上一輪的總值和本輪分類模型的預(yù)測(cè)值之和,即:
(2)
(3)
對(duì)XGBoost的目標(biāo)函數(shù)取泰勒展開的二階近似,則目標(biāo)函數(shù)變?yōu)?
(4)
XGBoost中使用葉子節(jié)點(diǎn)個(gè)數(shù)M以及每個(gè)葉子節(jié)點(diǎn)的得分μ組合成為正則化項(xiàng)Ω,用于控制樹的復(fù)雜度。這樣訓(xùn)練出來的模型既簡(jiǎn)潔有效,還可以防止出現(xiàn)過擬合。正則化項(xiàng)Ω定義為:
(5)
其中,γ和λ為常數(shù),其默認(rèn)值分別為0和1。當(dāng)出現(xiàn)過擬合的情況時(shí),適當(dāng)增大γ和λ可以使算法更加保守,防止過擬合的發(fā)生。由此,第t輪的最終目標(biāo)函數(shù)可以表示為:
(6)
(7)
由(6)式、(7)式可以得到目標(biāo)函數(shù)的最優(yōu)值:
(8)
在實(shí)際訓(xùn)練過程中,XGBoost獲取最優(yōu)切分點(diǎn)時(shí)會(huì)對(duì)樹中的葉子結(jié)點(diǎn)嘗試進(jìn)行分裂。新分裂一個(gè)結(jié)點(diǎn)后,需要檢測(cè)這次分裂是否會(huì)給損失函數(shù)帶來增益(Gain),增益的定義如下:
(9)
其中,
(10)
(11)
綜上所述,將樣本特征作為輸入,選取CART作為弱分類器,使用增益最大的標(biāo)準(zhǔn)選取最佳切分特征與最佳切分點(diǎn)后,通過計(jì)算預(yù)測(cè)的標(biāo)簽值與真實(shí)標(biāo)簽之間的損失來加性地進(jìn)行訓(xùn)練并集成到一起,即可得到最終的XGBoost模型。
在測(cè)井過程中,面對(duì)以發(fā)現(xiàn)和評(píng)價(jià)油氣水層為核心目標(biāo)的復(fù)雜儲(chǔ)層評(píng)價(jià)這一難題,建立一種新的基于學(xué)習(xí)并可自動(dòng)獲取知識(shí)的測(cè)井規(guī)則庫(kù)是非常有必要的[4]。
本文提出一種基于XGBoost的測(cè)井規(guī)則自動(dòng)獲取方法,其技術(shù)流程如圖2所示。首先根據(jù)已有的測(cè)井?dāng)?shù)據(jù)建立數(shù)據(jù)集,然后經(jīng)過特征選擇及數(shù)據(jù)處理等得到訓(xùn)練數(shù)據(jù)并以此訓(xùn)練XGBoost模型,從而得到自動(dòng)獲取的規(guī)則庫(kù)。
圖2 基于XGBoost的測(cè)井規(guī)則自動(dòng)獲取流程
以勝利油田鹽家永安地區(qū)砂礫巖油氣藏為研究區(qū),選擇其中已完成試油的17口井作為研究目標(biāo)。首先,以0.1m為步長(zhǎng)對(duì)已完成試油和測(cè)井解釋的井段的測(cè)井曲線進(jìn)行采樣,共獲得6489個(gè)樣本數(shù)據(jù)。經(jīng)統(tǒng)計(jì),數(shù)據(jù)集中樣本的試油結(jié)論表明共有水層、油層、干層、泥巖層、油水同層、含油水層6類(表1)。
表1 研究目標(biāo)中各類儲(chǔ)層數(shù)量及占比
對(duì)該研究區(qū)內(nèi)測(cè)井資料及地質(zhì)參數(shù)進(jìn)行分析,選擇了補(bǔ)償中子(CNL)、補(bǔ)償密度(DEN)、聲波時(shí)差(AC)、地層真電阻率(RT)、沖洗帶地層電阻率(RXO)、自然電位(SP)、井徑(CAL)、自然伽馬(GR)和全烴曲線(QT)這9個(gè)參數(shù)作為每個(gè)樣本的特征,將各樣本的試油結(jié)論作為真實(shí)標(biāo)簽。將所有樣本匯總到一起,構(gòu)建總的大樣本數(shù)據(jù)集。
首先利用現(xiàn)有測(cè)井解釋軟件讀取每口井的參數(shù)曲線,再將連續(xù)的數(shù)據(jù)按特定步長(zhǎng)采樣為離散的樣本并保存為文本文件,進(jìn)而轉(zhuǎn)化為方便程序讀取的CSV文件。在輸入數(shù)據(jù)時(shí),將各樣本的標(biāo)簽信息通過獨(dú)熱編碼進(jìn)行處理,轉(zhuǎn)化為多維向量的表示形式,“1”所在的位置代表其類別,避免了簡(jiǎn)單數(shù)值替換標(biāo)簽帶來的一系列影響(表2)。
表2 本文方法的One-Hot編碼方式
XGBoost作為樹形結(jié)構(gòu)模型,其尋找最優(yōu)點(diǎn)的過程通過尋找最優(yōu)分裂點(diǎn)完成,而數(shù)值縮放不影響分裂點(diǎn)位置,因此特征之間的數(shù)據(jù)量綱和數(shù)量級(jí)的不同并不會(huì)對(duì)其產(chǎn)生影響。因此,相比于線性模型,樹形結(jié)構(gòu)模型不需要對(duì)數(shù)據(jù)集進(jìn)行額外的特征預(yù)處理就能滿足分類任務(wù),避免了對(duì)數(shù)據(jù)集進(jìn)行歸一化或標(biāo)準(zhǔn)化處理而帶來的特征信息損失。
將總樣本數(shù)據(jù)集按7∶3劃分為訓(xùn)練集和測(cè)試集進(jìn)行數(shù)據(jù)處理,其中訓(xùn)練集包含4543個(gè)樣本,測(cè)試集包含1946個(gè)樣本。
2.3.1 實(shí)驗(yàn)環(huán)境
利用Python語(yǔ)言建立XGBoost模型。運(yùn)行環(huán)境:服務(wù)器內(nèi)有兩塊14核CPU,共187.39GB內(nèi)存,CPU型號(hào)為Intel(R)Xeon(R)Gold5120@2.20GHz。
2.3.2 實(shí)驗(yàn)設(shè)置及實(shí)驗(yàn)結(jié)果
XGBoost作為機(jī)器學(xué)習(xí)模型,在訓(xùn)練時(shí)需要進(jìn)行各種參數(shù)的調(diào)整,其中較為重要的超參數(shù)有:迭代次數(shù)N,即模型迭代的次數(shù);學(xué)習(xí)率lr,用以調(diào)整每棵決策樹的權(quán)重來提高模型的魯棒性;最大樹深度Dmax,最小樣本權(quán)重Wmin則是用以停止樹的循環(huán)生成,當(dāng)樹深度達(dá)到最大深度Dmax或樣本權(quán)重和小于閾值Wmin時(shí)則停止分裂,避免樹過深導(dǎo)致其學(xué)習(xí)到過于局部的樣本,防止過擬合。在參數(shù)尋優(yōu)過程中,本文采用K折交叉驗(yàn)證與網(wǎng)格搜索(grid search with cross validation)相結(jié)合的方式來選取最優(yōu)參數(shù)。
K折交叉驗(yàn)證是指將初始訓(xùn)練集分割成K個(gè)子數(shù)據(jù)集,一個(gè)單獨(dú)的子數(shù)據(jù)集被保留作為驗(yàn)證模型的數(shù)據(jù),其它K-1個(gè)子數(shù)據(jù)集用來訓(xùn)練。交叉驗(yàn)證重復(fù)K次,每個(gè)子樣本驗(yàn)證一次,平均K次的結(jié)果,最終得到評(píng)估結(jié)果。該方法的優(yōu)勢(shì)在于可以減少在單次隨機(jī)劃分?jǐn)?shù)據(jù)集時(shí),因劃分方式不同帶來的差別,降低其在調(diào)參過程中的影響??紤]到運(yùn)算時(shí)間及內(nèi)存占用,本文選取K=10進(jìn)行實(shí)驗(yàn)。
網(wǎng)格搜索是一種基于窮舉的搜索手段,即在所有候選的超參數(shù)選擇中,通過循環(huán)遍歷,嘗試每一種可能性,選擇得到最高準(zhǔn)確率的超參數(shù)作為最終的結(jié)果。
首先,對(duì)于迭代次數(shù)N,本文在1~200內(nèi)進(jìn)行搜索,并在N=159時(shí)取得最大值(圖3)。
圖3 模型在不同迭代次數(shù)下的準(zhǔn)確率
其次,在0.1~1.0內(nèi)對(duì)學(xué)習(xí)率的最優(yōu)參數(shù)進(jìn)行搜索,取得學(xué)習(xí)率的最優(yōu)值為0.281,其實(shí)驗(yàn)結(jié)果如圖4 所示。
圖4 模型在不同學(xué)習(xí)率下的準(zhǔn)確率
同理,使用相同方法對(duì)Dmax與Wmin進(jìn)行搜索,分別取得最優(yōu)值Dmax=5,Wmin=1。最終的實(shí)驗(yàn)結(jié)果如表3所示。
由表3可以看出,本文方法對(duì)研究區(qū)內(nèi)大部分油氣水層的預(yù)測(cè)結(jié)果較好,僅泥巖層的預(yù)測(cè)準(zhǔn)確率稍低。采取多種調(diào)優(yōu)方式后,其準(zhǔn)確率仍未得到明顯提高,可能是由于所選數(shù)據(jù)集中泥巖層的各樣本不能很好地突顯其特征所致。經(jīng)過多次數(shù)據(jù)集隨機(jī)劃分實(shí)驗(yàn),含油水層的準(zhǔn)確率多數(shù)仍能保持在100%,說明盡管含油水層的樣本數(shù)較少,但本文模型可以較完整地提取到含油水層樣本的特征。
表3 基于XGBoost的類專家規(guī)則預(yù)測(cè)結(jié)果
為了進(jìn)一步證明本文方法的有效性,使用GBDT算法和SVM算法自動(dòng)獲取專家規(guī)則,對(duì)比結(jié)果如表4 所示。
從表4可看出,采用XGBoost算法的預(yù)測(cè)準(zhǔn)確度高于GBDT算法和SVM算法的預(yù)測(cè)準(zhǔn)確度;雖然GBDT算法與XGBoost算法的預(yù)測(cè)準(zhǔn)確率接近,但由于GBDT算法不能很好地利用并行方法對(duì)數(shù)據(jù)進(jìn)行處理,導(dǎo)致其運(yùn)行時(shí)間約為XGBoost算法的4倍。所以,從時(shí)間成本及準(zhǔn)確率方面考慮,采用基于XGBoost算法構(gòu)建專家規(guī)則的方法可以取得更好的效果。
表4 不同算法的性能對(duì)比
2.3.3 規(guī)則庫(kù)自動(dòng)獲取方法在老井復(fù)查中的應(yīng)用
老井復(fù)查是針對(duì)解釋錯(cuò)誤的層位,在得到試油結(jié)論后,再次進(jìn)行測(cè)井解釋,以形成對(duì)某一區(qū)塊的共性研究。在研究區(qū)內(nèi)應(yīng)用規(guī)則庫(kù)自動(dòng)獲取方法后,形成了研究區(qū)塊內(nèi)的知識(shí)規(guī)則庫(kù),得到了區(qū)塊共性的解釋經(jīng)驗(yàn)知識(shí)。在老井復(fù)查中,利用本文提出的新規(guī)則庫(kù)對(duì)研究區(qū)內(nèi)的井再次進(jìn)行測(cè)井解釋,并與手工編寫的原規(guī)則庫(kù)進(jìn)行對(duì)比,兩種規(guī)則在部分井(Y22井和Y929井)的應(yīng)用結(jié)果如圖5、圖6和圖7所示。
圖5 Y22井某油層部分的解釋結(jié)果
圖6 Y22井某水層部分的解釋結(jié)果
圖7 Y929井某水層部分的解釋結(jié)果
由應(yīng)用結(jié)果可知,與原規(guī)則庫(kù)相比,本文方法較完整地提取了該區(qū)塊內(nèi)的知識(shí)規(guī)則,提升了測(cè)井解釋的準(zhǔn)確率。
2.3.4 討論與分析
本文方法利用XGBoost模型構(gòu)建了專家規(guī)則的自動(dòng)獲取方法,通過加法訓(xùn)練將多個(gè)CART分類器集成到一起,并在損失函數(shù)中附加正則項(xiàng),較好地完成了專家規(guī)則庫(kù)自動(dòng)獲取任務(wù)。分析后發(fā)現(xiàn),在實(shí)驗(yàn)與老井復(fù)查過程中,研究區(qū)內(nèi)的部分儲(chǔ)集層較厚,因而實(shí)驗(yàn)結(jié)果較好。但由于數(shù)據(jù)有限,目前未能專門針對(duì)很薄的復(fù)雜巖性儲(chǔ)集層進(jìn)行實(shí)驗(yàn)。但本文表明將XGBoost算法應(yīng)用于測(cè)井解釋具有較大的潛力,也為復(fù)雜儲(chǔ)層測(cè)井評(píng)價(jià)等應(yīng)用提供了新的思路。
1) 將機(jī)器學(xué)習(xí)算法與測(cè)井專家系統(tǒng)有效結(jié)合,代替原有的人工方法建立解釋規(guī)則庫(kù),使得關(guān)聯(lián)規(guī)則更容易獲取,非專家人員也可以進(jìn)行類專家規(guī)則的生成及測(cè)井解釋;
2) 采用XGBoost模型經(jīng)過網(wǎng)格搜索和K折交叉驗(yàn)證優(yōu)化后,其分類準(zhǔn)確率高于SVM算法和GBDT算法,表明采用該模型能夠準(zhǔn)確預(yù)測(cè)各類儲(chǔ)層;
3) 本文方法在勝利油田鹽家永安地區(qū)老井復(fù)查中的成功應(yīng)用表明,采用該方法形成了研究區(qū)塊內(nèi)的知識(shí)規(guī)則庫(kù),得到了本區(qū)塊共性的解釋經(jīng)驗(yàn)知識(shí)。