BP神經網絡
- BP神經網絡
- 概述
- BP算法基本原理
- 1 BP網絡模型
- 2 BP網絡的标準學習算法
- 3 BP算法的直覺解釋
1 概述
Rumelhart,McClelland于1985年提出了BP網絡的誤差反向後傳BP(Back Propagation)學習算法。
特點:
- 1、非線性映射能力
能學習和存貯大量輸入-輸出模式映射關系,而無需事先了解描述這種映射關系的數學方程。隻要能提供足夠多的樣本模式對供網絡進行學習訓練,它便能完成由n維輸入空間到m維輸出空間的非線性映射。
- 2、泛化能力
當向網絡輸入訓練時未曾見過的非樣本資料時,網絡也能完成由輸入空間向輸出空間的正确映射。這種能力稱為泛化能力。
- 3、容錯能力
輸入樣本中帶有較大的誤差甚至個别錯誤對網絡的輸入輸出規律影響很小。
2 BP算法基本原理
利用輸出後的誤差來估計輸出層的直接前導層的誤差,再用這個誤差估計更前一層的誤差,如此一層一層的反傳下去,就獲得了所有其他各層的誤差估計。
2.1 BP網絡模型
激勵函數:
- 1、必須處處可導
- 2、經常用sigmoid函數
sigmoid(x)=11+e−x
使用s函數時,輸入與輸出得關系:
輸入:
input=x1w1+x2w2+...+xnwn
輸出: output=f(in)=11+e−in
輸出得導數: f′(in)=11+e−in−1(1+e−in)2=y(1−y)
學習的過程:神經網絡在外界輸入樣本的刺激下不斷改變網絡的連接配接權值,以使網絡的輸出不斷地接近期望的輸出。
首先信号的正向傳播,判斷輸出與期望誤差是否在合理空間内,不在則誤差反向傳播,直到誤差合理或達到最大學習次數。
學習的本質:對各連接配接權值的動态調整
學習規則:權值調整規則,即在學習過程中網絡中各神經元的連接配接權變化所依據的一定的調整規則。
學習的類型:有導師學習
核心思想:
- 1、将輸出誤差以某種形式通過隐層向輸入層逐層反傳
- 2、将誤差分攤給前面各層的所有單元,得到各層單元的誤差信号
- 3、計算并修正各單元的權值
2.2 BP網絡的标準學習算法
網絡結構:輸入層有n個神經元,隐含層有p個神經元, 輸出層有q個神經元
變量定義:
輸入向量: x=(x1,x2,⋯,xn)
隐含層輸入向量: hi=(hi1,hi2,⋯,hip)
隐含層輸出向量: ho=(ho1,ho2,⋯,hop)
輸出層輸入向量: yi=(yi1,yi2,⋯,yiq)
輸出層輸出向量: yo=(yo1,yo2,⋯,yoq)
期望輸出向量: do=(d1,d2,⋯,dq)
輸入層與中間層的連接配接權值: wih
隐含層與輸出層的連接配接權值: who
隐含層各神經元的門檻值: bh
輸出層各神經元的門檻值: bo
樣本資料個數: k=1,2,⋯m
激活函數: f(⋅)
誤差函數:
e=12∑o=1q(do(k)−yoo(k))2
第一步,網絡初始化
- 給各連接配接權值分别賦一個區間(-1,1)内的随機數,設定誤差函數e,給定計算精度 ε 和最大學習次數M。
第二步,随機選取第k個輸入樣本及對應的期望輸出
-
x(k)=(x1(k),x2(k),⋯,xn(k))
$${d_o}(k) = \left( {{d_1}(k),{d_2}(k), \cdots ,{d_q}(k)} \right)$$
第三步,計算隐含層各神經元的輸入和輸出
hih(k)=∑i=1nwihxi(k)−bhh=1,2,⋯,p
hoh(k)=f(hih(k))h=1,2,⋯,p
yio(k)=∑h=1pwhohoh(k)−boo=1,2,⋯q
yoo(k)=f(yio(k))o=1,2,⋯q
第四部,利用網絡期望輸出和實際輸出,計算誤差函數對輸出層的各神經元的偏導數 δo(k)
∂e∂who=∂e∂yio∂yio∂who
∂yio(k)∂who=∂(∑hpwhohoh(k)−bo)∂who=hoh(k)
∂e∂yio=∂(12∑o=1q(do(k)−yoo(k)))2∂yio=−(do(k)−yoo(k))yo′o(k)=−(do(k)−yoo(k))f′(yio(k))=Δ−δo(k)
∂e∂who=∂e∂yio∂yio∂who=−δo(k)hoh(k)
第五步,利用隐含層到輸出層的連接配接權值、輸出層的 δo(k) 和隐含層的輸出,計算誤差函數對隐含層各神經元的偏導數 δh(k) 。
∂e∂wih=∂e∂hih(k)∂hih(k)∂wih
∂hih(k)∂wih=∂(∑i=1nwihxi(k)−bh)∂wih=xi(k)
∂e∂hih(k)=∂(12∑o=1q(do(k)−yoo(k))2)∂hoh(k)∂hoh(k)∂hih(k)=∂(12∑o=1q(do(k)−f(yio(k)))2)∂hoh(k)∂hoh(k)∂hih(k)=∂(12∑o=1q((do(k)−f(∑h=1pwhohoh(k)−bo)2))∂hoh(k)∂hoh(k)∂hih(k)
=−∑o=1q(do(k)−yoo(k))f′(yio(k))who∂hoh(k)∂hih(k)=−(∑o=1qδo(k)who)f′(hih(k))=Δ−δh(k)
第六步,利用輸出層各神經元的 δo(k) 和隐含層各神經元的輸出來修正連接配接權值 who(k)
Δwho(k)=−η∂e∂who=ηδo(k)hoh(k)wN+1ho=wNho+ηδo(k)hoh(k)
其中 η 為學習率
第七步,利用隐含層各神經元的 δh(k) 和輸入層各神經元的輸入修正連接配接權值
Δwih(k)=−η∂e∂wih=−η∂e∂hih(k)∂hih(k)∂wih=δh(k)xi(k)wN+1ih=wNih+ηδh(k)xi(k)
第八步,計算全局誤差(訓練集D上所有樣本)
E=1m∑k=1mEk=12m∑k=1m∑o=1q(do(k)−yo(k))2
第九步,判斷網絡誤差是否滿足要求。
當誤差達到預設精度或學習次數大于設定的最大次數,則結束算法。否則,選取下 一個學習樣本及對應的期望輸出,傳回到第三步,進入下一輪學習。
2.3 BP算法的直覺解釋
- 1、當誤差對權值的偏導數大于零時,權值調整量為負,實際輸出大于期望輸出,權值向減少方向調整,使得實際輸出與期望輸出的差減少。
∂e∂who>0
此時 Δwho<0
-
2、當誤差對權值的偏導數小于零時,權值調整量為正,實際輸出少于期望輸出,權值向增大方向調整,使得實際輸出與期望輸出的差減少。
∂e∂who<0
此時 Δwho>0