BP神经网络

本文深入解析BP神经网络的工作原理,包括前馈神经网络的数据信息前向传播和BP算法的误差反向传播。通过数学推导,阐述了如何利用随机梯度下降算法动态更新网络权重,以使网络输出接近期望值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BP神经网络由两部分组成

  • 前馈神经网络:神经网络是前馈的,其权重都不回送到输入单元,或前一层输出单元(数据信息是单向传播的,不会回流),区别于循环神经网络RNN。
  • BP算法(Back Propagation):误差反向传播算法,用于更新网络中的权重。
  • BP神经网络思想:

    表面上:1. 数据信息的前向传播,从输入层到隐含层,最后到输出层。2. 误差的反向传播:输出结果与真实结果的误差值,从输出层传递到隐含层,最后到输入层。
    本质上:针对每个输入样本,采用随机梯度下降算法,动态更新网络中的权重和偏倚,以使网络的输出不断地接近期望的输出。

  • 这里写图片描述


  • 首先在BP神经网络模型中我们讨论前向传播,对于一个L层的BP神经网络,其输入层为第1层,输出层为第L层,隐藏层为第2层到第L-1层。对于输出层的第k个神经元,其输出为O_{k}^{L},下标k表示第k个,上标L表示层数,输入为I_{k}^{L}。第l层包含的神经元个数用\left| l\right|表示。

  • 在下面的表述中为了描述的更加清楚我将不使用阈值\theta(可以理解为内部偏置),即第l层的第j个神经元的输入I_{j}^{l}与第l-1每个神经元的输出关系如下所示,其中w_{ji}^{l-1}表示第l层第j个神经元与第l-1层第个经元的链接权重。

  • (也就是说下一层某一神经元的输入来源于上一层每一个神经元的输出与权重加权和

  • 而输出O_{j}^{l} = f(I_{j}^l)f为激励函数。

  • 一般来说在神经网络中我们选择的激励函数f是指sigmoid函数,即f=\frac{1}{1+e^{-x} }

  • 可以更好的拟合非线性函数,且有

  • f^{'} =f\cdot (1-f),即\frac{\partial O_{j}^{l} }{\partial I_{j}^{l}}= O_{j}^{l}\cdot (1-O_{j}^{l})


  • 这里的反向误差减小采取更改权重值

  • E为损失函数,偏导也就是梯度,乘以的系数为步数,类似于SGD

  • 这里给出的也就是梯度下降的方向

  • 引入新变量梯度\delta,对于第l层第j个神经元的梯度\delta _{j}^{l},我们定义其值为\delta _{j}^{l} =-\frac{\partial E}{\partial I_{j}^{l} }(***)

  •  

看输出层,即第L层,由于权重w_{kj}^{L-1}只对输出层的第k个单元产生影响,即只影响O_{k}^{L},所以我们直接求导

(M)

前面已知,所以可以到(G1)

(                   备注:看到这有人忘了O是什么了,O是某一层某一神经元的输出

变形也就是=

前面提到的这个是说上一层神经元的输入乘以权重之和也就是下一层某一神经元的输入                 )

 

下面尝试把梯度\delta _{j}^{l} =-\frac{\partial E}{\partial I_{j}^{l} }(***)给表示出来

根据sigmoid函数求导公式我们可以得到\frac{\partial O_{k}^{L}}{\partial I_{k}^{L}},而误差E所示,所以我们可以得到\frac{\partial E}{\partial O_{k}^{L}},最后便得到了第L层的每个神经单元的梯度项\delta _{k}^{L}

(G2)(两个G结合继续简化)


接下来是隐藏层

,这里对\Delta w_{kj}^{L-2}进行推导,其他隐藏层以及输入层类似,显然w_{kj}^{L-2}虽然只影响第L-1层的第j个单元,但L-1层的第j个单元却链接了输出层的所有单元,所以w_{kj}^{L-2}对输出层的每一个单元都产生了影响。我们需要在求导的时它对输出层单元的每个误差的影响进行叠加,与输出层类似部分就不再累述。类似于上述M,得到下面关于L-2层的权重偏导

对于第L-1层的第j个神经单元的梯度项\delta _{j}^{L-1}来说,由于这个神经单元链接了输出层的每个单元,所以我们需要对输出层\left| L \right|个单元求和,于是便得到了梯度项\delta _{j}^{L-1}的计算公式

结合上述G2对比,发现这里到L层的输入跑了一遍,就是为了达到求和的目的,因为影响到了L层的全部

所以便得到了L-2层与L-1层的链接权重w_{kj}^{L-1}更新公式

(与G1类似,区别在于的过程有区别)


输出层EO^{L}(损失函数求导)求导,O^{L}I^{L}(激活函数求导)求导,I^{L}再对w(上一层的输出)求导(其中EO^{L}I^{L}表示其计算公式)

这样思考(E为L的损失函数,哪里找损失原因,看L层的输出,L层输出哪来的,L层的输入通过激活函数来的,那么输入怎么来的,上一层的输出通过w权重来的)

隐层就是判断一下求和的操作

也就是强行到下一层的输入跑了一遍,来表示影响了下一层的全部输出(输出来源于输入)

再次表明(梯度就是损失值与输入的偏导),这一层的输入表示不了,我们跑一下输出来表示

隐层再跑一下下一层输入来表示影响全部


算法实验待更

到了再说

引用:https://zhuanlan.zhihu.com/p/24068284

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值