美文网首页
神经网络的反向传播算法

神经网络的反向传播算法

作者: ArthorMorgan | 来源:发表于2019-03-09 09:38 被阅读0次

    1. 前言


    反向传播算法的简单计算过程


    2. 反向传播算法


    2.1  示例及初始数据


    举例说明反向传播算法的计算流程

    图1  一个用于示例的网络层

    偏置单元(Bias):      b1 = b2 = 1   

    输入单元(Input):     i1 = 0.05    i2 = 0.10

    隐藏单元(Hidden):  h1,  h2           

    输出单元(Output):  o1,  o2

    权重(Weight):W(b1) = 0.35    W(b2) = 0.60   

           W1 = 0.15        W2 = 0.20        W3 = 0.25        W4 = 0.30

           W5 = 0.40        W6 = 0.45        W7 = 0.50        W8 = 0.55

    期望输出(Target Output):T(o1) = 0.01    T(o2) = 0.99

    [ 目标 ]  输入值 i1, i2 ,经过反向传播,使得输出值o1, o2与期望输出T(o1), T(o2)接近

    2.2  算法流程


    第1步:前向传播(计算出输出值 )

    [前向传播的计算公式]

    Logistic Sigmoid函数: g(z)=\frac{1}{1+e^{-z} }

    假设(hypothesis):  z=W^\top x

                                    h(z) = g(z)

                                    h(x)=g(W^\top  x )=\frac{1}{1+e^{W^\top  x} }

    计算出隐藏层单元h1的输出值  同理,计算出隐藏层单元h2的输出值 根据h1, h2的值,依次计算出输出层单元o1, o2的输出值

    [前向传播的输出结果]

    a(h1) = 0.593269992     a(h2) = 0.596884378  

    a(o1) = 0.75136507       a(o2) = 0.77292847

    第2步:反向传播(更新权重)

    [反向传播的计算公式]

    神经网络在(i_{k}  ,T_{k}  )上的均方误差:E_{k} =\frac{1}{2} \sum_{j=1}^l a_{o_{k}}  -T_{o_{k}})^2 

    l为输出单元数, a_{o_{k}}为输出单元值, T_{o_{k}}为期望输出值,\frac{1}{2} 是为后续求导的方便)

    链式法则:\frac{d_{u} }{d_{x}} =\frac{d_{u} }{d_{y}}\cdot \frac{d_{y} }{d_{x}}

    由各输出单元误差E_{o1} ,E_{o2} 计算总误差E_{total} 以权重W5为例,使用链式法则求W5对总误差E_{total} 产生的影响   链式法则示意图 \frac{d E_{total} }{da_{o1} } \frac{d a_{o1} }{dz_{o1} } \frac{d z_{o1} }{dW_{5} } 将以上3个式子结果相乘,得到\frac{d E_{total} }{dW_{5} }

    结合链式法则求导过程中的公式:

    \frac{d E_{total} }{dW_{5} } =-(T_{o1}-a_{o1} )*a_{o1}(1-a_{o1})*a_{o1}

    使用 \delta_{o1} 表示输出层的误差:

     \delta_{o1} =\frac{d E_{total} }{dz_{o1} } =\frac{d E_{total} }{da_{o1} } \cdot \frac{d a_{o1} }{dz_{o1} }

    因此,\frac{d E_{total} }{dW_{5} } 可表达为如下形式:

    \frac{d E_{total} }{dW_{5} } = \delta_{o1} *a_{h1}

    设学习率\alpha 为0.5,更新W5的值:

    W_{5} :=W_{5} -\alpha *\frac{d E_{total} }{dW_{5} } =0.4-0.5*0.082167041=0.35891648

    同理,更新W6, W7, W8的值:

    W_{6} =0.408666186

    W_{7} =0.511301270

    W_{8} = 0.561370121

    相关文章

      网友评论

          本文标题:神经网络的反向传播算法

          本文链接:https://www.haomeiwen.com/subject/qunjpqtx.html