首页| JavaScript| HTML/CSS| Matlab| PHP| Python| Java| C/C++/VC++| C#| ASP| 其他|
购买积分 购买会员 激活码充值

您现在的位置是:虫虫源码 > 其他 > 人工神经网络及其应用实例(含代码)

人工神经网络及其应用实例(含代码)

  • 资源大小:0.68M
  • 上传时间:2021-07-31
  • 下载次数:0次
  • 浏览次数:1次
  • 资源积分:1积分
  • 标      签: 一般编程问题

资 源 简 介

通过实例对人工神经网络的实际应用进行分析和讲解,清晰的代码一目了然每神经元有许多输入、输出键,各神经元之间以连接键(又称突触)相连,它决定神经元之间的连接强度(突触强度)和性质(兴奋或抑制),即决定神经元间相互作用的强弱和正负,共有三种类型:兴奋型连接、抑制型连接、无连接。这样,个神经元(一般很大)构成一个相互影响的复杂网终系统,通过调整网络参数,可使人工神经网络具有所需要的特定功能,即学习、训练或自组织过程。一个简单的人工神经网络结构图如下所示:上图中,左侧为输入层(输入层的神经元个数由输入的维度决定),右侧为输出层(输出层的神经元个数由输出的维度决定),输入层与输出层之间即为隐层。输入层节点上的神经元接收外部环境的输入模式,并由它传递给相连隐层上的各个神经元。隐层是神经元网络的内部处理层,这些神经元在网络内部构成中间层,不直接与外部输入、输出打交道。人工经网络所具有的模式变换能力主要体现在隐层的神经元上。输出层用于产生神经网络的输出模式。多层神经网络结构中有代表性的有前向网络(BP网络)模型Page 3 of 25多层侧抑制神经网络模型和带有反馈的多层神经网络模型等。本文主要探讨前向网络模型多层前向神经网络不具有侧扣制和反馈的连接方式,即不其有本层之间或指向前一层的连接弧,只有指向下一层的连接弧。代表是BP神经网终:输入模式由输入层进入网终,经中间各隐层的顺序变换,最后由输出层产生一个输出模式,如下图所示:输入层隐层输出层多层前向神经网终由隐层神经元的非线性处理衍生它的能力,这个任务的关键在于将神经元的加权输入非线性转换成一个输出的非线性激励函数。下图给出了一个接收个输入的神经元:Page 4 of 25神经元的输出由下式给出:这里输入的加权和(括号内部分)由一个非线性函数传递,表示与偏差输入相关的权值,表示与第个输入相关的权值。使用最广泛的函数是S形函数,其曲线家族包括对数函数和双曲正切函数,这些都可用来对人口动态系统、经济学系统等建模。另外所用的其他函数有高斯函数、正弦函数、反正切函数,在此不一一展开介绍,本文主要使用的激励函数是对数函数,函数表达式为函数曲线如下图所示对于有限输入量,对数函数输出范围为∈。在输入为=时,输出值为中问值输出在—附近随着输入的增加以相对快的Page 5 of 25速率增加并非常慢地到达上限。对于<,输出起初减少得很快,然后随着下限的接近将会变慢。训练神经元的规则有很多种,这里首先介绍利用 delta规则的学引,神经元选择为一个单输入单输岀出的简单情形,数学描述如下:该神经元具有一个输入,权重为,偏差输入为,目标输出为,预报输出为。则预报误差为:十为消除当误差在整个输入模式上求和时引起的误差符号问题,在deta规则里使用的误差指示是平方误差,定义为:根据 delta规则,最优权值(使平方误差最小)可以在训练过程中从初始权值出发,沿负梯度方向下降得到。将平方误差对(神经元的可调整参数)进行微分,得:daae de ade da o根据 delta原则,权值改变应与误差梯度的负值成比例,引入学丬率B,每次迭代中的权值改变可表示为:de△=-BBaeB.=BPage 6 of 25学习率β决定了沿梯度方向的移动速度,以确定新的权值。大的β值会加快权值的改变,小的β值则减缓了权值的改变。第次迭代后的新权值可表示为:+B6如果将偏差输入视为输入的一部分,令,可以得到对于多输入神经元的权值修正式+B之,利用deta规则的有监督的学习可以按如下方法来实现:个输入模式(通过连接被传递,它的初始权值被设置为任意值。对加权的输入求和,产生输出,然后与给定的目标输出做比较决定此模式的屮方误差ε。输入和凵标输出不断地被提岀在每一次迭代或每一个训练时间后利用deta规则进行权值调整直到得到可能的最小平方误差。de|ta规则在每一步中通过导数寻找在误差平面中某个特定点局部区域的斜率,它总是应用这个斜率从而试图减小局部误差,因此,deta规则不能区分误差空间中的全局最小点和局部最小点,它本身不能克服单层神经网络的局限,无法直接应用到多层神经网络(易陷入局部最小点),但它的一般形式是多层神经网络中的学习算法反传算法的核心在多层前向神经网络的训练过程中,误差导数或关于权值的误差Page 7 of 25表面的斜率对权值的调整是至关重要的,在网络训练期间,所有的输出神经元和隐含神经元权值必须同时调幣,因此,有必要找出关于所有权值的误差导数。由于网络层数增多,平方误差与权值的连接没有之前单个神经元时那么直接,故可以使用链式规则的概念来找到导数下面对一个含有一层隐含神经元的BP网络进行讨论,网络结构如下图所示:∑各个神经元的输入输出关系为∑设目标输出为,则平方误差G定义为:Page 8 of 25使用链式法则,分别列出平方误差ε对所冇网络参数的导数:deae cedE8ae de a aea8在实际的编程过程中,我们需要的是和,所以如果有需要,也可以直接采用以下整理之后的形式o8研究表明,两层网络在其隐层中使用S形激劢函数,在输出层中使用线性传输函数,就几乎可以以仼意精度逼近任意感兴趣的函数,只要隐层中有足够的单元可用。问题1:试使用BP神经网络去遏近正弦函数的正半周,如下:由于输入量仅有一维,故BP神经网络结构可以设计为Page 9 of 25∑各个神经元的输入输出关系为根据之前的推导,平方误差5对所有网络参数的导数为:08ac网终参数修正方程为:osBdE+B为加快寻找最优权值的速度,可以使用动量法。之前的方法中,收敛到最优权值的速度取决于学习率的大小,但是过大的学习率会导致来回震荡,不能稳定到最优权值点。动量法的引入,使得较大的学刁率也可以具有较好的稳定性,即提供了在学习期间到达最优权值时Page 10 of 25

相 关 资 源

您 可 能 感 兴 趣 的

同 类 别 推 荐

VIP VIP
0.177938s