BP網絡(反向傳播詳細介紹算法、推導,特點等)
1. 前饋神經網絡--多層感知機神經網絡MLP
-

-
多層感知機網絡(MLP)是一種特定類型的前饋神經網絡(FFNN)
-
多層前饋神經網絡指的是每層神經元與下一層神經元全互連,神經元之間不存在同層連接,也不存在跨層連接,如圖

-
MLP網絡特性:可以實現任意復雜的非線性映射關系用于分類:
兩層網(一個隱層):可以實現空間內任意的凸區域的劃分
三層網(兩個隱層):可以實現任意形狀(連續或不連續)區域的劃分
使用反向傳播算法---BP算法(Back Propagation Algorithm)以確定MLP網絡中的權值及偏置
2. BP網絡的引入
-
感知器學習規則不能直接應用到多層感知器的參數學習上。
-
感知器學習規則:階躍函數。采用最小均方學習規則,不需要對變換函數求導,學習速度快,具有較高的精度。
-
多層感知器模型中,如果神經元傳遞函數是階躍函數,對各隱層節點來說,不存在期望輸出,且無法對隱層權重通過梯度下降法求解,因此感知器學習規則對隱藏層權值不適用。
既然我們無法直接得到隱層的權值,能否先通過輸出層得到輸出結果和期望輸出的誤差來間接調整隱層的權值呢?
- 提出由Sigmoid函數代替之前的階躍函數作為激勵函數來構造神經元。(放寬一下限制,輸出是一個0到1的平滑范圍)
3. BP網絡的傳遞函數:Sigmoid
-
Sigmoid函數是單調遞增的非線性函數,函數本身及其導數都是連續的,無限次可微。
-
Sigmoid函數通常寫作如下形式: $ f(\alpha)= \frac {1} { 1 + e ^ {- \alpha } } \( 取值范圍是(0,1),代替神經元階躍函數可寫作: \) y = f(x) = \frac {1} {1 + e ^ {- \sum _ {i=1} ^ {m} } w_{i} x_ {i} - w_{ 0 } } $
-
$ 導數: f'(x)=f(x)(1-f(x))$

4. BP 算法的基本思想
- 信號的正向傳播+誤差的反向傳播
- 正向傳播時,輸入樣本從輸入層傳入,經各隱層逐層處理后,傳向輸出層。若輸出層的實際輸出與期望的輸出不符,則轉入誤差的反向傳播階段
- 反向傳播時,將輸出以某種形式通過隱層向輸入層逐層反傳,并將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權值的依據
5. BP網絡模型
5.1 簡介
-
BP網絡(Back-Propagation Network)是1986年被提出的,是一種按誤差逆向傳播算法訓練的多層前饋網絡,是目前應用最廣泛的神經網絡模型之一,用于函數逼近、模型識別分類、數據壓縮和時間序列預測等。
-
BP網絡又稱為反向傳播神經網絡,它是一種有監督的學習算法,具有很強的自適應、自學習、非線性映射能力,能較好地解決數據少、信息貧、不確定性問題,且不受非線性模型的限制。

-
一個典型的BP網絡應該包括三層:輸入層、隱含層和輸出層。各層之間全連接,同層之間無連接。隱含層可以有很多層,對于一般的神經網絡而言,單層的隱含層已經足夠了。上圖是一個典型的BP神經網絡結構圖。
-
標準的BP算法采用誤差函數按梯度下降的方法學習,使網絡的設計輸出值和期望輸出值之間的均方誤差最小。BP神經網絡的傳輸函數通常采用sigmoid函數,而輸出層則采用線性傳輸函數。
5.2 BP組成
5.2.1 輸入層
輸入層各神經元負責接收來自外界的輸入信息,并傳遞給中間層各神經元,它的節點數為輸入變量的個數。

5.2.2 輸出層
出層向外界輸出信息處理結果。它的節點個數為輸出變量的個數。
5.2.3 隱含層
-
在BP神經網絡中,輸入層和輸出層的節點個數都是確定的,而隱含層節點個數不確定,隱層神經元數目過多,會加大網絡計算量并容易產生過度擬合問題;神經元數目過少,則會影響網絡性能,達不到預期效果。那么應該設置為多少才合適呢?
網絡中隱層神經元的數目與實際問題的復雜程度、輸入和輸出層的神經元數及對期望誤差的設定有著直接的關系。目前,對于隱層的神經元數目的確定沒有明確的公式,只有一些基于經驗的公式,神經元的個數最終需要根據經驗和多次試驗確定。如下
$ h = \sqrt{m + n} + a $其中h為隱含層節點數目,n為輸入層節點數目,m為輸出層節點數目,a為1~10之間的調節常數。
-
有關研究表明,一個隱含層的神經網絡,只要隱節點足夠多,就可以以任意精度逼近一個非線性函數。因此,通常采用含有一個隱層的三層多輸入單輸出的BP神經網絡建立預測模型。
5.3 BP網絡學習過程(損失函數優化問題)
- 采用梯下降算法通過調整各層權值求目標函數最小化

- 由于采用Sigmoid函數作為神經元傳遞函數,不管網絡結構多么復雜,總可以通過計算梯度來考察各個參數。這就是多層感知器反向傳播算法的基本思想
5.3.1 工作信號正向傳遞子過程(信號的正向傳播)
輸入信號從輸入層經過各個隱含層向輸出層傳播,在輸出層得到實際的響應值,若實際值與期望值誤差較大,就會轉入誤差反向傳播階段。
現在設節點和節點之間的權值為,節點的閥值為,每個節點的輸出值為,而每個節點的輸出值是根據上層所有節點的輸出值、當前節點與上一層所有節點的權值和當前節點的閥值還有激活函來實現的。具體計算方法如下:
$ $
其中為激活函數,一般選取S型函數或者線性函數。
正向傳遞的過程比較簡單,按照上述公式計算即可。在BP神經網絡中,輸入層節點沒有閥值。
5.3.2 誤差信號反向傳遞子過程(誤差的反向傳播)
-
按照梯度下降的方法從輸出層經過各個隱含層并逐層不斷地調整各神經元的連接權值和閾值,反復迭代,直到網絡輸出的誤差減少到可以接受的程度,或者進行到預先設定的學習次數。
-
反向傳播時,將輸出以某種形式通過隱層向輸人層逐層反傳,并將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權值的依據
5.4 BP算法改進
- 雖然BP神經網絡具有高度非線性和較強的泛化能力,但也存在收斂速度慢、迭代步數多、易陷入局部極小和全局搜索能力差、隱節點的選取缺乏理論指導、訓練時學習新樣本有遺忘舊樣本的趨勢等缺點。可以采用增加動量項、自適應調節學習率、引入陡度因子等方法進行改進。
5.5 BP算法推導
- 規定\(y是預測值,\hat{y}是實際值\)
- C是單個預測值和真實值相關的損失函數,L是總損失函數,即C的線性相加


5.5.1 Forward Pass
- z對w的偏微分數值看w之前接的值是什么


5.5.2 Backward Pass
- z在Forward Pass 就已經計算好






5.5.3 西瓜書推導




-
如果類似地推導出基于累積誤差最小化的更新規則,就得到了累積誤差逆傳播(accumulated error backpropagation)算法.
-
累積 BP 算法與標準 BP 算法都很常用.一般來說,標準 BP 算法每次更新只針對單個樣例,參數更新得非常頻繁,而且對不同樣例進行更新的效果可能出現“抵消”現象.因此,為了達到同樣的累積誤差極小點,標準 BP 算法往往需進行更多次數的迭代.累積 BP 算法直接針對累積誤差最小化,它在讀取整個訓練集D一遍后才對參數進行更新其參數更新的頻率低得多.但在很多任務中,累積誤差下降到一定程度之后,進一步下降會非常緩慢,這時標準 BP往往會更快獲得較好的解,尤其是在訓練集 D 非常大時更明顯
-
標準BP算法和累計BP算法的區別類似于隨機梯度下降(SGD)與標準梯度下降之間的區別

5.5 BP網絡特點
- 非線性映射能力:神經網絡能以任意精度逼近任何非線性連續函數
- 自學習和自適應能力
- 多變量系統:神經網絡的輸入和輸出變量的數目是任意的
- 數據融合的能力:可以利用工程技術(數值運算)和人工智能技術(符號處理)

浙公網安備 33010602011771號