码迷,mamicode.com
首页 > 其他好文 > 详细

第二节,神经网络中反向传播四个基本公式证明——BackPropagation

时间:2018-03-10 00:24:15      阅读:514      评论:0      收藏:0      [点我收藏+]

标签:gpo   计算   样本   神经网络   href   神经网络结构   误差   image   结构图   

参考文章

神经网络基础

Neural Networks and Deep Learning.       Michael A. Nielsen

 一文弄懂神经网络中的反向传播法:讲的很详细,用实例演示了反向传播法中权重的更新过程,但是未涉及偏置的更新

 

假设一个三层的神经网络结构图如下:

技术分享图片

对于一个单独的训练样本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

 

      

    

第二节,神经网络中反向传播四个基本公式证明——BackPropagation

标签:gpo   计算   样本   神经网络   href   神经网络结构   误差   image   结构图   

原文地址:https://www.cnblogs.com/zyly/p/8532368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!