MATLAB遺傳神經網路演算法學習
誤差反向傳播(BP)神經網路根據反向傳播的誤差來調節連線權值和閾值,具有很強的非線性模擬能力
第一層為輸入層,節點數目M由輸入向量維數確定;中間層為雙隱含層,節點數可選,一般不同層有不同的節點數;最後一層為輸出層,節點數目N由輸出向量維數確定.
不同層的神經元由權值連線,每個神經元帶有一個閾值θ.
其中Im為輸入層第m個神經元的輸入值,θj為第一隱含層第j個神經元閾值,ωjm表示第一隱含層第j個神經元與輸入層第m個神經元之間的連線權值,netj表示第一隱含層第j個神經元的輸入值.第一隱含層第j個神經元輸出為hj=f(netj),其中f為啟用函式,一般選擇S型函式,函式形式為f
第一隱含層輸出即為第二隱含層輸入。
其中hj為第一隱含層第j個神經元的輸出值,θk為第二隱含層第k個神經元閾值,ωkj表示第二隱含層第k個神經元與第一隱含層第j個神經元之間的連線權值,Hk表示第二隱含層第k個神經元的輸出值.
Hk作為輸出層的輸入,得到最終預測輸出。
其中Hk為第二隱含層第k個神經元的輸出值,θn為輸出層第n個神經元閾值,ωnk表示輸出層第n個神經元與第二隱含層第k個神經元之間的連線權值,On表示輸出層第n個神經元的最終輸出值.
網路預測誤差記為
其中Tn為期望輸出值,在大地電磁資料的網路學習訓練中,Tn為已知模型的地電引數理論值.
經典BP演算法是採用梯度下降法修正權值和閾值,即
其中η為學習速率,一般取值為0.1~0.2.Δω和Δθ分別為修正的權值和閾值,ωt和θt分別為第t次迭代的權值和閾值,ωt+1和θt+1分別為第t+1次迭代的權值和閾值.通過公式(1)—(6)迴圈迭代,直到誤差滿足精度或達到設定迭代次數,網路訓練結束.針對經典BP演算法存在的收斂速度慢、易陷入區域性最優等問題,出現了一些改進方法,如附加動量法、彈性BP演算法、共軛梯度法等,本文就不再贅述.
這裡需要說明的是:在大地電磁資料反演中,網路學習訓練的過程為公式(1)—(6)的多次迴圈迭代,以獲得最優的網路引數;而反演測試時只需將已訓練好的網路引數即最優權值和閾值與未知模型或實測視電阻率以公式(1)—(3)進行一次計算,得到的On就是未知模型或實測資料地電引數的計算值.這種網路學習訓練和反演測試分兩部分進行的反演方法是神經網路反演與其他反演方法的主要不同之處,其主要計算過程和耗時在網路學習訓練階段,而將訓練好的網路進行直接反演測試(只要一次計算,無需迭代),可使反演具有實時性,這也是神經網路反演的最大優勢.
1.2 遺傳演算法優化神經網路
遺傳演算法是基於自然選擇和遺傳學機理的迭代自適應概率搜尋演算法,具有很強的全域性搜尋能力,穩定性強.首先將待求解問題的各引數採用二進位制(或其他編碼形式)進行編碼,每條染色體均包括所有引數資訊,隨機產生在模型空間均勻分佈的初始模型群體.然後通過選擇、交叉、變異一系列操作產生新一代種群.重複這一過程,使得種群不斷進化,直到最優個體滿足目標精度要求或達到最大遺傳代數為止.
面對較複雜的非線性系統問題時,由於BP網路設定的初始權值依賴設計者的經驗和樣本空間的反覆試驗,容易產生收斂速度慢、網路不穩定以及陷入區域性最優等一系列問題.將BP神經網路演算法與遺傳演算法結合,理論上可以對任意非線性系統進行對映,並且得到全域性最優的效果,從而形成一種更加有效的非線性反演方法.本文中遺傳演算法對BP神經網路進行如下優化:
(1) 依據待解決的問題,對網路結構進行初始化設定,確定輸入層、輸出層節點個數及雙隱含層節點個數,分別記為M、N、H1、H2.
(2) 產生初始化種群P(t),設定遺傳的種群規模,並對種群中的每個個體進行基因編碼,每條染色體編碼長度為N=(M×H1+H1×H2+H2×N+H1+H2+N)×L,L為變數的編碼位數,包含了一個網路的所有權值和閾值資訊,本文采用二進位制編碼.
(3) 計算種群中每一個個體的適應度,並按一定法則選取適應度好的個體組成新種群P(t).適應度函式為, 其中E(k)為網路預測誤差,見公式(4).函式值越小,則適應度越大,給定的神經網路的效能越好.
(4) 將新種群中的個體隨機搭配成對,對每對個體按照一定的交叉概率pc進行交叉操作,從而產生兩個新的個體;並對新種群中每個個體按照設定的變異概率pm進行變異進化,產生新個體.
(5) 將產生的新個體加入到種群中,形成新種群P(t+1),群體規模不變,計算新種群中個體適應度,若滿足迭代終止條件,則進行下一步,否則重複(3)—(5)步.
(6) 當達到最大遺傳代數或滿足誤差要求時,選取最佳個體作為遺傳結果,進行解碼,對神經網路的連線權值和閾值進行初始賦值,然後進行網路訓練,調節權值和閾值,直到滿足精度要求或達到最大迭代次數,演算法結束.
遺傳演算法優化神經網路初始權值。
作為三層BP神經網路模型,輸入節點為272,輸出節點為352,隱含層數為2,各隱含層節點數目按經驗和試錯法進行選取,確定雙隱含層節點分別為12和8,訓練演算法選擇彈性BP演算法,設定訓練目標擬合差(即均方誤差,見公式(7))為0.1,網路的最大迭代次數為1000次.如果某次網路訓練迭代次數達到了1000次,而迭代擬合差仍大於0.1,則該次訓練不成功.
遺傳演算法優化神經網路引數設定如下:種群規模30,遺傳代溝為0.95,交叉概率為0.7,變異概率為0.01,最大遺傳代數為20代.對建立的三層神經網路的不同層神經元之間連線權值及隱含層閾值、輸出層閾值進行二進位制編碼,得到一個個體的編碼染色體,基因長度為65480.選擇運算元採用隨機遍歷抽樣,交叉運算元採用高階重組運算元.
連結:http://html.rhhz.net/dqwlxb/2018-4-1563.htm#outline_anchor_12
https://www.cnblogs.com/sallybin/p/3169572.html