BP神经网络的实例一则

大笑,博客翻译员又翻译了一篇比较简单的计算过程示例,链接如下:

https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

先上一个图,这是一个横图,输出在右边:

neural_network (7)

为了实际对这个神经网络进行计算,先对其中的权值啊,偏置什么的进行了初始化,比如下面的w1=0.15

neural_network (9)

先正向计算,比较容易得到:

Outo1 = 

out_{o2} = 0.772928465


E_{o1} = \frac{1}{2}(target_{o1} - out_{o1})^{2} = \frac{1}{2}(0.01 - 0.75136507)^{2} = 0.274811083

E_{o2} = 0.023560026

总误差:

E_{total} = E_{o1} + E_{o2} = 0.274811083 + 0.023560026 = 0.298371109


前馈过程(倒过来,用上述输出作为训练样本,其中学习率设为0.5)

由上一篇这个式子


(上面第一个式子漏了个负号,下面的计算加上了这个负号)其中k是隐含节点号,i是输出节点号,所以

w5(新) = 0.4-0.5*(0.01-0.75136507)*0.75136507*(1-0.75136507)*xk    (梯度下降的方向)

w5=0.4-0.74136507*0.1868156*xk              (xk指的是隐层的输出,作为输出层的原始输入)

xk的计算:


w5(新) = 0.4-0.5*0.74136507*0.1868156*0.593269992=0.35891648

同样可得到w6(新),w7(新),w8(新),倒数第一层的权值更新完成。


倒数第二层(参照上一篇中的倒数第二层的公式):

 

(其中,此式中的k是中间节点,n是输入节点)


先算

首先上一层的刚才已经计算出来了w5对应的0.74136507*0.1868156=0.138498562,uk就是上一层的计算过的out1对于中间节点h1,的值计算为



0.138498562*0.4+w7*?=0.036350306

可以求出=0.036350306*0.59326999*(1-59326999)*0.05 =0.000438568  (0.05就是b1,第一个输入点)

接下来 求w1(新)就很容易了,w1(新) = 0.15-0.5(学习率)*0.000438568=0.149780716


同理可求得w2,w3,w4的值,每个权值的更新就算完了。

总结如下(方便实现成代码):

1、反馈过程第一步,计算正向值,正向输出以及隐层输出

2、计算最后一层的权值(利用正向过程中隐层输出和最终输出)更新值

3、计算第一层权值更新值


整体来说还是比较简单的



代码参见上述原文的代码:https://github.com/mattm/simple-neural-network




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值