zoukankan      html  css  js  c++  java
  • BP神经网络

    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

  • 相关阅读:
    C#中的Dictionary类,默认key是区分大小写的
    for循环的3个参数
    C#循环读取文件流,按行读取
    C#合并两个Dictionary的方法
    C#的Equals不区分大小写
    php的isset()和empty()区别
    css !important的作用
    mysql创建用户,并指定用户的权限(grant命令)
    解决安卓微信浏览器中location.reload 或者 location.href失效的问题
    【转】前端懒加载以及预加载
  • 原文地址:https://www.cnblogs.com/r0825/p/9725105.html
Copyright © 2011-2022 走看看