BP神经网络的实例一则

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

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

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


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


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

Outo1 = 


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

总误差:


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

由上一篇这个式子

BP神经网络的实例一则_第1张图片

(上面第一个式子漏了个负号,下面的计算加上了这个负号)其中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




你可能感兴趣的:(BP神经网络的实例一则)