BP神經網絡反向傳播算法一步一步實例推導(Backpropagation Example)

中文技術博客上描述的反向傳播算法有一些跳躍性非常大,對於理解神經網絡乃至深度學習的過程非常不利,我在網上找到一篇Backpropagation 的推導過程實例(https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/),寫得明白透徹,按照最典型的梯度下降算法來進行推導,現將學習過程記錄如下。

1. loss 函數的優化

籠統來講:

設計loss函數是爲了衡量網絡輸出值和理想值之間的差距,儘管網絡的直接輸出並不顯式的包含權重因子,但是輸出是同權重因子直接相關的,因此仍然可以將loss函數視作在權重因子空間中的一個函數。

可以將loss 記爲E(w),這裏爲了便於說明,省去了偏值項,正則項等等,僅僅將loss認爲是w的函數,

訓練網絡:

對網絡訓練的目標在數學上的顯示錶現就是使得loss取值最小化,這個問題就變成了在權重空間w中求loss全局極值的一個優化問題,對於這種問題,通常的解決方案是對loss求w的偏導

2. 鏈式推導過程

假定如下圖示的神經元結構: 

很顯然對於E的w偏導數,可以利用鏈式法則得到如下表示:(根據上述引用材料的記載Etotal由out1和out2構成,具體數值由材料所給出)

  

outo1是由sigmoid**函數給出,因此如下所示:

由上圖所示:

此時可以得到關於E和w5的偏導公式的各個組元,然後將數據代入,可以得到偏導數的值

在往常的一些記載中會使用如下的記法來表示:

所以最終的偏導可以記爲:

根據梯度下降算法的思路,爲了修正w5,認爲對w5的更新項,應當如下式表示:

其中偏導前的係數爲人爲設置的常數,就是常說的學習率,這裏設置爲0.5,這樣整個迴路就完成了對權重因子w5的更新

有了以上的實例,再看UFDL 的介紹就更加明白了(http://deeplearning.stanford.edu/wiki/index.php/Backpropagation_Algorithm