如果感覺自己看不懂,那就看看我博客的梯度下降法,博文最后的感知機也算最簡單的BP神經網絡吧,用的也是反饋(w,b):典型梯度下降法
BP網絡的結構
BP網絡的結構如下圖所示,分為輸入層(Input),隱含層(Hidden),輸出層(Output)。
輸入層的結點個數取決於輸入的特征個數。
輸出層的結點個數由分類的種類決定。
在輸入層和輸出層之間通常還有若干個隱含層,至於隱含層的個數以及每個隱含層的結點個數由訓練工程師的經驗來人為設定。
鏈接A曾提到由萬能逼近定理,一般一個隱含層就足夠了。且這個隱含層一般結點個數為: 。
其中:I為輸入層結點個數,O為輸出層結點個數,a為1~10范圍內的調節常數。
就車牌識別中識別數字0~9的BP網絡來說:輸入層的每個結點就是的待訓練的圖像每種特征,常見的車牌數字識別有從上到下的每個結點縮放成規定大小的0~9數字圖像的每個像素點值。那么輸出的結點就只有0~9十個結點。
輸入層與隱含層的權重矩陣記為:WIK,其中隱含層的每個結點與輸入層的每個結點都相連,輸入層的每個結點與隱含層之間都有一個權重,這樣WIK就是一個I*H的矩陣,同理WHO就是一個H*O的矩陣。
為了便於后續公式的推導以及明確各個參數的意義,這里特地說明,如下圖:
輸入層的結點個數為I,
隱含層的結點個數為H,
輸出層的結點個數為O;
設輸入層有任一結點i,
設隱含層有任一結點k,
設輸出層有任一結點j;
其中結點i與結點k之間的權重為Wik開始訓練前由人為設定初始值;
其中結點k與結點j之間的權重為Wkj開始訓練前由人為設定初始值;
對於輸出層
設結點j的教師信號為Sj,注:教師信號就是實際值(訓練值)
j的當前偏置為Bj開始訓練前由人為設定初始值,
設結點j的初始輸出的結果為yj,
設結點j的最終輸出結果為Yj,
注意:Yj是yj經過激勵函數作用后的值-> Yj = f(yj)
對於隱含層:
隱含層沒有教師信號,
設k的當前偏置為Bk開始訓練前由人為設定初始值;
設結點k的初始輸出的結果為yk,
設結點k的最終輸出結果為Yk,
注意:Yk是yk經過激勵函數作用后的值-> Yk=f(yk)
對於輸入層:
輸入層結點沒有教師信號,沒計算值,沒有閾值,只有一個結點值
結點i的值為Xi,
BP算法思想
激勵函數
下面解釋為什么每個結點要由一開始的輸出結果經過激勵函數處理下:
因為yi其實是由Yi與Bj以及Wij以線性函數的形式得到,而根據整個BP算法設計思想要根據每次結點的輸出來偏微分來調整每個結點的權重來實現訓練目的(這也就是所謂的梯度下降法),這就需要輸出是基於輸入的可微分函數,同時為方便歸一化的比較輸出層每個結點每次輸出的結果,就采用下述兩種激勵函數。
在一般情形下:
下面對他進行求導,后面解釋原理時要用:
則的導數為::
.................... (X1)
前向傳播
在BP神經網絡中,每個節點的輸出值是根據上層所有節點的輸出值、當前節點與上一層所有節點的權值 和 當前節點的閥值 還有 激活函數來實現的。以上圖為例結點k輸出值的計算方法: .............................(X2)
................ ....................... (X3)
以上圖為例結點j輸出值的計算方法: ............................(X4)
.............................................(X5)
其中f為激活函數,就是上面求導的那個函數。
其實,正向傳播很簡單,就是結點依次執行這兩個公式,從輸入層到隱含層,從隱含層到輸出層。
返向傳播
在BP神經網絡的輸出層,經過網絡處理的輸入數據的輸出結果與標准結果(教師信號)的誤差可以用如下的公式來衡量::
.............................(X6)
網絡的返向傳播過程就是誤差信號的返向傳播過程,主要目的就是通過反復修正權值和閥值,使得誤差函數值達到最小。而這其中修正權值與閾值的是通過梯度下降法來實現。根據梯度下降法的原理,權值的修正值與誤差函數成正比:
...............................(X7)
對上述公式進行展開與推導:
令:
則: 注:此處少乘以一個α
同樣對於Bj有:
對上述公式進行展開與推導:
同樣令:
則:
由上述公式可以得到輸出層結點j到隱含層的返向傳播的權重W與偏置B的更新策略如下:
下面推導隱含層到輸入層的權重與偏置的梯度:
令:
由上述公式可以得到隱含層結點k到輸入層的返向傳播的權重W與偏置B的更新策略如下: 注:此處少了一個σkj 隱藏層到輸出層的學習因子
在實際的訓練中BP就是不停的迭代實現前向傳播與返向傳播來修正權重與偏置,得到最終的網絡。
在實際的BP網絡測試中,對於一個測試目標提取輸入層需要的特征作為輸入層結點的值,用上面訓練好的網絡來進行前向傳播,最終輸出結點處的值最大的結點,就是這個測試目標的分類。
轉載自:http://blog.csdn.net/lanxuecc/article/details/51754838#t0
http://blog.csdn.net/acdreamers/article/details/44657439