BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法。
BP神经网络的网络结构:
通常有n个输入,m个输出,中间有若干个隐藏层,具体如下图所示:
BP神经网络的计算过程:
工作信号正向传递过程(前向传播):
四个步骤:
1、输入层的每个节点,都要与的隐藏层每个节点做点对点的计算,计算的方法是加权求和+激活
2、利用隐藏层计算出的每个值,再用相同的方法,和输出层进行计算。
3、隐藏层用都是用Sigmoid作激活函数,而输出层用的是Purelin。这是因为Purelin可以保持之前任意范围的数值缩放,便于和样本值作比较,而Sigmoid的数值范围只能在0~1之间。
4、起初输入层的数值通过网络计算分别传播到隐藏层,再以相同的方式传播到输出层,最终的输出值和样本值作比较,计算出误差,这个过程叫前向传播(Forward Propagation)。
误差信号反向传递过程
BP算法是一种计算偏导数的有效方法,它的基本原理是:
5、利用前向传播最后输出的结果来计算误差的偏导数(前向传播后求偏导),
6、再用这个偏导数和前面的隐藏层进行加权求和
7、如此一层一层的向后传下去(隐藏层间偏导加权求和)
8、直到输入层(不计算输入层)(也就是第一隐藏层到输入层的偏导加权求和)
9、最后利用每个节点求出的偏导数来更新权重。
过程如下:
该部分参考自博客:https://blog.csdn.net/lyl771857509/article/details/78990215
上面的图片过程详细介绍了BP神经网络是怎样工作的。
BP神经网络的缺陷:
①学习速度慢,即使是一个简单的问题,一般也需要几百次甚至上千次的学习才能收敛。
②容易陷入局部极小值。
③网络层数、神经元个数的选择没有相应的理论指导。
④网络推广能力有限。
参考博客:https://blog.csdn.net/lyl771857509/article/details/78990215