宋 輝 ,陳 偉 ,3,李謀杰 ,3,王浩懿
(1.油氣資源與勘探技術教育部重點實驗室長江大學,湖北武漢430100;2.長江大學地球物理與石油資源學院,
湖北武漢430100;3.非常規(guī)油氣湖北省協同創(chuàng)新中心長江大學,湖北武漢430100;4.太原理工大學材料科學與工程學院,山西太原030024)
儲層參數通常由測井資料確定,傳統的測井資料解釋基于儲層均質性假設建立測井解釋方程,難以擺脫線性方程的束縛。隨著非常規(guī)油氣成為目前勘探開發(fā)的主體,儲層預測的目標介質發(fā)生了很大變化,具有明顯的非均質、各向異性特征[1],常規(guī)測井儲層預測技術難以滿足勘探領域的要求。如今發(fā)展的機器學習技術可以很好地解決測井解釋中的非線性映射問題[2]。
用于儲層預測的機器學習算法主要有支持向量機[3-8]、隨機森林[9]、極端梯度提升[10]和人工神經網絡[11-16]等。深度學習是機器學習的一個分支,其概念源于對人工神經網絡的研究。相對于傳統的淺層學習,深度學習通過構建具有很多隱層的機器模型結構,實現復雜函數逼近和逐層特征變換,從而提升預測或分類的準確性。目前深度學習已廣泛應用于計算機視覺、自然語言處理、語音識別等領域。
深度學習包括很多流行的模型,如卷積神經網絡(CNN)和循環(huán)神經網絡(RNN)。段友祥等借鑒CNN在圖像處理上的應用,在卷積模型中將測井參數調整為二維數據,更好地提取了儲層特征[17]。林年添等將CNN應用于地震儲層預測,取得較好的預測結果[18-19]。無論是CNN,還是全連接神經網絡(DNN),其前提假設均為:前一個輸入和后一個輸入是完全沒有關系的。但是,某些任務需要能夠更好地處理序列的信息,即有些場景輸入的數據與后面輸入的數據是有關系的,或者說后面的數據跟前面的數據是有關聯的。而長短期記憶網絡(LSTM)與門控循環(huán)單元網絡(GRU)能夠考慮歷史輸入對當前輸入的影響,因此非常適合處理序列數據。張東曉等將LSTM應用于測井曲線生成,該方法準確性高且成本低[20]。安鵬等將其應用于孔隙度與泥質含量預測,取得了比DNN更優(yōu)的結果[21]。
以上研究結果表明,基于深度學習的儲層預測比傳統方法有更好的預測結果。儲層預測實質上屬于序列預測問題,因此在測井數據提取特征中,既要考慮不同特征參數之間空間上的聯系,還要考慮測井參數隨深度的變化。為此,提出將CNN與GRU相結合,選取對孔隙度較為敏感的聲波、密度、補償中子、自然伽馬4種測井參數作為模型輸入,從而進行孔隙度預測。同時為證明該模型對于孔隙度預測的有效性,利用CNN-GRU模型對某井區(qū)A井未知深度的孔隙度進行預測,并與CNN和GRU模型預測的結果進行比較,證實CNN-GRU模型的有效性。
CNN與RNN是深度學習的2種特性不同的模型。CNN具有參數共享、稀疏連接的特性,因此擅長提取數據的空間特征。RNN具有記憶的特性,能以很高的效率處理序列數據任務。在某些情況下,一個任務的完成需要多種模型共同發(fā)揮作用,CNN與RNN有時也結合使用[22]。但RNN存在著梯度消失的問題,難以記憶長距離的信息。門控算法是RNN應對梯度消失的重要方法,而GRU是門控算法的代表。因此,本次基于CNN與GRU進行孔隙度預測。
CNN是一種特殊的網絡結構,在計算機視覺領域廣泛應用。CNN包含卷積層與池化層2種特殊的提取結構。卷積層能夠提取前一層的特征并得到特征圖,由于每個特征圖的神經元能夠共享權重參數,減少了網絡各層的連接,同時也降低了過擬合的風險;池化層也稱為下采樣,可以看作一種特殊的卷積過程,主要用于特征降維、壓縮數據以及減少參數的數量。
卷積是CNN中非常重要的操作,不同維度的卷積可以解決不同的問題。用一維卷積處理測井資料,提取的是測井參數在鄰近時間步長上的變化;用二維卷積處理測井資料,可以用于提取不同測井參數之間的關系。研究使用二維卷積提取不同測井參數之間的關系,其處理步驟包括:①借用圖像識別的處理,將測井資料表征為時間步長×特征參數的矩陣。②用二維卷積提取特征。選用的特征參數包括聲波、密度、補償中子和自然伽馬,其原理如圖1所示,卷積核長度為1×4,點乘表1中每一行的值,從上到下依次進行,如果輸入的時間步長為5,則5×4個數據經過這一層卷積后被壓縮為5個數據,如果需要保持原來尺寸,則需要通過填充0操作。
圖1 二維卷積提取測井數據不同特征參數示意Fig.1 Schematic of different characteristic parameters extraction of logging data by twodimensional convolution
RNN是當前深度學習熱潮中最重要的技術之一。一個典型的RNN結構包括輸入層、隱藏層和輸出層。由圖2可知,RNN的特殊之處在于隱藏層為循環(huán)體結構,也就是說RNN每一時刻都在執(zhí)行同樣的操作,只不過是輸入數據不同而已。該結構使得RNN當前時刻的計算會結合歷史的輸入信息,有助于處理序列相關的任務。但RNN只能記憶短期的歷史輸入信息,無法有效解決長期記憶的問題。
圖2 RNN模型Fig.2 Schematic of RNN model
為克服長期記憶問題,提出LSTM[23]。LSTM的核心思想在于細胞狀態(tài)和各種門結構。細胞狀態(tài)攜帶網絡不同時刻的記憶信息,而輸入門、遺忘門和輸出門能夠控制細胞狀態(tài)遺忘或記憶某些信息。GRU是LSTM的一種非常流行的變體,在很多任務中能夠達到與LSTM相當的表現,同時具有更簡潔的模型結構,減少模型訓練的參數,增強模型防止過擬合的能力,并且提高模型的收斂速度。GRU對LSTM做了2個大的改動:①將單元狀態(tài)與輸出合并為隱藏狀態(tài),依靠隱藏狀態(tài)來傳輸信息。②將輸入門、遺忘門和輸出門更改為更新門和重置門。
GRU模型隱藏層結構包含更新門激活向量(zt)、重置門激活向量(rt)、候選狀態(tài)向量(h?t)、隱藏狀態(tài)向量(ht)及上一時刻的隱藏狀態(tài)向量(ht-1)(圖3)。
圖3 GRU模型隱藏層結構Fig.3 Hidden layer structure of GRU model
更新門同時決定著丟棄舊信息的內容和添加新信息的內容,其表達式為:
重置門決定著忘記歷史信息的程度,其表達式為:
候選狀態(tài)主要是包含當前時刻輸入的信息,相當于記憶了當前時刻的狀態(tài),其表達式為:
隱藏狀態(tài)決定當前時刻需要輸出的信息,其表達式為:
CNN與GRU模型是深度學習非常流行的算法,具有不同的特性。CNN模型具有局部感知的特性,而GRU模型具有長期記憶的功能,更適合解決時序問題。為此,將CNN與GRU相結合,設計CNNGRU模型進行孔隙度預測,該模型具有表達數據時空特征的能力,模型預測框架如圖4所示。在數據輸送到網絡模型之前,首先需要對數據進行預處理,即劃分數據集與數據歸一化,然后將預處理后的數據輸送到網絡模型中進行訓練及測試。另外,CNN-GRU模型隱藏層由單層CNN與GRU構成。在CNN層設置8個1×4的卷積核,在GRU層設置4個神經單元。同時,考慮到如果時間步長太短,模型可以利用的信息太少會影響預測精度,而時間步長太長,則會增加模型計算的負擔,因此,在本次實驗中,將時間步長設置為6。選擇TensorFlow框架來實現模型,TensorFlow具備高質量的元框架,如Keras,Keras作為TensorFlow的高級應用程序編程接口,封裝了很多TensorFlow的代碼,使得代碼模塊化,非常簡便,但缺少靈活性。因此,本次模型建模部分主要由Keras完成,其余部分由TensorFlow完成,充分利用兩者的優(yōu)勢。
圖4 CNN-GRU模型預測框架Fig.4 Prediction framework of CNN-GRU model
為避免模型出現過擬合現象,提高模型的泛化能力,在損失函數中加入L2正則化項。最終將模型損失函數定義為:
模型使用RMSProp優(yōu)化器來更新網絡參數,以最小化損失函數,其表達式更新為:
學習率是深度學習中一個非常重要的超參數。學習率太大,網絡無法收斂到全局最小值,而是在全局最小值附近“徘徊”;學習率太小,網絡收斂需要極長的時間。因此,調整好學習率是訓練出好模型的關鍵要素之一。設置變學習率訓練方法為:
(8)式中,r1與r2將訓練階段分為訓練前期、訓練中期和訓練后期。(8)式表明訓練前期使用較大的學習率以加速網絡收斂,然后以較小的學習率過渡到訓練后期,最后設置更小的學習率,以保證訓練的穩(wěn)定性。
為證明所設計模型的有效性,利用某井區(qū)的A井數據進行驗證。在A井中選擇井深為6 650~6 813 m的1 080組測井數據作為訓練集,井深為6 813~6 868 m的360組測井數據作為測試集。訓練集是為了訓練網絡參數,而測試集則用來測驗模型的性能。為加速訓練及提高模型預測的精度,對數據進行歸一化處理,歸一化公式為:
經過多次實驗,將CNN-GRU模型中r1,r2分別設置為50,200;將CNN模型中r1,r2分別設置為100,400;將GRU模型中r1,r2分別設置為100,500。為檢驗3種模型的預測效果,將訓練好的模型分別在測試集上進行測試。
圖5 3種深度學習模型孔隙度預測結果Fig.5 Porosity prediction results based on three different deep learning models
從圖5可以看出,3種深度學習模型均實現了很好的預測結果,證明深度學習能有效地提取測井數據之間的非線性化特征,為儲層預測提供了一種有效的新技術。為評價3種模型性能,采用均方差和相關系數(R)作為評價標準(表1)。從表1可知,CNN-GRU模型對均方差和相關系數的預測結果比單一的GRU模型和CNN模型更優(yōu),這說明充分利用數據的時空特征可以取得更好的預測效果,證明CNN-GRU模型的有效性。
從CNN-GRU模型在測試集上的交會結果(圖6)可以看出,CNN-GRU模型預測的孔隙度與實際孔隙度具有較高的相關性,其相關系數達0.911 8。
為證明所設置變學習率訓練方法的有效性,將設置的學習率與固定學習率0.01,0.001和0.000 1分別迭代1 000次。由圖7可知,當學習率為0.01時,訓練前期網絡收斂快,訓練后期網絡難以收斂;當學習率為0.000 1時,網絡收斂緩慢。因此,以固定學習率訓練網絡模型存在著收斂震蕩或收斂很慢的問題。這證明所提出的學習率設置方式,既可在訓練前期加速網絡收斂,又可在訓練后期使網絡平穩(wěn)收斂到一個較小的值。由不同學習率對模型預測結果的影響(圖8)可知,所提出的變學習率訓練方法能夠得到更好的預測精度。
表1 3種深度學習模型預測結果評價Table1 Evaluation of prediction results based on three different deep learning models
圖7 不同學習率對模型收斂的影響Fig.7 Effect of different learning rates on model convergence
圖8 不同學習率對模型預測結果的影響Fig.8 Effect of different learning rates on model prediction results
隨著勘探領域的變化,儲層介質由均質地層轉向非均質地層,傳統的儲層預測方法難以估計出非均質地層的孔隙度。深度學習是機器學習的一個分支,已被廣泛應用于各個領域。CNN與GRU是2種特性不同的深度學習模型,CNN模型適合提取不同測井參數之間的非線性關系,GRU模型適合提取測井參數在時間維度上的變化,2種模型均取得了不錯的儲層參數預測結果。本次結合2種模型的優(yōu)勢,設計了CNN-GRU模型。該模型能夠充分提取測井數據的時空特征,預測精度優(yōu)于單一的模型。調整好學習率是訓練出好模型的關鍵要素之一,所提出的變學習率訓練方法,既可以加速網絡收斂,又可以提高模型的預測精度。
符號解釋
n——時間步長;xt——t時刻的輸入;yt——t時刻的輸出;ht——t時刻的隱藏狀態(tài)向量;rt——重置門激活向量;σ——Sigmoid函數;zt——更新門激活向量;h?t——t時刻的候選狀態(tài)向量;tanh——tanh函數;Wz——更新門權重矩陣;bz——更新門偏置值;Wr——重置門權重矩陣;br——重置門偏置值;Wh?——候選狀態(tài)的權重矩陣;bh?——候選狀態(tài)的偏置值;xn——第n個輸入值;y∧n——第n個輸出值;L(θ)——模型損失函數;θ——模型中的權重矩陣與偏置值;N——樣本數量;i——樣本序號,i=1,2,3,…θ(xi)——輸入值為xi時的預測值;xi——輸入值;yi——實際值;λ——正則化系數,取值為10-5;s——累積平方梯度;β——動量系數;g——梯度;η——學習率;ε——用于維持數值穩(wěn)定的常數,取值為10-8;epoch——迭代次數;r1——訓練前期與訓練中期的界限值;r2——訓練中期與訓練后期的界限值;Y——測井數據歸一化后的值;X——測井數據。