BP神经网络数学推导

一. 前情提要

神经网络一种求解W权值的算法,分为正向传播(FP)求损失,反向传播(BP)回传误差,根据误差值求解权值W梯度更新其权重,反复迭代,直到找到W最优解(不考虑局部最优)。

本次使用单层神经网络进行推导,隐藏层与输出层的激活函数使用Sigmoid,损失使用均方差MSE,使用梯度下降优化损失函数并求解权值W。

单层神经网络结构如下:其中H(x)为激活函数Sigmoid,S(x,w)为求和函数,x1,x2为样本输入,b为截距(暂不参与计算,权值计算与w一样),w1~w12为权值。HidNeuro1,HidNeuro2,HidNeuro3,分别为隐层的三个神经元,OutNeuro1,OutNeuro2为输出层神经元。Neurout1,Neurout2,Neurout3为隐层输出,Out1,Out2为预测值。Rout1,Rout2为真实值。

二.FP正向传播

在进行第一次迭代时,算法会随机初始化一组w权值,w服从正态分布。

对于隐层神经元HidNeuro1,HidNeuro2,HidNeuro3:

S_{neu1} =  x_{1}w_{1}+x_{2}w_{4}

S_{neu2} = x_{1}w_{2} + x_{2}w_{5}

S_{neu3} = x_{1}w_{3} + x_{2}w_{6}

通过激活函数Sigmoid非线性转换后:

       Neurout1 = H(S_{neu1}) = \frac{1}{1 + e^{-S_{neu1}}}

       Neurout2 = H(S_{neu2}) = \frac{1}{1 + e^{-S_{neu2}}}

       Neurout3 = H(S_{neu3}) = \frac{1}{1 + e^{-S_{neu3}}}

 

       对于输出层神经元OutNeuro1,OutNeuro2

       S_{outNeu1} = Neurout1*w_{7} + Neurout2*w_{9} + Neurout3*w_{11}

       S_{outNeu2} = Neurout1*w_{8} + Neurout2*w_{10} + Neurout3*w_{12}

       通过Sigmoid转换后:

       Out_{1} = H(S_{outNeu1}) = \frac{1}{1 + e^{-S_{outNeu1}}}

       Out_{2} = H(S_{outNeu2}) = \frac{1}{1 + e^{-S_{outNeu2}}}

      则输出层两个神经元误差分别为:

      E_{outNeu1} = \frac{1}{2}( Rout_{1} - Out_{1})^{2}

     E_{outNeu2} = \frac{1}{2}(Rout_{2} - Out_{2})^{2}

      总损失为:

     E_{total} = E_{outNeu1} + E_{outNeu2}

三.BP反向传播

现在使用梯度下降优化E_{total},使得损失在足够小的情况下,更新w权值。因此会对w求偏导。假定梯度下降学习率为\eta

w_{7}为例,来推导他的更新过程。

要求解的目标为:\frac{\partial E_{total}}{\partial w_{7}}

从分式看出,E_{total}w_{7}无直接关系,但是E_{total}E_{outNeu1}有关,而E_{outNeu1}Out_{1}有关,在Out_{1}S_{outNeu1}有关,最后S_{outNeu1}w_{7}有关。根据链式求导法则,能推出:

\frac{\partial E_{total}}{\partial w_{7}} = \frac{\partial E_{total}}{\partial E_{outNeu1}}\cdot \frac{\partial E_{outNeu1}}{\partial Out_{1}}\cdot \frac{\partial Out_{1}}{\partial S_{outNeu1}}\cdot \frac{\partial S_{outNeu1}}{\partial w_{7}}

化简后得出:

\frac{\partial E_{total}}{\partial w_{7}} = (Out_{1}-Rout_{1})Out_{1}(1-Out_1)Neurout_{1}

算出梯度后,则可更新w_{7}

w_{7}^{+} = w_{7} - \eta \frac{\partial E_{total}}{\partial w_{7}}

同理可得出隐层到输出层的其他权值w_{8},w_{9},w_{10},w_{11},w_{12}

对于输入层到隐层的权值w_{1},w_{2},w_{3},w_{4},w_{5},w_{6}该怎么求偏导呢?根据图上观察,w_{1}S_{neu1}有关,S_{neu1}与Neurout1有关,然后Neurout1与S_{outNeu1},S_{outNeu2}有关,最后S_{outNeu1},S_{outNeu2}Out_{1},Out_{2}分别相关。同理根据链式求导法则,得出:

\frac{\partial E_{total}}{\partial w_{1}} = (\frac{\partial E_{outNeu1}}{\partial Out_{1}}\cdot \frac{\partial Out_{1}}{\partial S_{outNeu1}}\cdot \frac{\partial S_{outNeu1}}{\partial Neurout_{1}} + \frac{\partial E_{outNeu2}}{\partial Out_{2}}\cdot \frac{\partial Out_{2}}{\partial S_{outNeu2}}\cdot \frac{\partial S_{outNeu2}}{\partial Neurout_{1}})\cdot \frac{\partial Neurout_{1}}{\partial S_{neu1}}\cdot \frac{\partial S_{neu1}}{\partial w_{1}}

化简后得出:

\frac{\partial E_{total}}{\partial w_{1}} = [(out_{1}-Rout_{1})Out_{1}(1-Out_{1})w_{7} + (out_{2}-Rout_{2})Out_{2}(1-Out_{2})w_{8}]Neurout_{1}(1-Neurout_{1})x_{1}

即可更新w_{1}:

w_{1}^{+} = w_{1} - \eta \frac{\partial E_{total}}{\partial w_{1}}

 

    

  

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值