第二節,神經網絡中反向傳播四個基本公式證明——BackPropagation


假設一個三層的神經網絡結構圖如下:

對於一個單獨的訓練樣本x其二次代價函數可以寫成:

          C = 1/2|| y - aL||2 = 1/2∑j(yj - ajL)2

          ajL=σ(zjL)

          zjl = ∑kωjklakl-1 + bjl

代價函數C是ajL的函數,ajL又是zjL的函數,zjL又是ωjkL的函數,同時又是akL-1的函數......

證明四個基本方程(BP1-BP4),所有這些都是多元微積分的鏈式法則的推論

            δjL = (∂C/∂ajL)σ'(zjL)                                                         (BP1)

             δjl = ∑ωkjl+1δkl+1σ'(zjl)                                                    (BP2)

      ∂C/∂ωjk= δjlakl-1                                                                           (BP3)

              ∂C/∂bj= δjl                                                                                      (BP4)

           

1.讓我們從方程(BP1)開始,它給出了輸出誤差δL的表達式。

            δjL = ∂C/∂zjL

    應用鏈式法則,我們可以就輸出激活值的偏導數的形式重新表示上面的偏導數:

              δjL = ∑(∂C/∂akL)(∂akL/∂zjL)

    這里求和是在輸出層的所有神經元k上運行的,當然,第kth個神經元的輸出激活值akL只依賴於當k=j時第jth個神經元的帶權輸入zjL。所以當k≠j

    時,∂akL/∂zjL=0。結果簡化為:

               δjL = (∂C/∂ajL)(∂ajL/∂zjL)

    由於ajL=σ(zjL),右邊第二項可以寫成σ'(zjL),方程變成

                δjL = (∂C/∂ajL)σ‘(zjL)

 

2.證明BP2,它給出了下一層誤差δl+1的形式表示誤差δl。為此我們要以δkl+1=∂C/∂zkl+1的形式重寫 δjl = ∂C/∂zjl

              δjl = ∂C/∂zjl

                   =∑(∂C/∂zkl+1)(∂zkl+1/∂zjl)

                  =∑(∂zkl+1/∂zjlkl+1

     這里最后一行我們交換了右邊的兩項,並用δkl+1的定義帶入。為此我們對最后一行的第一項求值,

     注意:

             zkl+1 = ∑jωkjl+1ajl + bkl+1 =  ∑jωkjl+1σ(zjl) + bkl+1 

     做微分得到

            ∂zkl+1 /∂zjl = ωkjl+1σ'(zjl)

     帶入上式:

            δjl = ∑ωkjl+1δkl+1σ'(zjl)

 

3.證明BP3。計算輸出層∂C/∂ωjkL:

            ∂C/∂ωjkL = ∑m (∂C/∂amL)(∂amL/∂ωjkL )

     這里求和是在輸出層的所有神經元k上運行的,當然,第kth個神經元的輸出激活值amL只依賴於當m=j時第jth個神經元的輸入權重ωjkL。所以當k≠j

   時,∂amL/∂ωjkL=0。結果簡化為:

      ∂C/∂ωjkL = (∂C/∂ajL)(∂ajL/∂zjL)*(∂zjL/∂ωjkL)

                         = δjLakL-1

       計算輸入層上一層(L-1):

           ∂C/∂ωjkL-1= (∑m(∂C/∂amL)(∂amL/∂zmL)(∂zmL/∂ajL-1))(/∂ajL-1/∂zjL-1)(∂zjL-1/∂ωjkL-1)

                           = (∑mδmLωmjL)σ'(zjL-1)akL-2

                           = δjL-1akL-2

      對於處輸入層的任何一層(l):

            ∂C/∂ωjkl = (∂C/∂zjl )(∂zjl/∂ωjkl ) = δjlakl-1

 

4.證明BP4。計算輸出層∂C/∂bjL:

            ∂C/∂bjL = ∑m (∂C/∂amL)(∂amL/∂bjL )

     這里求和是在輸出層的所有神經元k上運行的,當然,第kth個神經元的輸出激活值amL只依賴於當m=j時第jth個神經元的輸入權重bjL。所以當k≠j

   時,∂amL/∂bjL=0。結果簡化為:

      ∂C/∂bjL = (∂C/∂ajL)(∂ajL/∂zjL)*(∂zjL/∂bjL)

                         = δjL

       計算輸入層上一層(L-1):

           ∂C/∂bjL-1= (∑m(∂C/∂amL)(∂amL/∂zmL)(∂zmL/∂ajL-1))(/∂ajL-1/∂zjL-1)(∂zjL-1/∂bjL-1)

                           = (∑mδmLωmjL)σ'(zjL-1)

                           = δjL-1

      對於處輸入層的任何一層(l):

            ∂C/∂bj= (∂C/∂zjl )(∂zjl/∂bjl) = δjl

參考文獻

[1]]神經網絡基礎

[2]Neural Networks and Deep Learning.       Michael A. Nielsen

[3] 一文弄懂神經網絡中的反向傳播法

[4]深度神經網絡(DNN)反向傳播算法(BP)

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM