bp神经网络原理介绍(bp神经网络原理公式)

bp神经网络原理介绍(bp神经网络原理公式)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

大家好,今天来介绍bp神经网络原理介绍(bp神经网络算法详解)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!

bp神经网络原理

BP神经网络被称为“深度学习之旅的开端”,是神经网络的入门算法。
各种高大上的神经网络都是基于BP网络出发的,最基础的原理都是由BP网络而来,另外由于BP神经网络结构简单,算法经典, 是神经网络中应用最广泛的一种。

开始发展——在人工神经网络的发展历史上,感知机网络曾对人工神经网络的发展发挥了极大的作用,它的出现曾掀起了人们研究人工神经元网络的热信者潮。单层感知网络(M-P模型)做为最初的神经网络,具有模型清晰、结构简单、计算量小等优点。

只能解决线性可分——但是,随着研究工作的深入,人们发现它还存在不足,例如无法处理非线性问题,即使计算单元的作用函数不用阀函数而用其他较复杂的非线性函数,仍然只能解决哗宴解决线性可分问题.不能实现某些乱坦银基本功能,从而限制了它的应用。
多层前馈网络——增强网络的分类和识别能力、解决非线性问题的唯一途径是采用多层前馈网络,即在输入层和输出层之间加上隐含层。

BP神经网络登场——20世纪80年代中期,David Runelhart。Geoffrey Hinton和Ronald W-llians、DavidParker等人分别独立发现了误差反向传播算法,简称BP,系统解决了多层神经网络隐含层连接权学习问题,并在数学上给出了完整推导。人们把采用这种算法进行误差校正的多层前馈网络称为BP网。
BP神经网络具有任意复杂的模式分类能力和优良的多维函数映射能力,解决了简单感知器不能解决的异或和一些其他问题。从结构上讲,BP网络具有输入层、隐藏层和输出层;从本质上讲,BP算法就是以网络误差平方为目标函数、采用梯度下降法来计算目标函数的最小值。

bp神经网络原理介绍(bp神经网络原理公式)

bp神经网络算法介绍

1、BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的伍雹神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

  2、BP神经网络算法是在BP神经网络现有算法的基础上提出的,是通过任意选定哪橘芹一组权值,将给定的目标输出李毕直接作为线性方程的代数和来建立线性方程组,解得待求权,不存在传统方法的局部极小及收敛速度慢的问题,且更易理解。

深入理解BP神经网络

BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的。具体来说,对于如下的只含一个隐层的神经网络模型:

BP神经网络的过程主要分为两个阶段,第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。

神经网络的基本组成单元是神经元。神经元的通用模型如图所示,其中常用的激活函数有阈值函数、sigmoid函数和双曲正切函数。 

神经元的输出为: 

神经网络是将多个神经元按一定规则联结在一起而形成的网络,如图 所示。 

从图 可以看出,一个神经网络包括输入层、隐含层(中间层)和输出层。输入层神经元个数与输入数据的维数相同,输出层神经元个数与需要拟合的数据个数相同,隐含层神经元个数与层数就需要设计者自己根据一些规则和目标来设定。在深度学习出现之前,隐含层的层数通常为一层,即通常使用的神经网络是3层网络。 

BP网络采用的传递函数是非线性变换函数——Sigmoid函数(又称S函数)。其特点兆歼斗是函数本身及其导数都是连续的,因而在处理上十分方便。为什么要选择这个函数,等下在介绍BP网络的学习算法的时候会进行进改慎一步的介绍。S函数有单极性S型函数和双极性S型函数两种,单极性S型函数定义如下:f(x)=1/1+e−x

其函数曲线如图所示:

双极性S型函数:f(x)=1−e−x/1+e−x

使用S型激活函数时,输入:

输出:

输出的导数:

使用S型激活函数时,BP网络的输出及其导数图形:

根据S激活函数的图形:

net在 -5~0 的时候导数的值为正,且导数的值逐渐增大, 说明此时f(x)在逐渐变大 且 变大的速度越来越快

net在 0~5  的时候导数的值为正,且导数的值逐渐减小, 说明此时f(x)在逐渐变大 但是 变大的速度越来越慢

对神经网络进行训练,我们应该尽量将net的值尽量控制在收敛比较快的范围内。

1.  定义一个BP神经网络的类,设置网络相关参族磨数

2.    实例化该神经网络,按下图被构建成一个输出3维,输出1维,带有3个隐藏层(每个隐藏层10个节点)的BP网络;(此处还可以随意扩展输入、输出维度和隐藏层相关系数)

3.    初始化BP神经网络的时候,开始初始化各层网络节点的 权重、权重动量、误差初始值

4.  引入学习训练数据;4组输入、输出数据迭代5000次

    5000次中不断向前逐层计算输出的节点数据

    并同时逐层计算误差反向修改权重值,直到迭代完毕;注意误差函数值必须呈现下降趋势

5.  引入数据进行结果预测,将数据带回模型计算得结果;最终可知预测结果趋近于0.7

神经网络利用现有的数据找出输入与输出之间得权值关系(近似),然后利用这样的权值关系进行仿真,例如输入一组数据仿真出输出结果,当然你的输入要和训练时采用的数据集在一个范畴之内。例如预报天气:温度 湿度 气压等作为输入 天气情况作为输出利用历史得输入输出关系训练出神经网络,然后利用这样的神经网络输入今天的温度 湿度 气压等 得出即将得天气情况。同理,运用到自动化测试中,使用测试数据反映结果走向,bug数,质量问题等情况也可以做到提前预测的!

附录:

BP神经网络的工作原理

人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
人工神经网络首先要以一定的学习准则进行学习,然后才能工作。现以人工颤数神经网络对手写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。
所以网络学习的准则应该是:如果网络作出错误的的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图象模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能作出正确的判断。
如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。如此操作调整,当给网络轮番输入若干个手写字母“A”、“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。这说明网络对这两个模式的学习已经获得了成功,它已将这两个模式分布地记忆在网络的各个连接权值上。当网络再次遇到其中任何一个模式时,能够作出迅速、准确的毁洞源判断和识别。一般说来,网络中所含的神经元个数越多,则它能记忆、识别的模式也就越多。
如图所示拓扑结构的单隐层前馈网络,一般称为三层前馈网或三层感知器,即:输入层、中间层(也称隐层)和输出层。它的特点是:各层神经元仅与相邻层神经元之间相互全连接,同层内神经元之间无连接,各层神经元之间无反馈连接,构成具有层纤态次结构的前馈型神经网络系统。单计算层前馈神经网络只能求解线性可分问题,能够求解非线性问题的网络必须是具有隐层的多层神经网络。

BP神经网络的梳理

BP神经网络被称为“深度学习之旅的开端”,是神经网络的入门算法。
各种高大上的神经网络都是基于BP网络出发的,最基础的原理都是由BP网络而来 [1] ,另外由于BP神经网络结构简单,算法经典, 是神经网络中应用最广泛的一种。

BP神经网络(back propagation neural network)全称是反向传播神经网络。
神经网络发展部分背景如下 [2] :

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

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

很喜欢 最简单的神经网络--Bp神经网络 一文对算法原理的解释,语言活泼,案例简单,由浅入深。
文中提到所谓的 AI 技术,本质上是一种数据处理处理技术,它的强大来自于两方面:1.互联网的发展带来的海量数据信息;2.计算机深度学习算法的快速发展。AI 其实并没有什么神秘,只是在算法上更为复杂 [3] 。

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

BP神经网络整个网络结构包含了:一层输入层,一到多层隐藏层,一层输出层。
一般说L层神经网络,指的是有L个隐层,输入层和输出层都不计算在内的 [6] 。

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

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

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

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

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

BP神经网络全称 back propagation neural network,back propagation反向传播是什么?
反向传播的建设本质上就是寻找最优的参数组合,和上面的流程差不多,根据算法预测值和实际值之间的损失函数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神经网络是比 Logistic Regression 复杂得多的模型,它的拟合能力很强,可以处理很多 Logistic Regression处理不了的数据,但是也更容易过拟合。

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

常见的前馈神经网络有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

分享到 :
相关推荐

数据库自增id会出现重复吗(重新设置id账号之前东西会丢吗)

1、数据库自增id会出现重复吗在数据库中,自增ID通常用于唯一标识表中的每一行数据[...

镜像服务器是什么意思(双系统和虚拟机有什么区别)

1、镜像服务器是什么意思镜像服务器是指在网络中用来存放镜像文件的服务器。镜像文件是[...

notnull的作用(not null用法)

If函数应该是每位亲最早接触的函数之一。对其用法也比较熟悉。除了自身用法外。还可以与...

新建桌面文件夹的方法(华为手机如何创建文件夹到桌面)

1、新建桌面文件夹的方法新建桌面文件夹的方法在电脑桌面上创建文件夹是管理和整理桌[&...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注