本發(fā)明屬于地球物理探測技術(shù)領(lǐng)域,涉及一種基于時間遞歸神經(jīng)網(wǎng)絡(luò)的微震信號到時自動拾取方法。
背景技術(shù):
隨著電子技術(shù)和計算機技術(shù)的不斷發(fā)展,微震事件自動實時檢測和定位已被成功應(yīng)用于各類工程應(yīng)用中,比如水力壓裂開采石油、頁巖氣,礦山動力災(zāi)害監(jiān)測,深部巖體開挖卸載擾動預(yù)警預(yù)測等。
巖石破裂事件產(chǎn)生的微震信號的到時自動拾取,是確保定位結(jié)果的準(zhǔn)確性及高效性的前提條件,拾取結(jié)果準(zhǔn)確與否直接影響到最終結(jié)果的精確度,其處理速度直接影響到整體工作的效率。
經(jīng)典的短長時窗能量比拾取法過多的依賴于人工的干預(yù)調(diào)節(jié),信噪比對其影響較大,算法的魯棒性不強。一般的神經(jīng)網(wǎng)絡(luò)需要增加網(wǎng)絡(luò)的隱層個數(shù)和神經(jīng)元節(jié)點個數(shù)才能學(xué)習(xí)到復(fù)雜的數(shù)據(jù)特征,但其網(wǎng)絡(luò)很難訓(xùn)練,且隨著網(wǎng)絡(luò)模型的復(fù)雜度增加,訓(xùn)練時出現(xiàn)“過擬合”現(xiàn)象也隨之增加。時間遞歸神經(jīng)網(wǎng)絡(luò)在不增加網(wǎng)絡(luò)隱層個數(shù)的情況下,通過建立隱層間神經(jīng)元節(jié)點之間的聯(lián)系,從而學(xué)習(xí)到微震信號到時前后的關(guān)系特征,完成到時拾取任務(wù),既降低了訓(xùn)練“過擬合”的風(fēng)險,又充分利用了數(shù)據(jù)間的特征。
技術(shù)實現(xiàn)要素:
本發(fā)明是為了解決微震信號到時拾取時,傳統(tǒng)的短長時窗能量比方法在拾取時過程中需要一定的人為干預(yù)從而導(dǎo)致拾取方法性能不夠穩(wěn)健,以及傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)在大量監(jiān)測數(shù)據(jù)中識別微震事件時網(wǎng)絡(luò)模型難以訓(xùn)練的問題。
本發(fā)明通過構(gòu)建一種基于時間遞歸神經(jīng)網(wǎng)絡(luò)的到時自動拾取模型,對微震事件進行自動檢測和到時拾取。
基于時間遞歸神經(jīng)網(wǎng)絡(luò)方法的微震信號到時拾取基本實現(xiàn)步驟如下:
步驟一:對微震數(shù)據(jù)按照固定的維數(shù)進行采樣;
步驟二:對用于網(wǎng)絡(luò)模型訓(xùn)練的數(shù)據(jù)進行人工到時拾取,作為對應(yīng)樣本數(shù)據(jù)的標(biāo)簽信息;
步驟三:把數(shù)據(jù)和標(biāo)簽放到同一數(shù)據(jù)集中,并把數(shù)據(jù)集劃分為訓(xùn)練數(shù)據(jù)集、驗證數(shù)據(jù)集和測試數(shù)據(jù)集;
步驟四:搭建具有輸入層、隱層和邏輯回歸層的三層時間遞歸神經(jīng)網(wǎng)絡(luò)模型;
步驟五:獲取時間總數(shù)T,并設(shè)置時間步長t;
步驟六:數(shù)據(jù)按照時間步長t依次輸入時間遞歸神經(jīng)網(wǎng)絡(luò)模型,進行模型訓(xùn)練;
步驟七:求取隱層每一個節(jié)點在所有時刻輸出的最大值,并通過邏輯回歸層得到網(wǎng)絡(luò)輸出;
步驟八:計算網(wǎng)絡(luò)輸出與輸入樣本對應(yīng)的標(biāo)簽之間的誤差,通過隨時間變化的誤差反向傳播來完成網(wǎng)絡(luò)參數(shù)的更新;
步驟九:設(shè)置一個驗證參數(shù)N,當(dāng)?shù)?xùn)練N次后,進行一次交叉驗證和測試,當(dāng)驗證誤差趨于某值長期不變,且測試誤差高于驗證誤差,即到達設(shè)定的準(zhǔn)確率時停止網(wǎng)絡(luò)訓(xùn)練,即基于時間遞歸神經(jīng)網(wǎng)絡(luò)的微震信號到時自動拾取模型構(gòu)建完成,否則返回步驟六,繼續(xù)利用輸入數(shù)據(jù)進行模型訓(xùn)練;
步驟十:把未經(jīng)過到時拾取的數(shù)據(jù)集輸入到訓(xùn)練好的網(wǎng)絡(luò)模型中,網(wǎng)絡(luò)輸出為對應(yīng)于輸入數(shù)據(jù)維度的一個序列;
步驟十一:輸出序列中第一個不為0的值即為波到時點。
進一步地,所述步驟一中,原始數(shù)據(jù)按照統(tǒng)一長度,切割為相同維度的數(shù)據(jù)。
進一步地,所述步驟二中,把每一個樣本數(shù)據(jù)中的微震事件視為有效信號,其他部分視為噪聲,樣本對應(yīng)的標(biāo)簽是一個和樣本數(shù)據(jù)長度一致的二值向量,向量中有效信號部分對應(yīng)點位設(shè)置為1,其他部分設(shè)置為0。
進一步地,所述步驟三中,測試數(shù)據(jù)集占總數(shù)據(jù)集的75%,驗證數(shù)據(jù)集和測試數(shù)據(jù)集各占15%。
進一步地,所述步驟四中,網(wǎng)絡(luò)分為三部分,分別是輸入層、隱層和邏輯回歸層;層與層之間的神經(jīng)元全連接,隱層的每一個神經(jīng)元分別與它臨近的神經(jīng)元連接;輸入層的神經(jīng)元個數(shù)與每一個樣本數(shù)據(jù)的長度一致,隱層的神經(jīng)元個數(shù)小于或者等于輸入層的神經(jīng)元個數(shù),邏輯回歸層神經(jīng)元個數(shù)與隱層神經(jīng)元個數(shù)一致,邏輯回歸層構(gòu)成網(wǎng)絡(luò)的輸出層。
進一步地,所述步驟五中,時間總數(shù)T的大小等于每一個輸入樣本數(shù)據(jù)的長度n,數(shù)據(jù)樣本X=(x1,x2,...,xn),T=n;時間步長t∈T,取t=1。
進一步地,所述步驟六中,把網(wǎng)絡(luò)的隱層視為一個長短期記憶模型,記憶模型包含m個神經(jīng)元,一個神經(jīng)元中包含一個輸入門、一個遺忘門、一個輸出門和一個元胞。每個神經(jīng)元有8組輸入權(quán)重和4組偏置項,4組權(quán)重用于t時刻輸入數(shù)據(jù)xt與該神經(jīng)元的連接權(quán)重,分別為:Wi∈Rm、Wf∈Rm、Wc∈Rm、Wo∈Rm;另外4組權(quán)重用于t時刻,上一個時間t-1的輸出ht-1與該神經(jīng)元的連接權(quán)重,分別為:Ui∈Rm×m、Uf∈Rm×m、Uc∈Rm×m、Uo∈Rm×m;4組偏置項分別為:bi∈Rm、bf∈Rm、bc∈Rm、bo∈Rm。
其中,W∈Rm表示1×m維歐式空間,U∈Rm×m表示m×m維歐式空間,b∈Rm表示1×m維歐式空間;下標(biāo)i、f、c、o分別表示該值用于輸入門、遺忘門、元胞、輸出門。
在t=1時刻,所有的權(quán)值W都初始為一個1×m維的服從均值為范圍在(-a,a)之間的向量;所有的權(quán)值U都初始為一個m×m維的正交矩陣;所有的偏置項b都初始為一個1×m維的全為0的向量。
長短期記憶模型在每個時間步長t接受一個輸入層的值xt和一個t-1時刻長短期記憶模型的輸出ht-1。其中xt為樣本第t個元素,ht-1在t=1時為0。長短期記憶模型參數(shù)的連接和計算方法如下:
首先,通過遺忘門決定從元胞狀態(tài)中丟棄什么信息,該門輸入xt和ht-1,輸出一個在0和1之間的數(shù)值給每個元胞狀態(tài),1表示“完全保留”,0表示“完全舍棄”:
ft=σ(Wfxt+Ufht-1+bf)
其中,ft為t時刻遺忘門的激活值。
其次,通過輸入門確定什么樣的新信息被存放到元胞狀態(tài)中,這里包括兩部分,第一為σ層決定什么值是將要更新的,第二是一個tanh層創(chuàng)建一個新的候選元胞值
it=σ(Wixt+Uiht-1+bi)
其中it為t時刻輸入門的激活值。
然后,把舊狀態(tài)Ct-1與ft相乘,丟棄掉確定更新的信息,接著加上it乘以來決定更新每個狀態(tài)的變化程度,從而把舊狀態(tài)Ct-1更新為新狀態(tài)Ct:
最后,需要確定輸出什么值,這個值基于元胞狀態(tài),這里包括兩部分,第一為運行一個σ層來確定元胞狀態(tài)的哪個部分將作為輸出,第二是把元胞狀態(tài)通過tanh層進行處理,并將它與σ層的輸出相乘,這樣輸出的僅僅為確定要輸出的那部分:
ot=σ(Woxt+Uoht-1+bo)
ht=ot×tanh(Ct)
其中,ot表示t時刻輸出門的激活值,ht為t時刻對應(yīng)于輸入xt在長短期記憶模型中的一個神經(jīng)元的輸出。
進一步地,所述步驟七中,在不同的時間t中,每次的輸入和輸出都是不一樣,但用到的參數(shù)W、U、b都是一樣,參數(shù)共享;t時刻xt在長短記憶模型中的輸出為ht,則所有時刻的輸出為:H=(h1,h2,...,hn),求取該向量的最大值作為隱層的輸出,通過邏輯回歸函數(shù)得出網(wǎng)絡(luò)的預(yù)測輸出hθ(xi),邏輯回歸方程為:
其中θ為隱層與輸出層之間連接權(quán)值和偏置項兩個參數(shù),hθ(xi)表示一個數(shù)據(jù)樣本中第i個特征對應(yīng)的預(yù)測輸出。
進一步地,所述步驟八中,通過網(wǎng)絡(luò)預(yù)測輸出hθ(xi)與期望輸出yi(其中,y∈{0,1})之間的誤差建立損失函數(shù):
其中n為一個樣本中特征維數(shù)的大小。
相應(yīng)的建立目標(biāo)函數(shù):
求取目標(biāo)函數(shù)對參數(shù)的梯度:
通過梯度下降的方法更新參數(shù)θ:
.
其中為參數(shù)θ更新后的狀態(tài),α為學(xué)習(xí)率。
誤差反向傳播,通過更新后的參數(shù)通過它的轉(zhuǎn)置和轉(zhuǎn)換函數(shù)得到隱層的重構(gòu)值:
其中為樣本第i個特征xi在隱層輸出的重構(gòu)值。
依次從t=n時刻到t=1時刻計算重構(gòu)值與每一個時刻長短期記憶模型的輸出之間的誤差,通過上述的方法計算得到對應(yīng)的梯度,通過梯度下降的方法更新參數(shù)W、U、b。
進一步地,所述步驟十一中,網(wǎng)絡(luò)的輸出是一個二值n維的向量,只有0和1,n是每一個樣本的長度。
進一步地,所述步驟十二中,網(wǎng)絡(luò)的輸出是一個二值向量,向量中第一個值為1的點即為微震信號的到時點
附圖說明
圖1為應(yīng)用時間遞歸神經(jīng)網(wǎng)絡(luò)拾取微震信號到時的流程框圖;
圖2為時間遞歸神經(jīng)網(wǎng)絡(luò)模型圖;
圖3為長短期記憶模型圖。
具體實施方式
以下結(jié)合具體的方法實施過程對本發(fā)明的原理進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
一種基于時間遞歸神經(jīng)網(wǎng)絡(luò)的微震信號到時拾取方法,實施例可以為:
步驟一:對原始數(shù)據(jù)按照固定的維數(shù)進行采樣,選取維度為1024。
步驟二:對部分?jǐn)?shù)據(jù)進行人工到時拾取,作為對應(yīng)樣本數(shù)據(jù)的標(biāo)簽信息,具體做法為:把每一個樣本數(shù)據(jù)中的微震事件視為有效信號,其他部分視為噪聲,樣本對應(yīng)的標(biāo)簽是一個和樣本數(shù)據(jù)長度一致的二值向量,向量中有效信號部分對應(yīng)點位設(shè)置為1,其他部分設(shè)置為0。
步驟三:把數(shù)據(jù)和標(biāo)簽放到同一數(shù)據(jù)集中,并把數(shù)據(jù)集劃分為訓(xùn)練數(shù)據(jù)集、驗證數(shù)據(jù)集和測試數(shù)據(jù)集:樣本總數(shù)為10萬,其中訓(xùn)練數(shù)據(jù)集占總數(shù)據(jù)集的70%,驗證數(shù)據(jù)集和測試數(shù)據(jù)集分別占15%。
步驟四:搭建時間遞歸神經(jīng)網(wǎng)絡(luò),具體做法為:網(wǎng)絡(luò)分為三部分,分別是輸入層、隱層和邏輯回歸層;層與層之間的神經(jīng)元全連接,隱層的每一個神經(jīng)元分別與它臨近的神經(jīng)元連接;輸入層的神經(jīng)元個數(shù)與每一個樣本數(shù)據(jù)的長度一致,隱層的神經(jīng)元個數(shù)小于或者等于輸入層的神經(jīng)元個數(shù),邏輯回歸層神經(jīng)元個數(shù)與隱層神經(jīng)元個數(shù)一致,邏輯回歸層構(gòu)成網(wǎng)絡(luò)的輸出層。
步驟五:獲取時間總數(shù)T,網(wǎng)絡(luò)按照時間步長t依次輸入數(shù)據(jù):時間總數(shù)T的大小等于每一個輸入樣本數(shù)據(jù)的長度1024,數(shù)據(jù)樣本X=(x1,x2,...,x1024),T=1024;時間步長t∈T,取t=1。
步驟六:把網(wǎng)絡(luò)的隱層視為一個長短期記憶模型,數(shù)據(jù)按照時間步長依次輸入,具體做法為:把網(wǎng)絡(luò)隱層視為一個一個長短期記憶模型,記憶模型包含m=1024個神經(jīng)元,一個神經(jīng)元中包含一個輸入門、一個遺忘門、一個輸出門和一個元胞。每個神經(jīng)元有8組輸入權(quán)重和4組偏置項,4組權(quán)重用于t時刻輸入數(shù)據(jù)xt與該神經(jīng)元的連接權(quán)重,分別為:Wi∈Rm、Wf∈Rm、Wc∈Rm、Wo∈Rm;另外4組權(quán)重用于t時刻,上一個時間t-1的輸出ht-1與該神經(jīng)元的連接權(quán)重,分別為:Ui∈Rm×m、Uf∈Rm×m、Uc∈Rm×m、Uo∈Rm×m;4組偏置項分別為:bi∈Rm、bf∈Rm、bc∈Rm、bo∈Rm。
其中,W∈Rm表示1×m維歐式空間,U∈Rm×m表示m×m維歐式空間,b∈Rm表示1×m維歐式空間;下標(biāo)i、f、c、o分別表示用于輸入門、遺忘門、元胞、輸出門。
在t=1時刻,所有的權(quán)值W都初始為一個1×m維的服從均值為范圍在(-a,a)之間的向量;所有的權(quán)值U都初始為一個m×m維的正交矩陣;所有的偏置項b都初始為一個1×m維的全為0的向量。
長短期記憶模型在每個時間步長t接受一個輸入層的值xt和一個t-1時刻長短期記憶模型的輸出ht-1。其中xt為樣本第t個元素,ht-1在t=1時為0。長短期記憶模型參數(shù)的連接和計算方法如下:
首先,通過遺忘門決定從元胞狀態(tài)中丟棄什么信息,該門輸入xt和ht-1,輸出一個在0和1之間的數(shù)值給每個元胞狀態(tài),1表示“完全保留”,0表示“完全舍棄”:
ft=σ(Wfxt+Ufht-1+bf),其中,ft為t時刻遺忘門的激活值;
其次,通過輸入門確定什么樣的新信息被存放到元胞狀態(tài)中,這里包括兩部分,第一為σ層決定什么值是將要更新的,第二是一個tanh層創(chuàng)建一個新的候選元胞值
it=σ(Wixt+Uiht-1+bi)
其中it為t時刻輸入門的激活值;
然后,把舊狀態(tài)Ct-1與ft相乘,丟棄掉確定更新的信息,接著加上it乘以來決定更新每個狀態(tài)的變化程度,從而把舊狀態(tài)Ct-1更新為新狀態(tài)Ct:
最后,需要確定輸出什么值,這個值基于元胞狀態(tài),這里包括兩部分,第一為運行一個σ層來確定元胞狀態(tài)的哪個部分將作為輸出,第二是把元胞狀態(tài)通過tanh層進行處理,并將它與σ層的輸出相乘,這樣輸出的僅僅為確定要輸出的那部分:
ot=σ(Woxt+Uoht-1+bo)
ht=ot×tanh(Ct),其中ht為t時刻對應(yīng)于輸入xt在長短期記憶模型中的一個神經(jīng)元的輸出。
步驟七:求取長短期記憶模型在所有時間步長的輸出中的最大值,并通過邏輯回歸層得到網(wǎng)絡(luò)輸出,具體做法為:在不同的時間步長t中,每次的輸入和輸出都是不一樣,但用到的參數(shù)W、U、b都是一樣,參數(shù)共享;t時刻xt在長短記憶模型中的輸出為ht,則所有時刻的輸出為:H=(h1,h2,...,hn),求取該向量的均值作為隱層的輸出,通過邏輯回歸函數(shù)得出網(wǎng)絡(luò)的預(yù)測輸出hθ(xi),邏輯回歸方程為:
其中θ為隱層與輸出層之間連接權(quán)值和偏置項兩個參數(shù),hθ(xi)表示一個數(shù)據(jù)樣本中第i個特征對應(yīng)的預(yù)測輸出。
步驟八:計算網(wǎng)絡(luò)的誤差,通過誤差反向傳播來完成網(wǎng)絡(luò)參數(shù)的更新,具體做法為:通過網(wǎng)絡(luò)預(yù)測輸出hθ(xi)與期望輸出yi(其中,y∈{0,1})之間的誤差建立損失函數(shù):
其中n為一個樣本中特征維數(shù)的大小。
相應(yīng)的建立目標(biāo)函數(shù):
求取目標(biāo)函數(shù)對參數(shù)的梯度:
通過梯度下降的方法更新參數(shù)θ:
其中為參數(shù)θ更新后的狀態(tài),α為學(xué)習(xí)率。
誤差反向傳播,通過更新后的參數(shù)通過它的轉(zhuǎn)置和轉(zhuǎn)換函數(shù)得到隱層的重構(gòu)值:其中為樣本第i個特征xi在隱層輸出的重構(gòu)值;計算重構(gòu)值與每一個時刻長短期記憶模型的輸出之間的誤差,通過上述的方法計算得到對應(yīng)的梯度,通過梯度下降的方法更新參數(shù)W、U、b。
步驟九:設(shè)置一個驗證參數(shù)N,當(dāng)?shù)?xùn)練N次后,進行一次交叉驗證和測試,具體做法為:總迭代次數(shù)為100000,設(shè)置N=50。
步驟十:當(dāng)驗證誤差趨于某值長期不變,且測試誤差高于驗證誤差時,停止網(wǎng)絡(luò)訓(xùn)練。
步驟十一:把未經(jīng)過到時拾取的數(shù)據(jù)集輸入到訓(xùn)練好的網(wǎng)絡(luò)模型中,網(wǎng)絡(luò)輸出為對應(yīng)于輸入數(shù)據(jù)維度的一個序列,具體做法為:網(wǎng)絡(luò)的輸出是一個二值n維的向量,只有0和1,n是每一個樣本的長度n=1024。
步驟十二:輸出序列中第一個不為0的值即為波到時點,具體做法為:網(wǎng)絡(luò)的輸出是一個二值向量,向量中第一個值為1的點即為微震信號的到時點。
下面分別采用短長時窗能量比拾取法(簡稱:比值法)和本發(fā)明方法對不同信噪比下聲發(fā)射數(shù)據(jù)進行波達拾取比較,并分別用具有相同隱層個數(shù)和相同隱層神經(jīng)元個數(shù)的常規(guī)誤差反向傳播神經(jīng)網(wǎng)絡(luò)模型(簡稱:常規(guī)網(wǎng)絡(luò))和時間遞歸神經(jīng)網(wǎng)絡(luò)模型對不同的數(shù)據(jù)維度進行訓(xùn)練和測試:
一、拾取精度比較
對同樣的數(shù)據(jù)樣本,分別用比值法和時間遞歸神經(jīng)網(wǎng)絡(luò)法對數(shù)據(jù)進行處理:在比值法中設(shè)置一個合適的波達閾值,當(dāng)大于這個值時認(rèn)為該點為波達點;在時間遞歸神經(jīng)網(wǎng)絡(luò)法中,把數(shù)據(jù)樣本直接輸入到已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)模型中,網(wǎng)絡(luò)模型輸出一個僅含0和1的二值向量,向量中第一個不為0的點即為波到時點。對數(shù)據(jù)樣本添加不同強度的高斯噪聲,再用兩種方法進行比較,結(jié)果如下表(表1):
表1不同拾取方法對比
二、模型訓(xùn)練比較
構(gòu)建兩個具有相同的隱層個數(shù)且隱層的神經(jīng)元個數(shù)相同的神經(jīng)網(wǎng)絡(luò)模型,前者用標(biāo)準(zhǔn)的誤差反向傳播算法進行迭代訓(xùn)練,后者用本發(fā)明方法進行訓(xùn)練。對于同樣的數(shù)據(jù)樣本,改變樣本的特征維數(shù)n(一個樣本中有多少個數(shù)據(jù)),用兩種網(wǎng)絡(luò)模型進行訓(xùn)練。常規(guī)網(wǎng)絡(luò)模型的輸入為n個特征維數(shù),其輸出為一個單值并作為波到時點,本發(fā)明方法的網(wǎng)絡(luò)模型輸入為n個特征維數(shù),輸出一個長度為n、只含0和1的二值向量,取向量第一個不為0的點位作為波到時點,它們對微震信號到時拾取精度對比結(jié)果如下(表2):
表2不同神經(jīng)網(wǎng)絡(luò)模型對不同數(shù)據(jù)維度訓(xùn)練比較
總結(jié)分析:
如表1所示,對于信噪比較高的數(shù)據(jù),傳統(tǒng)的拾取方法更容易實現(xiàn),但在信噪比低情況下,時間遞歸神經(jīng)網(wǎng)絡(luò)具有更高的識別精度,性能更加穩(wěn)??;
如表2所示,對于相同的輸入特征維數(shù),常規(guī)神經(jīng)網(wǎng)絡(luò)在小維數(shù)時表現(xiàn)良好,但隨著數(shù)據(jù)的增加和輸出類別的增加,網(wǎng)絡(luò)模型難以訓(xùn)練,結(jié)果導(dǎo)致測試誤差非常高,而時間遞歸神經(jīng)網(wǎng)絡(luò)在大特征維數(shù)上表現(xiàn)良好,測試誤差低。
此外,時間遞歸神經(jīng)網(wǎng)絡(luò)可以對維度較大的數(shù)據(jù)進行訓(xùn)練,能對應(yīng)輸出相同維度的數(shù)據(jù)。
綜上,基于時間遞歸神經(jīng)網(wǎng)絡(luò)的微震信號到時拾取方法是一種有效改善低信噪比下微震信號到時拾取精度的方法,且有效地解決了神經(jīng)網(wǎng)絡(luò)對大特征維數(shù)難以訓(xùn)練的問題。
以上所述僅為實現(xiàn)本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。