网站大量收购闲置独家精品文档,联系QQ:2885784924

Bp神经网络+C++实现.docxVIP

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Bp神经网络+C++实现

0前言

神经网络在我印象中一直比较神秘,正好最近学习了神经网络,特别是对Bp神经网络有了比较深入的了解,因此,总结以下心得,希望对后来者有所帮助。

神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据挖掘等领域。神经网络本身是一个比较庞大的概念,从网络结构类别来划分,大概有:多层前馈神经网络、径向基函数网络(RBF)、自适应谐振理论网络(ART)、自组织映射网络(SOM)、级联相关网络、Elman网络、Boltzmann机、受限Boltzmann机等等。

下面一张图是最近比较流行的网络结构:

今天我们要介绍的是Bp神经网络,准确的说是采用Bp算法进行训练的多层前馈神经网络,Bp算法应用比较广泛。

1基本概念:

1.1神经元模型

机器学习中所谈论的神经网络源于生物上的神经网络,实际上指的是“神经网络“与”机器学习“的交叉部分,一个最简单的M-P神经元模型如下图所示:

该神经元收到来自其他n个输入神经元传递过来的输入信号(加权和的形式),然后将其与神经元的阈值进行比较,通过激活函数进行处理,产生神经元的输出。

1.2常用激活函数

激活函数的作用是对其他所有神经元传过来的所有信号加权和进行处理,产生神经元输出。

下图是常用的激活函数,最简单的是:阶跃函数,它简单,最理想,但是性质最差(不连续/不光滑),因此在实际中,最常用的是Sigmoid函数。

1.3前馈神经网络

多层前馈神经网络的准确定义:每一层神经元与下一层神经元全互连,神经元之间不存在同层连接,不存在跨层连接,如下图所示就是一个经典的前馈神经网络,

(随便插一句,当神经网络中隐层数越来越多,达到8-9层时,就变成了一个深度

学习模型,我曾在一篇论文中看到网络结构有达128层的,关于下面这块,下面还会再叙述)。

2.标准Bp算法

2.0关于梯度

首先我们应该清楚,一个多元函数的梯度方向是该函数值增大最陡的方向。具体化到1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。

梯度下降法(steepestdescendmethod)用来求解表达式最大或者最小值的,属于无约束优化问题。梯度下降法的基本思想还是挺简单的,现假设我们要求函数f的最小值,首先得选取一个初始点后,然后下一个点的产生时是沿着梯度直线方向,这里是沿着梯度的反方向(因为求的是最小值,如果是求最大值的话则沿梯度的正方向即可),如下图所示:

2.1神经网络学习过程

神经网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出,讲几个要点:

(1)学习过程可以简述为:

(2)学习的本质:对各连接权值以及所有功能神经元的阈值动态调整

注:可以将权值与阈值的学习统一为权值的学习,即将阈值看成一个”哑节点“,如下图所示:

(3)权值调整规则:即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则,(Bp算法中权值调整采用的是梯度下降策略,下面会详细介绍)

Bp网络的学习流程如下图所示:

(百度图库里搜的,能说明问题就行)

2.2权值调整策略:

首先说明一句,神经网络学习属于监督学习的范畴。每输入一个样本,进行正向传播(输入层→隐层→输出层),得到输出结果以后,计算误差,达不到期望后,将误差进行反向传播(输出层→隐层→输入层),采用梯度下降策略对所有权值和阈值进行调整。

注:上面的Ek是根据第k个样本数据算出的误差,可以看出:标准Bp算法每次迭代更新只针对单个样例。

权值与阈值的调整公式如下:

上述公式的详细推导过程见下图:

2.3BP神经网络总结

(1)BP神经网络一般用于分类或者逼近问题。

如果用于分类,则激活函数一般选用Sigmoid函数或者硬极限函数,如果用于函数逼近,则输出层节点用线性函数。

(2)BP神经网络在训练数据时可以采用增量学习或者批量学习。

—增量学习要求输入模式要有足够的随机性,对输入模式的噪声比较敏感,即对于剧烈变化的输入模式,训练效果比较差,适合在线处理。

—批量学习不存在输入模式次序问题,稳定性好,但是只适合离线处理。

(3)如何确定隐层数以及每个隐含层节点个数

Pre隐含层节点个数不确定,那么应该设置为多少才合适呢(隐含层节点个数的多少对神经网络的性能是有影响的)?

有一个经验公式可以确定隐含层节点数目:

,(其中h:隐含层节点数目,m:为输入层节点数目,n:为输出层节点数目,a:为之间的调节常数)。

2.4标准BP神经网络的缺陷

(1)容易形成局部极小值而得不到全局最优值。

(采用梯度下降法

文档评论(0)

clevercatty + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档