神经网络算法

一、算法理论

1、神经元模型

每个神经元有一个输出,它可以连接到许多其他神经元,每个神经元输入有多个连接通路,每个连接通路对应一个连接权系数。

         x1~ xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值(或称为偏置),则神经元i的输出与输入的关系表示为:

 

 yi表示神经元i的输出,函数f称为激活函数或转移函数,net称为净激活。若将阈值看成神经元i的一个输入x0的权重wi0,则式(9.1)可以简化为:

 若用X表示输入向量,用W表示权重向量,即:

 则神经元的输出可以表示为向量相乘的形式:

 若神经元的净激活 net 为正,则称该神经元处于激活状态;若净激活 net 为负,则称神经元处于抑制状态。

2、常用的激活函数

(1)线性函数

 (2)斜面函数

 (3)阈值函数

 (4)S形函数

 该函数的导函数为

(5)双极S形函数

 该函数的导函数为

由于BP算法要求激活函数可导,所以S形函数与双极S形函数适合用在BP神经网络中。

3、神经网络模型

        根据网络中神经元的互联方式,常见的网络结构主要可以分为以下3类:

(1)前馈神经网络

        前馈网络也称前向网络。这种网络只在训练过程会有反馈信号,而在分类过程中数据只能向前传送,直到到达输出层,层间没有向后的反馈信号,因此称为前馈网络。BP神经网络就属于前馈网络。目前,在人工神经网络的实际应用中,绝大部分的神经网络模型都采用BP网络和它的变化形式。

(2)反馈神经网络

        反馈神经网络是一种从输出到输入具有反馈连接的神经网络,其结构比前馈网络要复杂得多。典型的反馈型神经网络有:Elman网络和Hopfield网络。

(3)自组织神经网络

        自组织神经网络是一种无导师学习网络。它通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。

4、神经网络学习和工作的两种状态

学习:神经网络的学习主要是指使用学习算法来调整神经元间的连接权,使得网络输出更符合实际。学习算法分为有导师学习和无导师学习两类。有导师学习算法是将一组训练集送入网络,根据网络的实际输出与期望输出间的差别来调整连接权。无导师学习抽取样本集合中蕴含的统计特性,并以神经元之间的连接权的形式存于网络中。

有导师学习算法的主要步骤包括:

(1)从样本集合中取一个样本(Ai,Bi),其中Ai是输入,Bi是期望输出;
(2)计算网络的实际输出O;
(3)求D=Bi-O;
(4)根据D调整权矩阵W;
(5)对每个样本重复上述过程,直到对整个样本集来说,误差不超过规定范围为止。

有导师学习算法:Delta学习规则

Delta 学习规则是一种简单的有导师学习算法,该算法根据神经元的实际输出与期望输出差别来调整连接权,其数学表示如下:

 其中:wij表示神经元j到神经元i的连接权;di是神经元i的期望输出;yi是神经元i的实际输出;xj表示神经元j的状态,若神经元j处于激活态则xj为1,若处于抑制状态则 xj为 0 或-1(根据激活函数而
定);α是表示学习速度的常数。假设xj为1,若di比yi大,那么wij增大;若di比yi小,那么wij将变小。

 Delta 规则简单来讲就是:若神经元实际输出比期望输出大,则减小所有输入为正的连接的权重,增大所有输入为负的连接的权重;反之,若神经元实际输出比期望输出小,则增大所有输入为正的连接的权重,减小所有输入为负的连接的权重。

工作:神经元间的连接权保持不变,神经网络处于工作状态,作为分类器、预测器等使用。

二、算法特点

        神经网络算法是一种通用的优化算法。

(1)神经网络算法与传统的参数模型方法最大的不同,在于它是数据驱动的自适应技术,不需要对问题模型做任何先验假设。在解决问题的内部规律未知或难以描述的情况下,神经网络可以通过对样本数据的学习训练,获取数据之间隐藏的函数关系。因此,神经网络方法特别适用于解决一些利用假设和现存理论难以解释,但却具备足够多的数据和观察变量的问题。

(2)神经网络技术具备泛化能力,泛化能力是指经训练后学习模型对未来训练集中出现的样本做出正确反应的能力。因此可以通过样本内的历史数据来预测样本外的未来数据。神经网络可以通过对输入的样本数据的学习训练,获得隐藏在数据内部的规律,并利用学习到的规律来预测未来的数据。因此,泛化能力使神经网络成为一种理想的预测技术。

(3)神经网络是一个具有普遍适用性的函数逼近器。它可以以任意精度逼近任何连续函数。在处理同一个问题时,神经网络的内部函数形式比传统的统计方法更为灵活和有效。传统的统计预测模型由于存在各种限制,不能对复杂的变量函数关系进行有效的估计;而神经网络强大的函数逼近能力,为复杂系统内部函数识别提供了一种有效的方法。

(4)神经网络是非线性的方法。神经网络中的每个神经元都可以接受大量其他神经元输入,而且每个神经元的输入和输出之间都是非线性关系。神经元之间的这种互相制约和互相影响的关系,可以实现整个网络从输入状态到输出状态空间的非线性映射。因此,神经网络可以处理一些环境信息十分复杂、知识背景不清楚和推理规则不明确的问题。

三、BP神经网络算法

        BP神经网络算法的主要思想是:对于n个输入学习样本“x1,x2,…,xn”,已知与其对应的m个输出样本为“t1,t2,…,tm”。用网络的实际输出(z1,z2,…,zm)与目标矢量(t1,t2,…tm)之间的误差来修改其权值,使zl(l=l,2,…,m)与期望的tl尽可能地接近,即:使网络输出层的误差平方和达到最小。据统计,有80%~90%的神经网络模型都采用BP网络或者它的变形。

        BP 神经网络的学习过程主要由四部分组成:输入模式顺传播、输出误差逆传播、循环记忆训练、学习结果判别。这个算法的学习过程,由正向传播和反向传播组成,在正向传播过程中,输入信息从输入层经隐含层单元逐层处理,并传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到所期望的输出,则转入反向传播,将误差信号沿原来的连接通路反回,通过修改各层神经元的权值,使得误差信号减小,然后再转入正向传播过程。反复迭代,直到误差小于给定的值为止。

        采用BP学习算法的前馈型神经网络通常被称为BP网络。BP网络有很强的非线性映射能力,一个3层BP神经网络能够实现对任意非线性函数的逼近。一个典型的三层BP神经网络模型如图所示。

 

设网络的输入模式为x=(x1,x2,…,xn)T,隐含层有h个单元,隐含层的输出为y=(y1,y2,…,yh)^T,输出层有m个单元,它们的输出为z=(z1,z2,…,zm)^T,目标输出为t=(t1,t2,…,tm)^T,隐含层到输出层的传递函数为f,输出层的传递函数为g。于是可得:

 式中,yj表示隐含层第j个神经元的输出,w0j=θ,x0=-1。

 式中,zk表示输出层第k个神经元的输出。此时网络输出与目标输出的误差为:

        下面的步骤就是想办法调整权值,使ε减小。由于负梯度方向是函数值减小最快的方向。因此可以设定一个步长η,每次沿负梯度方向调整η个单位,即每次权值的调整为: 

 其中,η 在神经网络中称为学习速率。可以证明:按这个方法调整,误差会逐渐减小。因此BP神经网络(反向传播)的调整顺序为:

(1)先调整隐含层到输出层的权值。设vk为输出层第k个神经元的输入,则

 

 (2)从输入层到隐含层的权值调整迭代公式为:

 其中uj为隐含层第j个神经元的输入:

 

注意:隐含层第j个神经元与输出层的各个神经元都有连接,即\frac{\partial \varepsilon }{\partial y_{j}}涉及所有的权值wij,因此

 因此,从输入层到隐含层的权值调整迭代公式为:

 具体运算流程如图所示:

四、神经网络算法的实现

1、数据预处理

        由于神经网络有些输入数据的范围可能特别大,导致神经网络收敛慢、训练时间长。因此在训练神经网络前一般需要对数据进行预处理,一种重要的预处理手段是归一化处理。就是将数据映射到[0,1]或[-1,1]区间或更小的区间。

        一种简单而快速的归一化算法是线性转换算法。线性转换算法常见的有两种形式。一种形式是:

         其中min为x的最小值,max为x的最大值,输入向量为x,归一化后的输出向量为y。式(9.28)将数据归一化到 [0,1]区间,当激活函数采用S形函数时(值域为(0,1))时这个公式适用。

        另一种形式是:

         这个公式将数据归一化到 [-1,1] 区间。当激活函数采用双极S形函数(值域为(-1,1))时这个公式适用。MATLAB 中归一化处理数据可以采用 premnmx,postmnmx,tramnmx 这 3个函数。

 

2、神经网络实现函数

使用MATLAB建立前馈神经网络主要会使用到下面3个函数:
newff:前馈网络创建函数;
train:训练一个神经网络;
sim:使用网络进行仿真。

 

 

 

 

源自《智能优化算法及其MATLAB实例(第2版)》

  • 20
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值