前向多層網絡模型可以追溯到20世紀50年代Rosenblatt提出的具有學習能力的感知機(Percerption)模型,它是一種多層的層狀模型。網絡某一層中的各個神經元接受上一層的輸入信號,通過自己進行處理後,將之輸出到下一層。由於輸入節點和輸出節點可與外界相連,直接受到環境的影響,所以人們常稱之為可見層,或按信息傳播方向稱為輸入層和輸出層。而稱其他不與外界交換信息的中間層為隱層。除輸入層外,其他各層的單個神經元可以有任意個輸入,但隻有一個輸出。前向多層網絡是一種映射網絡,它把m維空間的有界子集A映射到n維空間的有界子集B。
誤差反傳算法最早由Werbos於1974年提出來,由Rumelhart等於1985年進行了推廣,是迄今為止人們認識最為清楚的一種算法。它克服了Minsky等人在1969年列舉的感知機算法的許多缺陷。因而一經出現,立即引起了神經網絡研究工作者的極大興趣,為人們提供了一種新的改善和提高神經網絡能力的有效計算方法。從本質上講,這種算法可以看成是最小二乘法(Least Mean Square, LMS)的推廣。
下麵對前向三層神經網絡和誤差反傳算法加以說明。
2.人工神經網絡拓撲結構
一個前向三層神經網絡的拓撲結構,它由一個輸入層、一個隱層和一個輸出層所組成。當然,隱層可以不止一層。同一層各單元之間不存在相互連接,相鄰層單元之間通過權值進行連接。假設一個輸入模式的維數為m,則網絡輸入層的節點數為m。輸出層節點數與研究對象有關,如果該網絡被用來分類,則輸出節點數一般等於已知的模式類別數。隱層節點數可以根據需要進行選擇。輸入層單元是線性單元,即該層的神經元輸出直接等於輸入。隱層和輸出層各單元的常用的傳遞函數為Sigmoid函數,即若該單元的網絡輸入為x,則輸出為誤差反傳算法的前向多層神經網絡的工作原理是:設訓練集的模式個數為N,其中某一個模式的下標為p,即p=1,2,…,N。當輸入層各單元接受到某一個輸入模式Xp=(x1p,x2p,…,xip,…,xmp),不經任何處理直接將其輸出,輸出後的各變量經加權處理後送入隱層各單元,隱層各單元將接受到的信息經傳遞函數處理後輸出,再經加權處理後送入輸出各單元,經輸出各單元處理後最終產生一個實際輸出向量。這是一個逐層更新的過程,被稱為前向過程。如果網絡的實際輸出與期望的目標輸出之間的誤差不滿足指定的要求,就將誤差沿反向逐層傳送並修正各層之間的連接權值,這稱為誤差方向傳播過程。對於一組訓練模式,不斷地用一個個輸入模式訓練網絡,重複前向過程和誤差反向傳播過程。當對整個輸入訓練集,網絡的實際輸出與期望的目標輸出之間的誤差滿足指定要求時,我們就說該網絡已學習或訓練好了。由於這種網絡前一層各單元的輸入是後一層所有單元輸出的線性加權和,故也稱為線性基本函數(Linear-Basis Function, LBF)神經網絡。
f(x)=11+e-x
3.誤差反傳(BP)算法
BP算法是典型的有教師學習算法,設輸入層和輸出層的節點數分別為m、n,選擇隱層節點數為L。對應於一個輸入模式Xp=(x1p,x2p,…,xip,…,xmp)T,其目標輸出為dp=(d1p,d2p,…,djp,…,dnp)T,p=1,2,…,N,N為訓練集的模式個數。θh為該單元的閾值,Wh=(wh1,wh2,…,whi,…,whm)T(h=1,2,…,L)為連接各輸入單元與第h個隱層單元之間的權重,則第h個隱層單元的輸入為
Φ(Xp,Wh)=∑mi=1xipwhi-θh
則第h個隱層單元輸出為
zhp=fΦ(Xp,Wh)=11+e-Φ(Xp,Wh)
θj為該單元的閾值,Wj=(wj1,wj2,…,wjh,…,wjL)(j=1,2,…,n)為連接各隱層單元與第j個輸出單元之間的權重,則第j個輸出單元的輸入為
Φ(Zp,Wj)=∑Lh=1zhpwjh-θj
圖3-9第h個隱層單元放大圖圖3-10第j個輸出單元放大圖第j個輸出單元的輸出為
yjp=fΦ(Zp,Wj)=11+e-ΦZp,Wj
於是,第j個輸出單元的實際輸出與目標輸出之間的差為
Δjp=djp-yjp
對模式Xp,網絡的實際輸出與目標輸出之差的平方和為
Ep=12∑nj=1Δ2jp=12∑nj=1(djp-yjp)2
式中12是為了使後續求導運算變得簡捷而設的,對訓練集中的所有模式,網絡的實際輸出與目標輸出之差的總平方和為
E=12∑Np=1Ep=12∑Np=1∑nj=1Δ2jp=12∑Np=1∑nj=1(djp-yjp)2
E即為誤差函數,根據鏈式求導法則,得
Ewjh=∑Np=1 Ep yjp yjpwjh=-zjh∑Np=1(djp-yjp)yjp(1-yjp)
Ewhi=∑Np=1∑nj=1Epyjpyjpzhpzhp〖〗whi=-∑Np=1∑nj=1(djp-yjp)yjp(1-yjp)wjhzhp(1-zhp)xip
BP算法的實質是利用梯度下降算法,使權值沿誤差函數的負梯度方向改變,這就是所謂的δ學習規則。用公式表示就是
Δw=-ηEw
式中η——學習因子
在實際應用中,考慮到學習過程的收斂性,η的取值不宜過大。η的值越大,意味著每次權值的改變越劇烈,可能會導致學習過程發生振蕩,但η的值也不宜太小,太小易使收斂速度變慢,因此,為了使學習因子η的值盡可能大一些,又不至於產生振蕩,通常在權值修正公式中再增加一個勢態項,於是,權值修正公式可表示為
wjh(t+1)=wjh(t)-ηEwjh+αwjh(t)-wjh(t-1)
whi(t+1)=whi(t)-ηEwhi+αwhi(t)-whi(t-1)
式中t——迭代次數
α——常數,稱為動態因子,它表示上一次學習的權值變化對本次權值更新的影響程度,權值修正是在誤差向後傳播過程中逐層進行的,當網絡的所有權值都被更新一次後,我們說網絡經過了一次學習周期
4.BP算法的步驟
(1)初始化網絡的權值,一般取[0,1]區間的隨機值。選擇網絡的學習參數如最大迭代次數T、允許誤差ε、學習因子η和動態因子α;
(2)前向傳播過程:對於給定的模式,計算網絡的是輸出,並與目標輸出進行比較,如果兩者之間的誤差超過允許誤差,則轉向後傳播過程;
(3)反向傳播過程:根據網絡的實際輸出與目標輸出之間的誤差,計算誤差梯度,並據此修正權值和閾值;
(4)重複第(2)步和第(3)步,直至網絡收斂到允許誤差範圍內或迭代次數達到最大次數為止。
5.網絡性能的測試
前向多層神經網絡采用BP算法進行學習時,不僅需要一個訓練集,而且還要有一個評價其訓練效果的測試集。訓練集和測試集都來源於同一研究對象的由輸入目標輸出對構成的集合。訓練集用於訓練網絡,使網絡按照BP算法調整其權值和閾值,以達到指定的要求;而測試集則是用來評價已訓練好的網絡性能。如果已訓練好的網絡對測試集效果很差,那麼,則是訓練集或測試集不具代表性。