神经网络在数学建模竞赛中的应用 联系客服

发布时间 : 星期六 文章神经网络在数学建模竞赛中的应用更新完毕开始阅读

SARx1y1x2????yn?xn

图2-1

x1w1?w2x2?y

图2-2

2.1.2 单层感知器

单层感知器是指包含一个突触权值可调的神经元的感知器模型,它的训练算法是Rosenblatt在1958年提出来的.感知器是神经网络用来进行模式识别的一种最简单模型,但是由单个神经元组成的单层感知器只能用来实现线性可分的两类模式的识别.

单层感知器模型如图1-2所示,它包括一个线性累加器和一个二值阀值元件,同时还有一个外部偏差?.当二值阀值元件的输入是正数,神经元就输出+1,反之其输入是负数,则产生输出-1.即

?N?? (2-1) wx?? y?Sgn???ijj??j?1????1,? y????1,???N??若??wijxj?????0?j?1? (2-2) N????0若?wx????ijj??j?1?2.1.3 单层感知器神经网络的学习

感知器权值的学习是通过给定的教师信号(即希望的输出)按?学习规则,即式

(2-3)进行的:

w(k?1)?w(k)??[yd(k)?y(k)]x (2-3)

13

式中,w(k)为当前的权值矩阵;yd(k)为教师信号;?为控制权值修正速度的常数(0???1);y(k)为感知器的输出值;即

y(k)?f(?wi(k)xi) (2-4)

i?0n由于感知器一般用于线性可分样本的分类,激发函数选为阈值型函数,因而当式(2-1-4)中的w0?1,x0??时,该式可写成

y(k)?f(?wi(k)xi)?f(?wi(k)xi??)

i?1i?1n2?1?f(net)???0权值的初值一般取较小的非零随机数.

net?0 (2-5) net?02.2 线性神经网络

线性神经网络同感知器相似,是最简单的一种神经元络,同感知器不同的是,在MATLAB中,线性神经网络输出的激发函数为线性函数purelin,而感知器模型的激发函数为符号函数hardlim,因此感知器模型中只可取0或者1,而线性神经网络输出的数值可以是任意数值,这一点也决定了线性神经网络同感知器应用范围的不同.本节将简单介绍线性神经网络的原理,通过实例演示MATLAB神经网络工具箱线性神经网络涉及函数,并讲解线性神经网络的应用.

2.2.1 线性神经网络原理

性神经网络由多个线性神经元模型构成,单个线性神经元模型的结构可以参考图2-3.线性网格的激发函数为线性purelin函数,其输出可以为任意值.

x1x2Wa,1x3?xR?WiRbiRnifyi???k?1Wikxk?biyi?f(ni)?purelin(Wx?b)

图2-3 单线性神经元模型结构

当输入向量为的个数为N,单线性神经元同样由输入系数wi1和阀值bi.当感知器神

14

经元模型中包含多个神经元时,只需要将多个线性神经元串联,并形成网格拓扑机构,

同时对应于n个神经元输出,那么第i个神经元的输出为

k?1 (2-6)

感知器的输出函数由线性传递函数使用purelin函数实现.第i个神经元经过线性传递函数后的输出为

yi?f(ni)?purelin(Wx?b) (2-7)

ni??wikxk?biN在MATLAB命令窗口输入: x=-5:0.01:5; y=purelin(x);

plot(x,y)

运行程序后得到线性神经元purelin函数曲线如图2-4所示.

543210-1-2-3-4-5-5-4-3-2-1012345

图2-4 线性神经元purelin函数曲线

2.2.2 线性神经网络相关的MATLAB函数

MATLAB神经网络工具箱提供了一系列函数进行线性神经网络的设计和分析,下面主要分别介绍线性神经网络构建函数newlin、线性神经网络设计函数newlind.

1. 线性神经网络构建函数newlin newlin函数的调用格式如下: net=nelin(PR,S,ID,LR)

其中,PR为R?2的输入向量最大最小值构成的矩阵,S为输出向量的个数,ID为输入延迟向量,LP为学习速率,学习速率可以使用maxlinlr函数进行计算,通过学习速率越大,网络训练时间越短,但同时也导致学习过程不稳定.如果P为训练样本数据,那么maxlinlr(P)返回一个不带阀值的线性层所需要的最大学习率,而maxlinlr(P,‘bias')返回一个带阀值的线性层所需要的最大学习率. 2. 线性层设计函数newlind函数 在MATLAB神经网路工具箱中,还可以使用newlind设计一个线性层,其调用格式如下:

net=newlind(P,T,Pi)

15

其中P、T分别是训练样本的输入矩阵和目标输出向量,Pi是初始输入延时cell向量.

2.3 多层前向神经网络模型及BP学习算法

前面我们介绍了单层感知器,它的缺点是只能解决线性可分问题,要增强网络的分类能力唯一的方法是采用多层网络,即在输入与输出之间加上隐含层,从而构成多层感知器(Multilayer Perceptrons,MLP).这种由输入层、隐含层(一层或者多层)和输出层构成的神经网络称为多层前向神经网络.

本节将介绍两个常见的多层前向网络:多层感知器和径向基函数神经网络,详细介绍多层感知器的学习算法——著名的误差反向传播算法(BP算法)及其改进算法.

BP算法训练的神经网络,称之为BP神经网络.在人工神经网络的实际应用中,BP网络广泛应用于函数逼近、模式识别/分类、数据压缩等,80%~90%的人工神经网络模型采用BP网络或它的变化形式,它也是前馈网络的核心部分,体现了人工神经网络最精华的部分.所以,本节也会重点探讨BP神经网络的应用.

2.3.1 多层感知器

多层感知器是单层感知器的推广,但是它能够解决单层感知器所不能解决的非线性可分问题.多层感知器由输入层、隐含层和输出层组成,其中隐含层可以是一层或多层.其拓扑结构如图2-5所示.

??????输入层隐层输出层

图2-5 多层感知器模型

输入层神经元的个数为输入信号的维数,隐含层个数以及隐节点的个数视具体情况而定,输出神经元的个数为输出信号的维数.

多层感知器同单层感知器比具有四个明显的特点:

(1)除了输入输出层,多层感知器含有一层或者多层隐单元,隐单元从输入模式中

16