# 多層神經網絡BP算法解釋
## 前向傳播
***
* 該項目採用反向傳播算法描述了多層神經網絡的教學過程。 爲了說明這個過程,使用了具有兩個輸入和一個輸出的三層神經網絡,如下圖所示:
- 每個神經元由兩個單元組成。
- 第一單元添加權重係數和輸入信號的乘積。
- 第二個單元實現非線性功能,稱爲神經元激活功能。
- 信號 e 是加法器輸出信號.
- y=f(e) 是非線性元件的輸出信號。
- 信號 y 也是神經元的輸出信號。
- 訓練數據由(期望輸出)z 和輸入信號 x1 和 x2 組成。
- 神經網絡訓練是一個迭代過程。 在每次迭代中,使用來自訓練數據集的新數據來修改節點的權重係數 w 。
- 使用下面描述的算法計算修改:每個教學步驟從強制來自訓練集的兩個輸入信號開始。 在此階段之後,我們可以確定每個網絡層中每個神經元的輸出信號值。
- 下面的圖片說明了信號如何通過網絡傳播,符號w(xm)n 表示輸入層中網絡輸入xm 和神經元n 之間的連接權重。 符號yn 表示神經元n 的輸出信號。
y1=f1(w(x1)1∗x1+w(x2)1∗x2)
y2=f2(w(x1)2∗x1+w(x2)2∗x2)
y3=f3(w(x1)3∗x1+w(x2)3∗x2)
* 其中
f() 函數可以是
sigmod 函數
ex.f(z)=11+e−z
/div>
***
* 通過隱藏層傳播信號。
* 符號
wmn 表示下一層中神經元
m 的輸出與神經元
n 的輸入之間的連接的權重。
## BP網絡
***
* 將神經網絡的輸出信號
y^ 與在訓練數據集中找到的真實值(
y )進行比較。 該差異被稱爲輸出層神經元的誤差信號
δ 。
δ=y−y^
與下圖片對應關係爲
y=z ,
y^=y
- 獲得每個神經元的誤差信號後,可以利用誤差來修改每個神經元輸入節點的權重係數。
- 下面的公式
∂(δ2)∂e=∂(y−y^)2∂e=−(y−y^)∗y^∗(1−y^)
表示神經元激活函數的導數 殘差 。
- δ2 即爲 損失函數
- 又因爲對dedθ 有
dedθ=∂θTx∂θ=x
- 由於鏈式法則:
∂(δ2)∂θ=∂(y−y^)2∂ededθ=−(y^−y)∗y^∗(1−y^)∗x=−δ∗y^∗(1−y^)∗x
y^ 表示輸出值
- y 表示真實值
- x 代表上一層的輸出或者原始的輸入
- δ 表示誤差 這裏用到了上一節BP中的假設
- 通過這部分化簡,我們利用誤差δ 代替了的y−y^ 從而避開了隱藏層中的未知量y
- 最後利用標準的* 梯度下降公式*:
w^=w−η∗∇=w+η∗δ∗y^∗(1−y^)∗x=w+η∗δ∗∂y∂e∗x
轉載請註明出處,csdn的markdown還是很迷的。
參考
參考資料來源