1. 程式人生 > >MATLAB神經網路程式設計(五)——BP神經網路的模型結構與學習規則

MATLAB神經網路程式設計(五)——BP神經網路的模型結構與學習規則

《MATLAB神經網路程式設計》 化學工業出版社 讀書筆記
第四章 前向型神經網路 4.3 BP傳播網路

本文是《MATLAB神經網路程式設計》書籍的閱讀筆記,其中涉及的原始碼、公式、原理都來自此書,若有不理解之處請參閱原書

感知器神經網路的學習規則和LMS學習演算法只能訓練單層神經網路,而單層神經網路只能解決線性可分的分類問題。多層神經網路可以用於非線性分類問題,但是需要尋找訓練多層網路的學習演算法。

一,什麼是BP神經網路

“BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法

訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。”

1,“是一種按誤差逆傳播演算法訓練的多層前饋網路”
BP是後向傳播的英文縮寫,那麼傳播物件是什麼?傳播的目的是什麼?傳播的方式是後向,可這又是什麼意思呢。

傳播的物件是誤差,傳播的目的是得到所有層的估計誤差,後向是說由後層誤差推導前層誤差:

即BP的思想可以總結為

利用輸出後的誤差來估計輸出層的直接前導層的誤差,再用這個誤差估計更前一層的誤差,如此一層一層的反傳下去,就獲得了所有其他各層的誤差估計。

2,“BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)”

一個簡單的三層BP網路:

BP的三層結構

BP演算法是為了解決多層前向神經網路的權係數優化而提出來的;所以,BP演算法也通常暗示著神經網路的拓撲結構是一種無反饋的多層前向網路。故而.有時也稱無反饋多層前向網路為BP模型。

3,“BP網路能學習和存貯大量的輸入-輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。”

BP利用一種稱為啟用函式來描述層與層輸出之間的關係,從而模擬各層神經元之間的互動反應。

啟用函式必須滿足處處可導的條件。那麼比較常用的是一種稱為S型函式的啟用函式:
啟用函式
當然也會使用其他的啟用函式,在下文會仔細解說。

4,
神經網路的學習目的:

希望能夠學習到一個模型,能夠對輸入輸出一個我們期望的輸出。

學習的方式:
在外界輸入樣本的刺激下不斷改變網路的連線權值

學習的本質:
對各連線權值的動態調整
學習的核心:

權值調整規則,即在學習過程中網路中各神經元的連線權變化所依據的一定的調整規則。

使用了BP演算法訓練的神經網路,稱為BP神經網路。在人工神經網路的時機應用中,BP網路廣泛應用於函式逼近、模式識別與分類、資料壓縮等。80%-90%的人工神經網路模型都是採用BP網路或者它的變形,BP網路也是前饋神經網路的核心部分,體現了人工神經網路的最精華部分。

二,BP網路模型結構

1,神經元模型。
一個基本的BP神經元模型如下圖所示:

1

它具有R個輸入,每個輸入都通過一個適當的權值w和下一層連線,網路的輸出可表達為:

a=f(wp+b)

BP 網路中隱藏層神經元傳遞函式通常用log-sigmoid型函式logsig,tan-sigmoid型函式tansig以及純線性函式pureline。
如果BP網路的輸出層是sigomoid型神經元,那麼整個網路的輸出就限制在一個較小的範圍;如果是pureline型線性神經元,那麼整個網路的輸出可以取任意值。

BP網路的傳遞函式必須是可微的單調遞增函式。在BP網路訓練過程中計算函式logsin,tansig,pureline的倒數非常重要,所以MATLAB神經網路工具箱直接提供這些函式的導函式dlogsig,dtansig,dpureline。

2,前饋型神經網路結構。
前饋型神經網路通常有一個或者多個隱層,隱層中的神經元均採用S型傳遞函式(如上文中提到的logsig等),輸出層的神經元採用線性傳遞函式。
隱層的非線性傳遞函式神經元可以學習輸入輸出之間的線性和非線性關係,線性輸出層是為了拓寬網路輸出。如果需要限定網路的輸出(如限定在0和1之間),則可以採用S型傳遞函式。
下圖是一個典型的兩層BP網路,隱層的神經元傳遞函式tansig,輸出層神經元傳遞函式pureline。

2

三,BP學習規則

BP網路的產生歸功於BP演算法的獲得。BP演算法屬於δ演算法,是一種監督式的學習演算法。有監督的BP模型訓練表示我們有一個訓練集,它包括了: input X 和它被期望擁有的輸出 output Y;所以對於當前的一個BP模型,我們能夠獲得它針對於訓練集的誤差;
BP演算法由兩部分組成:資訊的正向傳遞與誤差的反向傳播。在正向傳播的過程中,輸入資訊從輸入經過隱含層逐層計算傳向輸出層,每一層的神經元的狀態隻影響下一層神經元的狀態。如果在輸出層沒有得到期望的輸出,則計算輸出層的誤差變化值,然後反向傳播,通過網路將誤差訊號沿著原來的額連線通路反向回來修改各層神經元的權值直到達到期望目標。

所以BP的核心思想就是:將輸出誤差以某種形式通過隱層向輸入層逐層反傳,這裡的某種形式其實就是:

BP

也就是一種 “訊號的正向傳播 —-> 誤差的反向傳播”的過程:

BP

下面用一個例子來介紹BP演算法推導,所用網路的簡化圖如下:

5
6
7
8
9

BP演算法需要用到各層啟用函式的一階導數,所以要求其啟用函式處處可微。

上述過程可以用示意圖表示:

示意圖

小結:BP演算法的流程

1.正向傳播

輸入的樣本從輸入層經過隱單元一層一層進行處理,通過所有的隱層之後,則傳向輸出層;在逐層處理的過程中,每一層神經元的狀態只對下一層神經元的狀態產生影響。在輸出層把現行輸出和期望輸出進行比較,如果現行輸出不等於期望輸出,則進入反向傳播過程。

2.(誤差)反向傳播

反向傳播時,把誤差訊號按原來正向傳播的通路反向傳回,並對每個隱層的各個神經元的權係數進行修改,以望誤差訊號趨向最小