本來想寫人工神經網路,但是範圍太廣,無法駕馭,姑且就先寫bp吧,因為bp是目前應用最廣泛的神經網路模型之一。
人工神經網路(ann)的研究在一定程度上收到了生物學的啟發,因為生物的學習系統是有相互連線的神經元(neuron)組成的異常複雜的網路。而人工神經網路與此大體相似,它是由一系列簡單神經元相互密集連線構成,其中每乙個神經元有一定數量的實值輸入(也可以是其他神經元的輸出),並產生單一的實數輸出(可能成為其他很多神經元的輸入)。
下圖是乙個人工神經元模型,可以幫助理解:
其中:x1~xn是從其他神經元傳來的輸入訊號,wij表示從神經元j到神經元i的連線權值,θ表示閾值(threshold),f為啟用函式,yi為神經元i輸出。
ann適合具有以下特徵的問題:
1.例項是用很多「屬性-值」對表示的;
2.目標函式的輸出可能是離散值、實數值或者由若干實數屬性或離散屬性組成的向量;
3.訓練資料可能包含錯誤;
4.可容忍長時間的訓練;
5.可能需要快速求出目標函式值;
6.人類能否理解學到的目標函式是不重要的。
與其說這些是適合ann的問題,不如說ann本身特徵如此,適用於這些問題。
bp演算法是一種按誤差逆傳播演算法訓練的多層前饋網路。前饋網路只在訓練過程中會有反饋訊號,而在分類過程中資料只能向前傳送,直到到達輸出層,層間沒有向後的反饋訊號。也就是說,訓練時權值w會根據反饋訊號不斷更新,得到乙個學習機net,而分類的時候直接使用net中訓練好的w,不需要再更新。
1.基本原理
利用輸出後的誤差來估計輸出層的直接前導層的誤差,再用這個誤差估計前一層的誤差,如此一層一層的反傳下去,就獲得了所有其他各層的誤差估計。
2.三層bp網路模型
根據kolrnogorov定理,乙個3層bp神經網路能夠實現對任意非線性函式進行逼近,乙個典型的3層bp神經網路模型如下:
啟用函式必須處處可導,一般都使用s型函式。
4.演算法推導
好吧,到了最為繁瑣也最為重要的一部分,這也能夠區分「會使用」和「真正掌握」。
首先給出一些定義:
輸入層有n個神經元,隱含層有p個神經元,輸出層有q個神經元;
輸入向量:x=(x1,x2,...,xn)
隱含層輸入向量:hi=(hi1,hi2,...,hip)
隱含層輸出向量:ho=(ho1,ho2,...,hop)
輸出層輸入向量:yi=(yi1,yi2,...yiq)
輸出層輸出向量:yo=(yo1,yo2,...yoq)
期望輸出向量:d=(d1,d2,...,dq)
輸入層與隱含層的連線權值:wih
隱含層與輸出層的連線權值:who
隱含層各神經元的閾值:bh
輸出層各神經元的閾值:bo
樣本資料個數:k=1,2,...,m
啟用函式:s型函式
誤差函式:
演算法步驟:
對給予的乙個輸入樣本,計算隱含層各神經元的輸入輸出:
利用網路期望輸出和實際輸出,計算誤差函式對輸出層各神經元的偏導數δo(k):
利用隱含層到輸出層的連線權值、輸出層的δo(k)和隱含層的輸出計算誤差函式對隱含層各神經元的偏導數δh(k):
利用輸出層各神經元的δo(k)和隱含層各神經元的輸出來修正連線權值who(k):
隱含層各神經元的δh(k)和輸入層各神經元的輸入修正連線權wih(k):
計算全域性誤差,判斷網路誤差是否滿足要求。當誤差達到預設精度或學習次數大於設定的最大次數,則結束演算法。否則,選取下乙個學習樣本及對應的期望輸出,進入下一輪學習。
當誤差達到預設精度或學習次數大於設定的最大次數,則結束演算法。否則,選取下乙個學習樣本及對應的期望輸出,進入下一輪學習。
BP神經網路
基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...
BP神經網路
x 為輸入向量,y為隱藏層的神經元,z 為輸出層,d為目標真實值,本文預設 z 不經過sigmod處理。x y的權重為 w,y z的權重為 v yj ix iwij 1 oyi f y j 2 其中激勵函式f x 1 1 e x f x f x 1 f x 3 z k j f yj vjk 此時系統...
BP神經網路
bp是back propagation bp神經網路主要的演算法在於誤差反向傳播error backpropagation 有三層 輸入層 input 隱含層 hidden 輸出層 output 輸入層 n個神經元 隱含層 p個神經元 輸出層 q個神經元 輸入向量 x x1,x2,x n 隱含層輸入...