笔记在pad中
接下来,我们就将问题慢慢复杂化,一步一步接近最终的神经网络中的反向传播!
前文中,我们利用的是一个神经元,这里我们讲问题变复杂,变成两个神经元,并且是有嵌套关系的两个神经元!如下图:
![](http://upload-images.jianshu.io/upload_images/1234352-273f5828e57e5a23.png?imageMogr2/auto-orient/strip|imageView2/2/w/555/format/webp)
将输入值相加然后输出到第二个神经元,同时第二个神经元还接受输入c,并将两个值相乘,最后输出!
这个简单网络的正向传播很容易写出来:
def product(x, y): return x * y def addition(x, y): return x + y def forward(a, b, c): d = addition(a, b) return product(d, c) print(forward(5, -6, 7))
现在开始我们的训练吧!
目标和之前一样,就是改变输入的
目标和之前一样,就是改变输入的
a
,b
,c
三个值,使函数f
的值增加!之后我们就会发现,在这个过程中,我们会慢慢接触到反向传播的核心思想!误差反向传播算法简称反向传播算法(即BP算法)。使用反向传播算法的多层感知器又称为BP神经网络。BP算法是一个迭代算法,
它的基本思想为:(1)先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);
(2)计算每一层的误差,误差的计算过程是从最后一层向前推进的(这就是反向传播算法名字的由来);
(3)更新参数(目标是误差变小)。迭代前面两个步骤,直到满足停止准则(比如相邻两次迭代的误差的差别很小)。