好久不见,大家最近都在忙啥呀?Cooky这段日子一边实习一边写论文日子过得可不要太充实。然后,就把推文忘了,我的我的!刚才吃饭的时候一拍脑袋,我好像很久很久没有输出了,正好最近在研究神经网络,来篇神经网络学习贴吧!(还是需要备注一下:本文主要是学习汇总帖,部分内容有引用)
![839381ad2792c7d837623dbc6bb7cad4.gif](https://img-blog.csdnimg.cn/img_convert/839381ad2792c7d837623dbc6bb7cad4.gif)
一、什么叫神经网络
神经网络又分生物神经网络和人工神经网络,我们今天主要介绍的,就是人工神经网络。
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
人工神经网络按其模型结构大体可以分为前馈型网络(也称为多层感知机网络)和反馈型网络(也称为Hopfield网络)两大类,前者在数学上可以看作是一类大规模的非线性映射系统,后者则是一类大规模的非线性动力学系统。按照学习方式,人工神经网络又可分为有监督学习、非监督和半监督学习三类;
今天主要想和大家来介绍一下BP神经网络:
![a9d5daf537d34972bbfe481c2a5e9431.png](https://img-blog.csdnimg.cn/img_convert/a9d5daf537d34972bbfe481c2a5e9431.png)
二、什么叫BP神经网络
BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。
反向传播(Back Propagation,BP)是误差反向传播的简称,这是一种用来训练人工神经网络的常见算法, 通常与最优化方法(如梯度下降法)结合使用.
BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。
![8a810983ca36082cdcd2ab693fdc927a.png](https://img-blog.csdnimg.cn/img_convert/8a810983ca36082cdcd2ab693fdc927a.png)
![afd072db8d04a92b5526534ad1dc545a.gif](https://img-blog.csdnimg.cn/img_convert/afd072db8d04a92b5526534ad1dc545a.gif)
三、BP神经网络原理
基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。
正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。
误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。
通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。
此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息
哈哈,这说得是不是太深奥了?
我很喜欢网上有一篇文章的类比,给大家分享:
举个例子:我要追求女神,那我总得表示一下吧!于是我给她买花,讨她欢心。然后,她给我一些表示(或者叫暗示),根据这个表示,与我最终目的进行对比(追求到女神),然后我进行调整继续表示,一直循环往复,知道实现最终目的——成功追求到女神。我的表示就是“信号前向传播”,女神的表示就是“误差反向传播”。这就是BP神经网络的核心。
![ffa59c64559732076e9ea6cf19c0dcc2.png](https://img-blog.csdnimg.cn/img_convert/ffa59c64559732076e9ea6cf19c0dcc2.png)
再举个例子:
对于如下的只含一个隐层的神经网络模型:BP神经网络的过程主要分为两个阶段,第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。
这和前面说的原理好像并没有什么区别,但是重要的事说两遍,看完那个小类比再来看这个是不是容易多了~
此外再插一句,对于神经网络的Python代码,主要涉及tensorflow模块,不过安装这个模块的时候要注意一下版本问题,有兴趣的朋友可以去研究研究哦!
![afd072db8d04a92b5526534ad1dc545a.gif](https://img-blog.csdnimg.cn/img_convert/afd072db8d04a92b5526534ad1dc545a.gif)
四 总结
最后,对它来个优缺点和用途介绍吧~
优点:
1) 非线性映射能力:BP神经网络实质上实现了一个从输入到输出的映射功能,这使得其特别适合于求解内部机制复杂的问题,即BP神经网络具有较强的非线性映射能力。
2) 自学习和自适应能力:BP神经网络在训练时,能够通过学习自动提取输出、输出数据间的“合理规则”,并自适应的将学习内容记忆于网络的权值中。即BP神经网络具有高度自学习和自适应的能力。
3) 泛化能力:所谓泛化能力是指在设计模式分类器时,即要考虑网络在保证对所需分类对象进行正确分类,还要关心网络在经过训练后,能否对未见过的模式或有噪声污染的模式,进行正确的分类。也即BP神经网络具有将学习成果应用于新知识的能力。
4) 容错能力:BP神经网络在其局部的或者部分的神经元受到破坏后对全局的训练结果不会造成很大的影响,也就是说即使系统在受到局部损伤时还是可以正常工作的。即BP神经网络具有一定的容错能力。
缺点:
1)学习速度慢,即使是一个简单的问题,一般也需要几百次甚至上千次的学习才能收敛。
2)容易陷入局部极小值。
3)网络层数、神经元个数的选择没有相应的理论指导。
![32a2aba2fcd17a43cabaa46767e00442.png](https://img-blog.csdnimg.cn/img_convert/32a2aba2fcd17a43cabaa46767e00442.png)
神经网络可以用作分类、聚类、预测等。神经网络需要有一定量的历史数据,通过历史数据的训练,网络可以学习到数据中隐含的知识。在你的问题中,首先要找到某些问题的一-些特征,以及对应的评价数据,用这些数据来训练神经网络。但是就像上面所说,它还不够成熟,所以接下来你要做的就是去寻找模型的改进,我最近看到有很多文章把它和遗传算法做了结合,这大大提升了拟合效果,当然有一点是必须的,那就是调参,调参,调参....
好啦,今天的介绍就到这里啦,咱们下期见~
THE
END
我知道你在看哟
![4a6bd0be7b922b30b466472089564e2a.png](https://img-blog.csdnimg.cn/img_convert/4a6bd0be7b922b30b466472089564e2a.png)