反向傳播四公式:
反向傳播的最終目的是求得使代價C最小時w、b的最佳值,為了方便計算引入了神經單元誤差δ_j^l,其定義為誤差C關於某個神經單元z的關系;
其定義如上所示,某神經元誤差為代價C(總誤差)關於z的偏導數,其中l為神經網絡的層數,j為第幾個神經元;
這里的代價函數(損失函數)使用的是平方誤差,因此C等於:
BP1
此公式用於求神經網絡最后一層神經元的誤差,下面通過BP1公式用於求最后一層神經元(輸出層)中第一個神經元的誤差;
根據鏈式法則由此可得到上訴四個公式中得前面BP1
BP1中得L為神經網絡得最后一層,而在我們此網絡中最后一層為3,所以此處L=3;
BP2
BP2與BP1類似,不同得是BP1用於求最后一層神經元誤差,而BP2則是用於求L層前面某一層得神經元誤差,下面通過BP2公式用於求第二層神經元中的第一個神經元的誤差;
同樣我們也可通過鏈式法則得出:
有:
因此可以得:
將公式轉換為矩陣模式,第2層神經元得誤差為:
我們將BP1與BP2帶入即可得到BP3與BP4;
通過BP1與BP2公式即可通過BP3、BP4輕松得到w與B;
BP3
此公式用於求誤差C關於某個權重的偏導數,在求得BP2后此處只需吧BP2帶入到公式即可求得BP3;
BP4
求誤差C關於偏置b的偏導數,BP4與BP3一樣得到BP2即可帶入得出BP4;
反向傳播算法給出了一種用於計算代價函數(損失函數)梯度得方法,具體步驟如下:
數據計算
一、前向傳播
1、計算第二層
矩陣形式:
2、計算第三層
矩陣形式:
二、計算誤差
當前使用的為平方損失函數(代價函數);
三、計算輸出層神經元誤差
矩陣形式:
輸出層第一個神經元誤差δ_1^3:
輸出層第一個神經元誤差δ_2^3:
四、計算其余層神經元誤差
矩陣形式:
五、計算誤差C關於w、b的梯度
此處用的是BP3與BP4公式,在計算出BP1與BP2后將其帶入到公式中即可計算出C關於w、b的梯度;
矩陣形式:
矩陣形式:
更新w、b公式:
在計算出誤差C關於每個權重每個偏置的偏導數后再使用得到的值帶入上述公式更新每一個w、b即可,在更新完成w、b后如誤差達到指定精度或epochs則繼續執行上述的2-5步驟直到誤差滿意或指定epochs為止;