百科知识网

BP神经网络的梳理

发布时间:2025-10-10 | 来源:互联网转载和整理

BP神经网络被称为“深度学习之旅的开端”,是神经网络的入门算法。

各种高大上的神经网络都是基于BP网络出发的,最基础的原理都是由BP网络而来[1],另外由于BP神经网络结构简单,算法经典,是神经网络中应用最广泛的一种。

BP神经网络(backpropagationneuralnetwork)全称是反向传播神经网络。

神经网络发展部分背景如下[2]:

为解决非线性问题,BP神经网络应运而生。

那么什么是BP神经网络?稍微专业点的解释要怎么说呢?

很喜欢最简单的神经网络--Bp神经网络一文对算法原理的解释,语言活泼,案例简单,由浅入深。

文中提到所谓的AI技术,本质上是一种数据处理处理技术,它的强大来自于两方面:1.互联网的发展带来的海量数据信息;2.计算机深度学习算法的快速发展。AI其实并没有什么神秘,只是在算法上更为复杂[3]。

我们从上面的定义出发来解释BP神经网络的原理。

BP神经网络整个网络结构包含了:一层输入层,一到多层隐藏层,一层输出层。

一般说L层神经网络,指的是有L个隐层,输入层和输出层都不计算在内的[6]。

BP神经网络模型训练的学习过程由信号的正向传播和误差的反向传播两个过程组成。

什么是信号的正向传播?顾名思义,就是结构图从左到右的运算过程。

我们来看看结构图中每个小圆圈是怎么运作的。我们把小圈圈叫做神经元,是组成神经网络的基本单元。

正向传播就是输入数据经过一层一层的神经元运算、输出的过程,最后一层输出值作为算法预测值y'。

前面正向传播的时候我们提到权重w、偏置b,但我们并不知道权重w、偏置b的值应该是什么。关于最优参数的求解,我们在线性回归、逻辑回归两章中有了详细说明。大致来讲就是:

BP神经网络全称backpropagationneuralnetwork,backpropagation反向传播是什么?

反向传播的建设本质上就是寻找最优的参数组合,和上面的流程差不多,根据算法预测值和实际值之间的损失函数L(y',y),来反方向地计算每一层的z、a、w、b的偏导数,从而更新参数。

对反向传播而言,输入的内容是预测值和实际值的误差,输出的内容是对参数的更新,方向是从右往左,一层一层的更新每一层的参数。

BP神经网络通过先正向传播,构建参数和输入值的关系,通过预测值和实际值的误差,反向传播修复权重;读入新数据再正向传播预测,再反向传播修正,...,通过多次循环达到最小损失值,此时构造的模型拥有最优的参数组合。

以一个简单的BP神经网络为例,由3个输入层,2层隐藏层,每层2个神经元,1个输出层组成。

【输入层】传入

【第一层隐藏层】

对于神经元而言,传入,加权求和加偏置激活函数处理后,输出;

对于神经元而言,传入,加权求和加偏置函数处理后,输出;

输出:

【第二层隐藏层】

对于神经元而言,传入,加权求和加偏置激活函数处理后,输出;

对于神经元而言,传入,加权求和加偏置激活函数处理后,输出;

输出:

【输出层】

对于输出层神经元而言,输入,加权求和加偏置激活函数处理后,输出,输出的是一个值

第一次运行正向传播这个流程时随用随机参数就好,通过反向传播不断优化。因此需要在一开始对设置一个随机的初始值。

首先计算正向传播输出值与实际值的损失,是一个数值。所谓反向是从右到左一步步来的,先回到,修正参数。

以此类推通过对损失函数求偏导跟新参数,再跟新参数。这时又回到了起点,新的数据传入又可以开始正向传播了。

keras可以快速搭建神经网络,例如以下为输入层包含7129个结点,一层隐藏层,包含128个结点,一个输出层,是二分类模型。

神经网络反向传播的优化目标为loss,可以观察到loss的值在不断的优化。

可以通过model.get_layer().get_weights()获得每一层训练后的参数结果。通过model.predict()预测新数据。

至此BP神经网络的整个运算流程已经过了一遍。之前提到BP神经网络是为解决非线性问题应运而生的,那么为什么BP神经网络可以解决非线性问题呢?

还记得神经元里有一个激活函数的操作吗?神经网络通过激活函数的使用加入非线性因素。

通过使用非线性的激活函数可以使神经网络随意逼近复杂函数,从而使BP神经网络既可以处理线性问题,也可以处理非线性问题。

为什么激活函数的使用可以加入非线性因素[7]?

其实逻辑回归算法可以看作只有一个神经元的单层神经网络,只对线性可分的数据进行分类。

输入参数加权求和,sigmoid作为激活函数计算后输出结果,模型预测值和实际值计算损失Loss,反向传播梯度下降求编导,获得最优参数。

BP神经网络是比LogisticRegression复杂得多的模型,它的拟合能力很强,可以处理很多LogisticRegression处理不了的数据,但是也更容易过拟合。

具体用什么算法还是要看训练数据的情况,没有一种算法是使用所有情况的。

常见的前馈神经网络有BP网络,RBF网络等。

BP神经网络的一个主要问题是:结构不好设计。

网络隐含层的层数和单元数的选择尚无理论上的指导,一般是根据经验或者通过反复实验确定。

但是BP神经网络简单、易行、计算量小、并行性强,目前仍是多层前向网络的首选算法。

[1]深度学习开端---BP神经网络:https://blog.csdn.net/Chile_Wang/article/details/100557010

[2]BP神经网络发展历史:https://zhuanlan.zhihu.com/p/47998728

[3]最简单的神经网络--Bp神经网络:https://blog.csdn.net/weixin_40432828/article/details/82192709

[4]神经网络的基本概念:https://blog.csdn.net/jinyuan7708/article/details/82466653

[5]神经网络中的“隐藏层”理解:https://blog.csdn.net/nanhuaibeian/article/details/100183000

[6]AI学习笔记:神经元与神经网络:https://www.jianshu.com/p/65eb2fce0e9e

[7]线性模型和非线性模型的区别:https://www.cnblogs.com/toone/p/8574294.html

[8]BP神经网络是否优于logistic回归:https://www.zhihu.com/question/27823925/answer/38460833

bp神经网络原理

上一篇:苏e是江苏什么城市

下一篇:猴子用英文怎么写(猴子英文怎么写)

其他文章

  • 如何举报高考违规
  • 很污的言情小说大全(言情小说大全污的片段)
  • 莲蓬乳和空心手指(蓬莲乳和空无指)
  • 天娱传媒旗下有哪些艺人
  • 终极一家为什么不能看了
  • 绵阳中学2023高三复读班招生简章
  • 暴殄天物和暴殄天物的区别
  • 自招线什么意思
  • 手机白名单怎么设置
  • 美国国庆放假几天
  • 附近有那些家政公司
  • 《满江红》全文诗词
  • 俩俩仨仨是成语吗
  • 果宝特攻中的人物名字都有谁
  • 东莞哪里有小龙虾批发
  • 袁氏家谱排辈
  • 年立水素杯真的有用吗
  • 汽车保养app排名推荐
  • 桥架人工费多少钱一米
  • 晚霞的寓意和象征