基于BPNN 算法的儲層預測
時間:2016-06-13 14:06
來源:
作者:劉海軍
BPNN 算法是一種基于經驗風險最小化的模式識別經典算法。在使用BPNN 算法的過程中,人們主要關心的是該算法對訓練樣本集的預測準確率,但是卻忽略了其推廣能力較差的缺點。本文通過實驗證明了BPNN 算法不適用于小樣本儲層預測。
基本原理及實現步驟
神經網絡是模擬生物神經網絡系統的特點而構成的計算模型。它具有自組織、自學習功能,能通過對大量外界事物的接觸進行自主學習并將學習結果保存,最后用于其它事物的鑒別上。由于前饋型神經網絡具有算法復雜、中間隱層不與外界連接的弊端,為解決這一問題,D.Rumelhart 和McClelland提出了一種反向傳播(Back-Propogation,BP)算法。
該算法分為兩個階段:第一階段為正向傳播過程,輸入信息從輸入層經隱層逐層計算各單元的輸出值;第二階段為反向傳播過程,輸出誤差逐層向前算出隱層各單元的誤差,并用此誤差修正前層權值。典型的BP 神經網絡結構如圖所示。誤差反向傳播算法是最小均方算法的一種廣義形式,BP 算法使用梯度搜索技術,按代價函數最小的準則遞歸地求解網絡的權值,代價函數為網絡的實際輸出和期待輸出的均方誤差。
在BP 神經網絡中,神經元是神經網絡的組成單元。在反向傳播算法中,通常采用梯度法修正權值,為此要求輸出函數可微,通常采用 函數作為輸出函數。標準BP 神經網絡算法采用了最速下降法作為訓練函數,但是最速下降法本身帶有收斂速度慢、容易進入局部最小等缺點,后來經過Hagan 等的改進, 把數值優化的Levenberg-Marquardt 訓練方法應用到神經網絡的訓練函數中,在很大程度上改進了神經網絡的收斂速度。算法實現步驟首先選定權系數初始值,通常選取較小的隨機數作為權值的初始值; 其次重復下列過程直至收斂( 對各樣本依次計算)。參數選取隱層節點個數:當輸入節點個數為M 時, 隱層節點個數l≤2M+1。根據劉耦耕提出的隱層計算經驗公式:l=int(N(p-1))/(M+N+1)+α;l≤2M+1, 式中M為輸入層節點數,N 為輸出層節點個數,p 為訓練樣本個數,α 為1~10 之間的常數。步長η 對收斂性影響很大,而且對于不同的問題其最佳值相差也很大,通常可以在0.1~3 之間試探,對于較復雜的問題應采用較大的值。慣性項系數α 影響收斂速度,在很多問題中可以考慮在0.9~1 之間進行選擇,當α≥1 時不收斂,有些情況下也可不使用慣性項,即α=0。
實驗結果及分析
在利用模式識別方法進行儲層預測的過程中,神經網絡方法是最常用也是最傳統的方法。隨著人們對經驗風險最小化及結構風險最小化的認識逐步深入,經驗風險最小化并不能滿足人們對學習機外推效果的期望,神經網絡方法已經不再成為模式識別儲層預測的首選方法。
實驗用于驗證BP 神經網絡在儲層預測中的泛化推廣能力。同時經過反復實驗,最后選定參數:步長η=0.5,慣性系數α=0.95,收斂誤差е=0.005。測井符合率預測外推結果。雖然BPNN 在訓練過程中收斂誤差較小(0.005),即BPNN 基本能夠記住每個訓練樣本的分類情況,但是在實際的泛化預測過程中的測井符合率僅為66.7%。
這一結果說明,在訓練樣本較少的情況下,BPNN并不適用于儲層預測。對某區塊進行儲層預測外推, 區塊范圍為:Inline(350~900),Xline(550~920),典型 BP 神經網絡結構圖 顯然不適于小樣本。