BP神經網絡詳細講解---贊100!

PS:這篇介紹神經網絡是很詳細的,有一步一步的推導公式!神經網絡是DL(深度學習)的基礎。

如果對神經網絡已經有所瞭解,可以直接跳到 “三、BP算法的執行步驟“ 部分,算法框架清晰明瞭。

另外,如果對NN 很感興趣,也可以參閱最後兩篇參考博文,也很不錯!

學習是神經網絡一種最重要也最令人注目的特點。在神經網絡的發展進程中,學習算法的研究有着十分重要的地位。目前,人們所提出的神經網絡模型都是和學習算 法相應的。所以,有時人們並不去祈求對模型和算法進行嚴格的定義或區分。有的模型可以有多種算法.而有的算法可能可用於多種模型。不過,有時人們也稱算法 爲模型。

自從40年代Hebb提出的學習規則以來,人們相繼提出了各種各樣的學習算法。其中以在1986年Rumelhart等提出的誤差反向傳播法,即BP(error BackPropagation)法影響最爲廣泛。直到今天,BP算法仍然是自動控制上最重要、應用最多的有效算法。

1.2.1 神經網絡的學習機理和機構

在神經網絡中,對外部環境提供的模式樣本進行學習訓練,並能存儲這種模式,則稱爲感知器;對外部環境有適應能力,能自動提取外部環境變化特徵,則稱爲認知器。

神經網絡在學習中,一般分爲有教師和無教師學習兩種。感知器採用有教師信號進行學習,而認知器則採用無教師信號學習的。在主要神經網絡如BP網 絡,Hopfield網絡,ART網絡和Kohonen網絡中;BP網絡和Hopfield網絡是需要教師信號才能進行學習的;而ART網絡和 Kohonen網絡則無需教師信號就可以學習。所謂教師信號,就是在神經網絡學習中由外部提供的模式樣本信號。

一、感知器的學習結構

感知器的學習是神經網絡最典型的學習。

目前,在控制上應用的是多層前饋網絡,這是一種感知器模型,學習算法是BP法,故是有教師學習算法。

一個有教師的學習系統可以用圖1—7表示。這種學習系統分成三個部分:輸入部,訓練部和輸出部。

圖1-7  神經網絡學習系統框圖

輸入部接收外來的輸入樣本X,由訓練部進行網絡的權係數W調整,然後由輸出部輸出結果。在這個過程中,期望的輸出信號可以作爲教師信號輸入,由該教師信號與實際輸出進行比較,產生的誤差去控制修改權係數W。

學習機構可用圖1—8所示的結構表示。

在圖中,Xl ,X2 ,…,Xn ,是輸入樣本信號,W1 ,W2 ,…,Wn 是權係數。輸入樣本信號Xi 可以取離散值“0”或“1”。輸入樣本信號通過權係數作用,在u產生輸出結果 ∑Wi Xi ,即有:

u=∑Wi Xi =W1 X1 +W2 X2 +…+Wn Xn

再把期望輸出信號Y(t)和u進行比較,從而產生誤差信號e。即權值調整機構根據誤差e去對學習系統的權係數進行修改,修改方向應使誤差e變小,不斷進行下去,使到誤差e爲零,這時實際輸出值u和期望輸出值Y(t)完全一樣,則學習過程結束。

神經網絡的學習一般需要多次重複訓練,使誤差值逐漸向零趨近,最後到達零。則這時纔會使輸出與期望一致。故而神經網絡的學習是消耗一定時期的,有的學習過程要重複很多次,甚至達萬次級。原因在於神經網絡的權係數W有很多分量W1 ,W2 ,----Wn ;也即是一個多參數修改系統。系統的參數的調整就必定耗時耗量。目前,提高神經網絡的學習速度,減少學習重複次數是十分重要的研究課題,也是實時控制中的關鍵問題。

二、感知器的學習算法

感知器是有單層計算單元的神經網絡,由線性元件及閥值元件組成。感知器如圖1-9所示。

圖1-9   感知器結構

感知器的數學模型:

(1-12)

其中:f[.]是階躍函數,並且有

(1-13)

 

θ是閥值。

感知器的最大作用就是可以對輸入的樣本分類,故它可作分類器,感知器對輸入信號的分類如下:

(1-14)

即是,當感知器的輸出爲1時,輸入樣本稱爲A類;輸出爲-1時,輸入樣本稱爲B類。從上可知感知器的分類邊界是:

(1-15)

 

在輸入樣本只有兩個分量X1,X2時,則有分類邊界條件:

(1-16)

 

     W1 X1 +W2 X2 -θ=0       (1-17)

也可寫成

(1-18)

這時的分類情況如固1—10所示。

感知器的學習算法目的在於找尋恰當的權係數w=(w1.w2,…,Wn),使系統對一個特 定的樣本x=(xt,x2,…,xn)熊產生期望值d。當x分類爲A類時,期望值d=1;X爲B類 時,d=-1。爲了方便說明感知器學習算法,把閥值θ 並人權係數w中,同時,樣本x也相應增加一 個分量xn+1 。故令:

Wn+1 =-θ,Xn+1 =1      (1-19)

則感知器的輸出可表示爲:

(1-20)

感知器學習算法步驟如下:
1.對權係數w置初值
對權係數w=(W1 .W2 ,…,Wn ,Wn+1 )的各個分量置一個較小的零隨機值,但Wn+1 =-θ 。

並記爲Wl (0),W2 (0),…,Wn (0),同時有Wn+1(0)=-θ 。這裏Wi (t)爲t時刻從第i個

輸入上的權係數,i=1,2,…,n。Wn+1 (t)爲t時刻時的閥值。

圖1-10 感知器的分類例子

2.輸入一樣本X=(X1 ,X2 ,…,Xn+1 )以及它的期望輸出d。

期望輸出值d在樣本的類屬不同時取值不同。如果x是A類,則取d=1,如果x是B類,則取-1。期望輸出d也即是教師信號。

3.計算實際輸出值Y

4.根據實際輸出求誤差e

e=d—Y(t)       (1-21)

5.用誤差e去修改權係數

i=1,2,…,n,n+1      (1-22)

其中,η稱爲權重變化率,0<η≤1

在式(1—22)中,η的取值不能太大.如果1取值太大則會影響wi (t)的穩定;的取值也不能太小,太小則會使Wi (t)的求取過程收斂速度太慢。

當實際輸出和期望值d相同時有:

Wi (t+1)=Wi (t)

6.轉到第2點,一直執行到一切樣本均穩定爲止。

從上面式(1—14)可知,感知器實質是一個分類器,它的這種分類是和二值邏輯相應的。因此,感知器可以用於實現邏輯函數。下面對感知器實現邏輯函數的情況作一些介紹。

例:用感知器實現邏輯函數X1 VX2 的真值:

X1 0011
X2 0101
XV X2 0111

以X1VX2=1爲A類,以X1VX2=0爲B類,則有方程組

(1-23)

 

即有:
(1-24)

從式(1—24)有:

W1 ≥θ,W2 ≥θ

令 W1 =1,W2 =2

則有: θ ≤1

取   θ=0.5

則有:X1+X2-0.5=0,分類情況如圖1—11所示。

圖1-11  邏輯函數X1 VX2 的分類

1.2.2 神經網絡學習的梯度算法

從感如器的學習算法可知,學習的目的是在於修改網絡中的權係數,使到網絡對於所輸入的模式樣本能正確分類。當學習結束時,也即神經網絡能正確分類時,顯然 權係數就反映了同類輸人模式樣本的共同特徵。換句話講,權係數就是存儲了的輸人模式。由於權係數是分散存在的,故神經網絡自然而然就有分佈存儲的特點。

前面的感知器的傳遞函數是階躍函數,所以,它可以用作分類器。前面一節所講的感知器學習算法因其傳遞函數的簡單而存在侷限性。

感知器學習算法相當簡單,並且當函數線性可分時保證收斂。但它也存在問題:即函數不是線性可分時,則求不出結果;另外,不能推廣到一般前饋網絡中。

爲了克服存在的問題,所以人們提出另一種算法——梯度算法(也即是LMS法)。

爲了能實現梯度算法,故把神經元的激發函數改爲可微分函數,例如Sigmoid函數,非對稱Sigmoid函數爲f(X)=1/(1+e-x ),對稱Sigmoid函數f(X)=(1-e-x )/(1+e-x );而不採用式(1—13)的階躍函數。

對於給定的樣本集Xi (i=1,2,,n),梯度法的目的是尋找權係數W* ,使得f[W*. Xi ]與期望輸出Yi儘可能接近。

設誤差e採用下式表示:

(1-25)

其中,Yi =f〔W* ·Xi ]是對應第i個樣本Xi 的實時輸出

Yi 是對應第i個樣本Xi 的期望輸出。

要使誤差e最小,可先求取e的梯度:(對每一個樣本的期望與輸出值求導)

(1-26)

其中:

(1-27)

令  Uk =W. Xk ,則有:

(1-28)

 

即有:

(1-29)

 

最後有按負梯度方向修改權係數W的修改規則:Wk+1=Wk+ΔW

(1-30)

 

也可寫成:

(1-31)

 

在上式(1—30),式(1—31)中,μ 是權重變化率,它視情況不同而取值不同,一般取0-1之間的小數。
很明顯,梯度法比原來感知器的學習算法進了一大步。其關鍵在於兩點:

1.神經元的傳遞函數採用連續的s型函數,而不是階躍函數;

2.對權係數的修改採用誤差的梯度去控制,而不是採用誤差去控制。故而有更好的動態特能,即加強了收斂進程。

但是梯度法對於實際學習來說,仍然是感覺太慢;所以,這種算法仍然是不理想的。

1.2.3 反向傳播學習的BP算法

反向傳播算法也稱BP算法。由於這種算法在本質上是一種神經網絡學習的數學模型,所以,有時也稱爲BP模型。

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

在這裏,並不要求過於嚴格去爭論和區分算法和模型兩者的有關異同。感知機學習算法是一種單層網絡的學習算法。在多層網絡中.它只能改變最後權係數。因此, 感知機學習算法不能用於多層神經網絡的學習。1986年,Rumelhart提出了反向傳播學習算法,即BP(backpropagation)算法。這 種算法可以對網絡中各層的權係數進行修正,故適用於多層網絡的學習。BP算法是目前最廣泛用的神經網絡學習算法之一,在自動控制中是最有用的學習算法。

一、BP算法的原理

BP算法是用於前饋多層網絡的學習算法,前饋多層網絡的結構一般如圖1—12所示

圖1-12  網絡學習結構

它含有輸人層、輸出層以及處於輸入輸出層之間的中間層。中間層有單層或多層,由於它們和外界沒有直接的聯繫,故也稱爲隱層。在隱層中的神經元也稱隱單元。 隱層雖然和外界不連接.但是,它們的狀態則影響輸入輸出之間的關係。這也是說,改變隱層的權係數,可以改變整個多層神經網絡的性能。

設有一個m層的神經網絡,並在輸入層加有樣本X;設第k層的i神經元的輸入總和表示爲Ui k ,輸出Xi k ;從第k—1層的第j個神經元到第k層的第i個神經元的權係數爲Wij 各個神經元的激發函數爲f,則各個變量的關係可用下面有關數學式表示:

Xi k =f(Ui k )   (1-32)
(1-33)

反向傳播算法分二步進行,即正向傳播和反向傳播。這兩個過程的工作簡述如下。

1.正向傳播

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

2.反向傳播

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

二、BP算法的數學表達

BP算法實質是求取誤差函數的最小值問題。這種算法採用非線性規劃中的最速下降方法,按誤差函數的負梯度方向修改權係數。

爲了說明BP算法,首先定義誤差函數e。取期望輸出和實際輸出之差的平方和爲誤差函數,則有:(監督類學習一般對損失函數求最小

(1-34)

其中:Yi 是輸出單元的期望值;它也在這裏用作教師信號;

Xi m 是實際輸出;因爲第m層是輸出層。

由於BP算法按誤差函數e的負梯度方向修改權係數,故權係數Wij 的修改量Awij ,和e

(1-35)
也可寫成  
(1-36)

其中:η 爲學習速率,即步長。

很明顯,根據BP算法原則,求ae/aWij 最關鍵的。下面求ae/aWij ;有

(1-37)
由於  
(1-38)
故而  
(1-39)
從而有  
(1-40)
 
(1-41)
則有學習公式:  
(1-42)

其中:η 爲學習速率,即步長,一般取0-1間的數。

從上面可知,di k 實際仍末給出明顯的算法公式,下面求di k 的計算公式。

(1-43)

從式(1-32)可知在式(1-43)中,有

 
(1-44)

爲了方便進行求導,取f爲連續函數。一般取非線性連續函數,例如Sigmoid函數。當取f爲非對稱Sigmoid函數時,有:

則有:f'(Ui k )=f'(Ui k )(1-f(Ui k ))
             =Xi k (1-Xi k )                (1-45)

再考慮式(1—43)中的偏微分項ae/aXi k ,有兩種情況需考慮的:

如果k=m,則是輸出層,這時有Yi 是輸出期望值,它是常數。從式(1-34)有

(1-46)
從而有   di m =Xi m (1-Xi m )(Xi m -Yi ) (1-47)
2.如果k<m,則該層是隱層.這時應考慮上一層對它的作用,故有:  
(1-48)
從式(1—41)中,可知有:  
(1-49)
從式(1—33)中,可知有:  
(1-50)
故而有  
(1-51)
最後有:  
(1-52)

從上述過程可知:多層網絡的訓練方法是把一個樣本加到輸入層,並根據向前傳播的規則:

 

Xi k =f(Ui k )

不斷一層一層向輸出層傳遞,最終在輸出層可以得到輸出Xi m 。

Xi m和期望輸出Yi進行比較.如果兩者不等,則產生誤差信號e,接着則按下面公式反向傳播修改權係數:

  (1-53)

其中

 

di m =Xi m (1-Xi m )(Xi m -Yi )  

(m爲輸出層)

上面公式中,求取本層di k 時,要用到高一層的di k+1 ;可見,誤差函數的求取是從輸出層開始,到輸入層的反向傳播過程。在這個過程中不斷進行遞歸求誤差。

通過多個樣本的反覆訓練,同時向誤差漸漸減小的方向對權係數進行修正,以達最終消除誤差。從上面公式也可以知道,如果網絡的層數較多時,所用的計算量就相當可觀,故而收斂速度不快。

爲了加快收斂速度,一般考慮上一次的權係數,並以它作爲本次修正的依據之一,故而有修正公式:

(1-54)

其中:η 爲學習速率,即步長,η =0.1—0.4左右

ɑ 爲權係數修正常數,取0.7—0.9左右。

在上面,式(1—53)也稱爲一般化的Delta法則。對於沒有隱層的神經網絡,可取

(1-55)

其中:,Yi 爲期望輸出;

Xj 爲輸出層的實際輸出;

Xi 爲輸入層的輸入。

這顯然是一種十分簡單的情況,式(1—55)也稱爲簡單Delta法則。

在實際應用中,只有一般化的Delta法則式(1—53)或式(1—54)纔有意義。簡單Delta法則式(1—55)只在理論推導上有用。


三、BP算法的執行步驟

在反向傳播算法應用於前饋多層網絡時,採用Sigmoid爲激發面數時,可用下列步驟對網絡的權係數Wij 進行遞歸求取。注意對於每層有n個神經元的時候,即有i=1,2,…,n;j=1,2,…,n。對於第k層的第i個神經元,則有n個權係數Wi1 ,Wi2 ,…,Win ,另外取多—個Win+1 用於表示閥值θi ;並且在輸入樣本X時,取x=(X1 ,X2 ,…,Xn ,1)。

算法的執行的步驟如下:

1.對權係數Wij 置初值。

各層的權係數Wij 置一個較小的非零隨機數,但其中Wi ,n+1=-θ 

2.輸入一個樣本X=(xl ,x2 ,…,xn ,1),以及對應期望輸出Y=(Y1 ,Y2 ,…,Yn )。

3.計算各層的輸出

對於第k層第i個神經元的輸出Xi k ,有:

Xi k =f(Ui k )

4.求各層的學習誤差di k

對於輸出層有k=m,有

di m =Xi m (1-Xi m )(Xi m -Yi )

對於其他各層,有

5.修正權係數Wij和閥值θ 
用式(1—53)時有:

用式(1—54)時有:

其中:

6.當求出了各層各個權係數之後,可按給定品質指標判別是否滿足要求。如果滿足要求,則算法結束;如果未滿足要求,則返回(3)執行。

這個學習過程,對於任一給定的樣本Xp =(Xp1 ,Xp2 ,…Xpn ,1)和期望輸出Yp =(Yp1 ,Yp2 ,…,Ypn )都要執行,直到滿足所有輸入輸出要求爲止。


PS:另外兩篇介紹也不錯哦!

       1.神經網絡編程入門

       2. 神經網絡介紹 ------利用反向傳播算法的模式學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章