BP神经网络原理及Python实现

最近刚好在跟着课程一起学TensorFlow,顺道把整个神经网络的理论复习一遍,最后通过Python实现BP算法。

BP神经网网络原理

从个人理解,BP(反向传播)算法主要是一种求解多层“感知器”中连接权重的迭代方法。其基本思想是,学习信号由信号的正向传播和反向传播两个过程组成,输入信号由输入层传入,经过各隐藏层处理后,传出输出层,若输出层的实际输出与期望的输出不符合时,则转入反向传播阶段。误差反穿是将输出误差以某种形式通过隐藏层向输出层主城传递,并将误差分配给各层的所有单元,并以此信号作为修正各单元权值的依据。这个权值调整的过程就是网络学习训练的过程,这个过程可以一直进行到网络输入的误差减少到可接受的程度或者进行到预先设定的学习次数。

BP网络模型

在这里插入图片描述如上图所示的单隐层网络是目前应用最为广泛的多层感知器神经网络。其中包括了最左侧的输入层,中间的隐藏层和最右侧的输出层。

在三层感知器中,输入向量为 X = ( x 1 , x 2 , ⋯   , x i , ⋯   , x n ) T \boldsymbol { X } = \left( x _ { 1 } , x _ { 2 } , \cdots , x _ { i } , \cdots , x _ { n } \right) ^ { \mathrm { T } } X=(x1,x2,,xi,,xn)T,其中 x 0 = − 1 x_{0} = -1 x0=1是为输出层神经元引入阈值而设置;隐藏层的输出向量为 Y = ( y 1 , y 2 , ⋯   , y i , ⋯   , y m ) T \boldsymbol { Y } = \left( y _ { 1 } , y _ { 2 } , \cdots , y _ { i } , \cdots , y _ { m } \right) ^ { \mathrm { T } } Y=(y1,y2,,yi,,ym)T,其中 y 0 = − 1 y_{0} = -1 y0=1 是输出层神经元阈值;输出层向量为 O = ( o 1 , o 2 , ⋯   , o i , ⋯   , o l ) T \boldsymbol { O } = \left( o _ { 1 } , o _ { 2 } , \cdots , o _ { i } , \cdots , o _ { l } \right) ^ { \mathrm { T } } O=(o1,o2,,oi,,ol)T:;期望输出向量为 D = ( d 1 , d 2 , ⋯   , d i , ⋯   , d m ) T \boldsymbol { D } = \left( d _ { 1 } , d _ { 2 } , \cdots , d _ { i } , \cdots , d _ { m } \right) ^ { \mathrm { T } } D=(d1,d2,,di,,dm)T。输入层到隐藏层之间的权值矩阵用 V \boldsymbol { V} V表示,其中列向量 V j \mathbf { V } _ { j } Vj为隐藏层第j个神经元对应的权向量;隐层到输出层之间的权值矩阵用 W \boldsymbol { W} W表示,其中 W k \mathbf { W } _ { k } Wk表示输出层第 k k k个神经元对应的权向量。下面分析各层输出的数学关系。

对于输出层,有:

o k = f (  net  k ) k = 1 , 2 , ⋯   , l o _ { k } = f \left( \text { net } _ { k } \right) \quad k = 1,2 , \cdots , l ok=f( net k)k=1,2,,l
 net  k = ∑ j = 0 m w j k y j k = 1 , 2 , ⋯   , l \text { net } _ { k } = \sum _ { j = 0 } ^ { m } w _ { j k } y _ { j } \quad k = 1,2 , \cdots , l  net k=j=0mwjkyjk=1,2,,l

对于隐藏层,有:
y j = f (  net  j ) j = 1 , 2 , ⋯   , m y _ { j } = f \left( \text { net } _ { j } \right) \quad j = 1,2 , \cdots , m yj=f( net j)j=1,2,,m
 net  j = ∑ i = 0 n ν i j x i j = 1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值