BP神经网络的研究背景

2024-05-06 00:45

1. BP神经网络的研究背景

“人脑是如何工作的?”“人类能否制作模拟人脑的人工神经元?”多少年以来,人们从医学、生物学、生理学、哲学、信息学、计算机科学、认知学、组织协同学等各个角度企图认识并解答上述问题。在寻找上述问题答案的研究过程中,逐渐形成了一个新兴的多学科交叉技术领域,称之为“神经网络”。神经网络的研究涉及众多学科领域,这些领域互相结合、相互渗透并相互推动。不同领域的科学家又从各自学科的兴趣与特色出发,提出不同的问题,从不同的角度进行研究。心理学家和认知科学家研究神经网络的目的在于探索人脑加工、储存和搜索信息的机制,弄清人脑功能的机理,建立人类认知过程的微结构理论。生物学、医学、脑科学专家试图通过神经网络的研究推动脑科学向定量、精确和理论化体系发展,同时也寄希望于临床医学的新突破;信息处理和计算机科学家研究这一问题的目的在于寻求新的途径以解决不能解决或解决起来有极大困难的大量问题,构造更加逼近人脑功能的新一代计算机。

BP神经网络的研究背景

2. 深入理解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数,质量问题等情况也可以做到提前预测的!
  
  附录:

3. BP神经网络

我不是大神。但可以给给意见。

1,遗传算法不能改变BP神经网络准确率低的本质问题的。只能在一定程度上优化BP神经网络。
2,你的数据是怎么增加的?由原来的80组数据基础上随意组合的?还有你的输出结果是3个等级。期望输出是什么类型?预测输出是什么类型?你判断正确率的标准是什么?这些都会对正确率有影响。
3,BP神经网络的正确率的提高可以通过:一,改变隐层的节点数。或增减隐层的层数。最少一个隐层,最多2个。二,改变传递函数,一般隐层用tansig,输出层用linear或者tansig。
4,最后的方法是不怎么重要的,就是数据的归一化,一般是归一化或不归一化都可以的,都试试。
我都是书本学过,做过点题目,只能给这些建议。

BP神经网络

4. BP神经网络的介绍

科普中国·科学百科:BP神经网络

5. BP神经网络的研究方向

神经网络的研究内容相当广泛,反映了多学科交叉技术领域的特点。主要的研究工作集中在以下几个方面:(1)生物原型研究。从生理学、心理学、解剖学、脑科学、病理学等生物科学方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理。(2)建立理论模型。根据生物原型的研究,建立神经元、神经网络的理论模型。其中包括概念模型、知识模型、物理化学模型、数学模型等。(3)网络模型与算法研究。在理论模型研究的基础上构作具体的神经网络模型,以实现计算机模拟或准备制作硬件,包括网络学习算法的研究。这方面的工作也称为技术模型研究。(4)人工神经网络应用系统。在网络模型与算法研究的基础上,利用人工神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能、构作专家系统、制成机器人等等。纵观当代新兴科学技术的发展历史,人类在征服宇宙空间、基本粒子,生命起源等科学技术领域的进程中历经了崎岖不平的道路。我们也会看到,探索人脑功能和神经网络的研究将伴随着重重困难的克服而日新月异。

BP神经网络的研究方向

6. BP神经网络的特性

思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点在于以下两点:1.信息是通过神经元上的兴奋模式分布储在网络上;2.信息处理是通过神经元之间同时相互作用的动态过程来完成的。人工神经网络具有初步的自适应与自组织能力。在学习或训练过程中改变突触权重值,以适应周围环境的要求。同一网络因学习方式及内容不同可具有不同的功能。人工神经网络是一个具有学习能力的系统,可以发展知识,以致超过设计者原有的知识水平。通常,它的学习训练方式可分为两种,一种是有监督或称有导师的学习,这时利用给定的样本标准进行分类或模仿;另一种是无监督学习或称无导师学习,这时,只规定学习方式或某些规则,则具体的学习内容随系统所处环境 (即输入信号情况)而异,系统可以自动发现环境特征和规律性,具有更近似人脑的功能。

7. BP神经网络完成预测

下面是几个仿真实验,用了不同的训练函数:
1.创建BP网络的学习函数,训练函数和性能函数都采用default值,分别为learngdm,trainlm和mse时的逼近结果:
由此可见,进过200次训练后,虽然网络的性能还没有为0,但是输出均方误差已经很小了,MSE=6.72804e-0.06,显示的结果也证明P和T之间非线性映射关系的拟合是非常精确的;
2.建立一个学习函数为learnd,训练函数为traingd,和性能函数为msereg的BP网络,来完成拟合任务:
可见,经过200次训练后,网络的输出误差比较大,而且网络误差的收敛速度非常慢。这是由于训练函数traingd为单纯的梯度下降训练函数,训练速度比较慢,而且容易陷入局部最小的情况。结果显示网络精度确实比较差。
3.将训练函数修改为traingdx,该i函数也是梯度下降法训练函数,但是在训练过程中,他的学习速率是可变的
在200次训练后,以msereg函数评价的网络性能为1.04725,已经不是很大,结果显示P和T之间非线性关系的拟合情况不错,网络的性能不错。

BP神经网络完成预测

8. 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