BP神经网络算法学习
BP(Back Propagation)網絡是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播算法訓練的多層前饋網絡,是眼下應用最廣泛的神經網絡模型之中的一個。BP網絡能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描寫敘述這樣的映射關系的數學方程。
一個神經網絡的結構示意圖例如以下所看到的。
BP神經網絡模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。輸入層神經元的個數由樣本屬性的維度決定,輸出層神經元的個數由樣本分類個數決定。隱藏層的層數和每層的神經元個數由用戶指定。每一層包括若干個神經元,每一個神經元包括一個而閾值,用來改變神經元的活性。網絡中的弧線表示前一層神經元和后一層神經元之間的權值。每一個神經元都有輸入和輸出。輸入層的輸入和輸出都是訓練樣本的屬性值。
對于隱藏層和輸出層的輸入 當中,是由上一層的單元i到單元j的連接的權;是上一層的單元i的輸出;而是單元j的閾值。
神經網絡中神經元的輸出是經由賦活函數計算得到的。該函數用符號表現單元代表的神經元活性。賦活函數一般使用simoid函數(或者logistic函數)。神經元的輸出為:
除此之外,神經網絡中有一個學習率(l)的概念,通常取0和1之間的值,并有助于找到全局最小。假設學習率太小,學習將進行得非常慢。假設學習率太大,可能出如今不適當的解之間擺動。
交代清楚了神經網絡中基本要素,我們來看一下BP算法的學習過程:
BPTrain(){
????? 初始化network的權和閾值。
????? while 終止條件不滿足 {
??????????? for samples中的每一個訓練樣本X {
??????????? // 向前傳播輸入
??????????? for 隱藏或輸出層每一個單元j {
????????????????? ;// 相對于前一層i,計算單元j的凈輸入 ;// 計算單元j的輸出
??????????? }
??????????? // 后向傳播誤差
??????????? for 輸出層每一個單元j {
????????????????? ;// 計算誤差
??????????? }
??????????? for 由最后一個到第一個隱藏層,對于隱藏層每一個單元j {
?????????????????? ;// k是j的下一層中的神經元
??????????? }
??????????? for network中每一個權 {
??????????????????? ; // 權增值
??????????????????? ; // 權更新
???????????? }
???????????? for network中每一個偏差 {
????????????????????? ; // 偏差增值
????????????????????? ;// 偏差更新
???????????? }
????? }
}
算法基本流程就是:
1、初始化網絡權值和神經元的閾值(最簡單的辦法就是隨機初始化)
2、前向傳播:依照公式一層一層的計算隱層神經元和輸出層神經元的輸入和輸出。
3、后向傳播:依據公式修正權值和閾值
直到滿足終止條件。
算法中還有幾點是須要說明的:
1、關于,是神經元的誤差。
對于輸出層神經元,當中,是單元j的實際輸 出,而是j基于給定訓練樣本的已知類標號的真正輸出。
對于隱藏層神經元,當中,是由下一較高層中單元k到單元j的連接權,而是單元k的誤差。
權值增量是,閾值增量是,當中是學習率。
對于的推導採用了梯度下降的算法。推導的前提是保證輸出單元的均方差最小。,當中P是樣本總數,m是輸出層神經元個數是樣本實際輸出,是神經網絡輸出。
梯度下降思路就是對求的導數。
對于輸出層:
當中的就是。
對于隱藏層:
當中=就是隱藏層的誤差計算公式。
2、關于終止條件,能夠有多種形式:
§ 前一周期全部的都太小,小于某個指定的閾值。
§ 前一周期未正確分類的樣本百分比小于某個閾值。
§ 超過預先指定的周期數。
§ 神經網絡的輸出值和實際輸出值的均方誤差小于某一閾值。
一般地,最后一種終止條件的準確率更高一些。
在實際使用BP神經網絡的過程中,還會有一些實際的問題:
1、 樣本處理。對于輸出,假設僅僅有兩類那么輸出為0和1,僅僅有當趨于正負無窮大的時候才會輸出0,1。因此條件可適當放寬,輸出>0.9時就覺得是1,輸出<0.1時覺得是0。對于輸入,樣本也須要做歸一化處理。
2、 網絡結構的選擇。主要是指隱藏層層數和神經元數決定了網絡規模,網絡規模和性能學習效果密切相關。規模大,計算量大,并且可能導致過度擬合;可是規模小,也可能導致欠擬合。
3、 初始權值、閾值的選擇,初始值對學習結果是有影響的,選擇一個合適初始值也很重要。
4、 增量學習和批量學習。上面的算法和數學推導都是基于批量學習的,批量學習適用于離線學習,學習效果穩定性好;增量學習使用于在線學習,它對輸入樣本的噪聲是比較敏感的,不適合劇烈變化的輸入模式。
5、 對于激勵函數和誤差函數也有其它的選擇。
總的來說BP算法的可選項比較多,針對特定的訓練數據往往有比較大的優化空間。
轉載于:https://www.cnblogs.com/gcczhongduan/p/3983168.html
總結
以上是生活随笔為你收集整理的BP神经网络算法学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot Actuator
- 下一篇: awesomium This view