1. 程式人生 > >深度學習基礎:反向傳播即BP演算法的推導過程

深度學習基礎:反向傳播即BP演算法的推導過程

BP演算法簡單的來說就是根據神經網路實際的輸出和目標輸出(也就是輸入樣本對應的標記)之間的誤差計算神經網路各個權值的過程。

下面的推導過程參考了《神經網路設計》 Martin T. Hagan等著 戴葵等譯。

採用BP演算法從輸出層、經過隱層再到輸入層進行層層計算的原因是如果直接計算誤差函式相對於各權值的偏導很難得到顯式的表達函式(最小均方演算法或Widrow-Hoff學習演算法),採用從後向前遞推的方式大幅度的利用了前期的計算值,也使得網路具備了更多的靈活性。

使用均方誤差作為效能指數,那麼優化演算法的目標就是調整網路的引數使得均方誤差最小化。那麼根據最速下降演算法的原理,第k次迭代計算得到的權值和偏移如下:

其中,m是層序號,i是神經元在層中序號,j則是一個神經元的輸入的序號,是均方誤差。

前面就提到了,求這兩個偏導是很困難的事情,因此可以使用鏈式法則從最後一層向前計算。根據鏈式法則,可以將偏導分解如下:

其中是m-1層神經元的輸出。

乘號後面的偏導數很容易求得,,也就是上一層神經元的輸出,。因此重要的是求出

很難直接求出,那麼也就考慮能不能夠用鏈式法則類似的遞推方式解決,但是注意這裡面,每一層裡面有多個神經元,而每個神經元都與上一層裡面的多個神經元相連,因此,像下面的這個表示式是錯誤的,因為鏈式法則要求偏導的拆分,必須保證這個能夠完全用中間變數表示,而應該是一個向量。從直觀上考慮,m層和m+1層的神經元個數也不一樣,所以也不能這樣表示。

因此,採用矩陣的表示方法來表示神經元的計算,如下面這個圖所示。

經過一系列推導可以得到,敏感性(《神經網路設計》這本書中的例子)

的表示式(注意這是個向量),應該是,這裡面的是一個對角陣,其對角線的元素對應的是m層上的每個神經元啟用函式對應其輸入的導數。

對於BP演算法來說,最後一層的計算(第M層)是所有計算的開始。其矩陣形式的表示式為。這裡面存在一個係數2,是因為使用的是均方誤差,平方求導會有係數2.

因此如果用矩陣形式表示,那麼權值和偏置值更新的表示式是:

因此,總的說來,反向傳播演算法需要用到的資料是:

1. 學習率

2. 啟用函式相對於其輸入的導數,用於計算

3. 上一層神經元的輸出

4. 每次迭代的權值和偏移