對3層神經網絡結構推導,求出它的參數,以及每層需要計算的參數和數量。
說明:本次總結的圖片來自周志華老師的課件。
單個節點的神經元 
圖中給出了輸入到某一個隱藏層單一節點的過程
一個完整的神經網絡結構如下:

整體結構: 輸入層節點d個,隱藏層節點q個,輸出層節點l個
各層的權重定義如下: 輸入層到隱藏層: V vih 表示 第i個輸入層節點 ——> 第h個隱藏層節點 隱藏層到輸出層:W whj 表示第h個隱藏層節點 ——> 第j個輸出層節點
各層的值 第h個隱藏層的輸入定義如下: αh=∑i=1dvihxi
第j個輸出層神經元的輸入定義如下: βj=∑h=iqwhjbh
對于給定的數據集(x1,y1),(x2,y2),...,(xn,yn)
全局的均方誤差為:
對于第k個樣本在輸出層的第j個節點上的輸出結果為:
y^kj
那么,對于一個樣本來說,整體的均方誤差為: Ek=12∑j=1l(y^kj?ykj)2
參數的更新
基于梯度下降法來進行更新: 激活函數為 f 這里f為給定的表示符號,可代指所有符合條件的激活函數。不過,本博文設置的激活函數為sigmoid,即f(x)=11+e?x
學習率為 η
對權重w和v的更新,遵循先w后v,原因是先更新靠近輸出的權重,w是屬于靠近輸出層的權重。
w<=w+Δw v<=v+Δv
對w的更新
這里,Δw=?η?Ek?whj
由于whj先影響第j個輸出層神經元的輸入值βj,再影響到它的輸出值y^kj,最后是Ek
由鏈式法則,
?Ek?whj=?Ek?y^kj??y^kj?βj??βj?whj
又:
?βj?whj=bh
設 gj=??Ek?y^kj?y^kj?βj
于是, gj=?(y^kj?ykj)f′(βj?θj)=y^kj(1?ykj)(ykj?y^kj)
進一步,
?Ek?hj=gj?bh
從而,
Δwhj=η?gj?bh
更新: whj=whj+η?gj?bh
對隱藏層閾值θ的更新
對θ更新的規則: θ<=θ+Δθ
這里,
Δθj=?η?Ek?θj
對于,
?Ek?θj=?Ek?y^kj?y^kj?θj
進一步,
?Ek?θj=12?2?(y^kj?ykj)?y^kj?(?1)?(1?y^kj)=?y^kj?(1?y^kj)?(y^kj?ykj)
從而,
θj+1=θj+η?y^kj?(1?y^kj)?(y^kj?ykj)
對輸入層權重v的更新
更新規則: v<=v+(?η?Ek?v)=v+Δv
對于,
Δvih=?η?Ek?vih
進一步,
?Ek?vih=∑j=1l?Ek?y^kj?y^kj?bh?bh?vih
由, ?y^kj?bh=y^kj?βj?βj?bh=y^kj(1?y^kj)whj
于是,
?Ek?vih=bh(1?bh)∑j=1lwhjy^kj(1?y^kj)(ykj?y^kj)
v的更新為:
vj+1=vj+bh(1?bh)∑j=1lwhjy^kj(1?y^kj)(ykj?y^kj)
參數有:
權重: vih d*q 個 whj q*l個 隱藏層閾值 q個 輸出層閾值 l個
合計: (d+l+1)*q + l