智能计算:神经网络

更新时间:2024-05-12 12:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.人工神经网络简介

近代神经生理学和神经解剖学的研究结果表明,人脑是由约一千多亿个神经元交织在一起的、极其复杂的网状结构,能完成智能、思维、情绪等高级精神活动。人工神经网络(简称NNS),是以计算机网络系统模拟生物神经网络的智能计算系统,是对人脑或自然神经网络的若干基本特性的抽象和模拟。常用的神经网络模型主要有:前馈网络、反馈网络、自组织网络。人工神经网络在经济分析、市场预测、金融趋势、化工最优过程、航空航天器的飞行控制、医学、环境保护等领域都有广阔应用的前景。

1.1 人工神经元模型

人工神经网络有许多种类型,但其基本单元—人工神经元是基本相同的。人工神经元是生物神经元的简单的模仿、简化和抽象,是一个极其简单的计算单元(函数)。如图1是一个典型的人工神经元模型:

x1 x2 ? w1 ? y wn xn 图1 人工神经元模型

神经元实现了R?R的极其简单的非线性函数:

n1?n?if x?0?1, ?, f(x)???y?f?wx???fWx???ii??0, otherwise ??i?1??其中xi—输入,Input(来自其它神经元的信号);

y—输出,output (轴突上的电信号);

wi—权值,weight (突触的强度);

? —阈值、门限,threshold;

f—激励函数、传输函数,activation function, transfer function.

人工神经元依连接方式不同构成不同的神经网络模型。

1.2 前向型神经网络

将多个神经元有机地连接成一个整体,各神经元接受前一层的输入,并

1

输出给下一层,没有反馈,就构成了前向型神经网络。图2是一个多输入、单输出三层前向神经网络的拓扑结构。

x1 ?xi ?xn ? pwij ?v1 vvk vp y?? 输入层 隐含层 输出层 图2 三层前向型神经网络

神经网络的输入为实向量x?(x1,x2,?,xn)?Rn,

wij?R(i?1,2,?,p;j?1,2,?,n)是输入层神经元j与隐含层神经元i之

间的连接权值,vi?R(i?1,2,?,p)为隐含层神经元i与输出层的连接权值,?i?R(i?1,2,?,p)是隐含层神经元i的阈值。设输入层与输出层神经元都是线性的,隐含层有p个神经元,传输函数为?(?),网络的输出结果为y??v??(?wii?1j?1前向型网络可以视为从输入到输出的高度非线性映射。理论上,对于一个三层和三层以上的前向型网络,只要隐层神经元数目足够多,该网络就能以任意精度逼近一个非线性函数。

2. BP网络

2.1 BP神经网络模型

BP神经网络是一种前向型神经网络,BP网络的传输函数?(?)经常采用S型和线性函数:

?p nij?xj??i)。

2

(x)?(1) 对数S型的函数:logsig1; ?x1?eex?e?x(2) 双曲正切S型函数:tansig(x)?x;

e?e?x(3) 线性函数:purelin(x)?x.

BP网络可用于函数逼近、模式识别、分类、数据压缩等。

2.2 BP网络学习规则

BP网络的学习为有监督的学习,即给定一组样本数据,计算网络输出,由目标输出和网络输出定义误差函数E(w,b),网络根据优化学习规则搜索误差极小值时的连接权和阈值,实现对样本数据的正确模拟。具体学习过程主要由以下四部分组成:

1)输入样本顺传播:随即选取网络参数值,输入样本求出它所对应的网络输出。

2)输出误差逆传播:当这些实际的输出值与期望输出值不一样时,或者说其误差大于所限定的数值时,将输出误差由输出层经中间层传向输入层,逐层进行校正,完成对网络参数的更新。

3)循环记忆训练:为使网络的输出误差尽可能的小,对于BP网络输入的每一组训练样本,一般要经过数百次甚至上万次的反复循环记忆训练,才能使网络记住这一样本模式。

这种循环记忆训练实际上就是反复重复上面介绍的输入模式正向传播和输出误差逆传播过程。

4)学习结束的检验:当每次循环记忆结束后,都要进行学习是否结束的检验。检验的目的主要是检查输出误差是否已经符合要求。如果小到了允许的程度,就可以结束整个学习过程,否则还要进行循环训练。

2.3 BP网络的训练

对BP网络进行训练时,首先要提供一组训练样本,其中每个样本由输入样本和输出对组成。当网络的所有实际输出与其目标输出一致时,表明训练结束。否则,通过修正权值,使网络的实际输出与目标输出一致。

实际上针对不同具体情况,BP网络的训练有相应的学习规则,即不同

3

的最优化算法,沿减少目标输出与实际输出之间误差的原则,实现BP网络的函数逼近、向量分类和模式识别。

首先:网络初始化,构造合理的网络结构。其次,利用相应的BP网络学习规则对网络进行训练,求得权值修正后的误差平方和。最后,检查网络误差平方和是否降低到期望误差之下,若是,训练结束,否则继续。训练流程图如下:

开 始 批量输入学习样本并且对输 入和输出量进行归一化处理 参数初始化:最大训练次数,学习精度,隐节点数,初始权值、阈值,初始学习速率等 计算各层的输入和输出值 Yes 计算输出层误差E(q) Yes E(q)<ε N 修正权值和阈值 结 束

图3 BP算法程序流程图

2.4 基于MATLAB的BP神经网络工具箱函数

4

BP网络的常用函数如表1.1所示。

表1.1 BP网络的常用函数表

函数名称 newcf Newff logsig 传递函数 tansig purelin learngd 学习函数 learngdm trainbp 训练函数 trainlm sim 仿真函数 性能函数 mse msereg plotperf 显示函数 plotes plotep errsurf 1) newff

该函数用于创建一个BP网络。调用格式为: net=newff

net=newff(PR,[S1 S2..SN1],{TF1 TF2..TFN1},BTF,BLF,PF) 其中,

net=newff;用于在对话框中创建一个BP网络。 net为创建的新BP神经网络; PR为网络输入向量取值范围的矩阵;

[S1 S2…SNl]表示网络隐含层和输出层神经元的个数; {TFl TF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’;

5

函数类型 前向网络创建函数 函数用途 创建级联前向网络 创建前向BP网络 S型的对数函数 S型的正切函数 纯线性函数 基于梯度下降法的学习函数 梯度下降动量学习函数 BP训练方法 Levenberg-Marquardt 训练方法 仿真网络 均方误差函数 均方误差规范化函数 绘制网络的性能 绘制一个单独神经元的误差曲面 绘制权值和阈值在误差曲面上的位置 计算单个神经元的误差曲面

BTF表示网络的训练函数,默认为‘trainlm’; BLF表示网络的权值学习函数,默认为‘learngdm’; PF表示性能数,默认为‘mse’。 2)newcf

函数用于创建级联前向BP网络, newfftd函数用于创建一个存在输入延迟的前向网络。

3)train

神经网络训练函数。该函数的调用格式为: [net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai) [net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai,VV,TV)

2.5 BP网络的应用举例

例1 在[?1,1]上逼近函数t?sin(?p)的图形。 参考程序如下: %输入样本点 p=-1:0.05:1; t=sin(pi*p);

%在坐标图上绘出样本点 figure; plot(p,t,'O'); title(' 样本点图'); %建立网络

net=newff([-1 1],[10,1],{'tansig','purelin'},'traingdx');

%显示网络初始连接权和偏置值(默认参数值是随机设定) net.iw{1,1}; net.lw{2,1}; net.b{1}; net.b{2};

6

%仿真网络 y1=sim(net,p);

%在坐标图上绘出样本点和网络响应曲线 figure;

plot(p,t,'O',p,y1,'r-'); title('训练前网络响应曲线'); %利用样本点训练网络 net=train(net,p,t);

%显示训练后网络连接权和偏置值 net.iw{1,1}; net.lw{2,1}; net.b{1}; net.b{2};

%计算网络仿真结果 y2=sim(net,p);

%绘出样本点和训练后网络响应曲线 figure;

plot(p,t,'O',p,y2,'r-'); title('训练后网络响应曲线')

注: (1) 网络默认传输函数为:tansig(隐层),purelin(输出层); (2) 缺省训练函数为: trainlm, (Levenberg-Marquardt optimization) 可用训练函数有:

traingd,(gradient descent.);

traingdx(gradient descent momentum and an adaptive learning rate.) trainbfg, (BFGS quasi-Newton method.) trainrp, (resilient backpropagation algorithm) (2) 训练参数设置方法:

net.trainParam.epochs=1000;(最大训练次数) net.trainParam.goal=0.001;(误差函数目标值)

7

net.trainParam.lr=0.3;(学习速率)

3 径向基函数网络

3.1 径向基函数神经网络结构

在人的大脑皮层区域中,局部调节和交叠的感受野是人脑反应的特点。基于感受野这一特性,Moody和Darken提出了一种神经网络结构,即RBF神经网络。网络的结构见图4。

x ??wi y 输入层 隐含层 输出层 图4 RBF神经网络结构图

这是一种前向网络的拓扑结构,输入x?R,输入向量全部直接传递到隐含层的每一个神经元;输出y?R,隐含层到输出层的权值为wi?R,传输函数为线性函数;隐含层的单元是感受野单元,有p个神经元,第i个感受野单元的输出为?i(x)??i(x?ci),(i?1,2,?,p),?i(?)具有局部感受的特点,称?i(?)为径向基函数。经常用的几个典型径向基函数为

122n?(x)?(x?c);?(x)??21(x2?c)(x?c)22?2122;

?(x)?e.?i(?)只有在ci周围的一部分区域有较强反应,这正体现了大脑皮质层的反

映特点。称ci为函数?i(?)的中心,?i为函数的宽度。RBF神经网络的最后

8

输出结果为y??w??(x?ciii?1pi)。

3.2 径向基函数的学习算法

RBF神经网络的参数包括网络权值wj、径向基函数的中心ci及其宽度

?i。参数确定过程主要有以下几种:

方法1:?i预先选定,中心ci随机从学习样本中选取,通过对目标函数的优化计算得到网络权值。

方法2:根据所给样本集用聚类分析方法确定中心ci。具体的算法步骤如下:

1.给定各隐节点的初始中心ci(0);

2.计算距离(欧氏距离)并求出最小距离的节点;

di (t) = ‖p (t) ―ci(t―1)‖, 1≤i≤m

dmin(t)=mindi(t)=dr(t)

式中,ci——第i个隐节点的中心, i=1,2,…,m; ‖·‖——通常为欧氏范数。

3.调整中心:

ci(t)= ci(t―1), 1≤i≤m, i≠r Cr(t)= ci(t―1)+η(p(t)- Cr(t)―1)) 式中,η——学习速率,0<η<1。

4.计算节点r的距离:dr(t)=‖p(t)- Cr(t)‖?i预先选定,或者通过前一步所得中心值,经固定的公式计算得到;然后构造目标函数,选择一种优化方法得到网络的优化权值。

方法3:RBF神经网络的参数值全部通过对目标函数的优化过程求得。

3.3 径向基函数的使用方法

MATLAB中提供了四个径向基函数相关的函数,它们都是创建两层的神经网络,第一层都是径向基层,第二层是线性层或者竞争层。主要的区别是它们权值、阀值计算函数不同或者是否有阀值。

注意:径向基函数网络不需要训练,在创建的时候就自动训练好了。

9

1. net = newrbe(P,T,spread)

newrbe()函数可以快速设计一个径向基函数网络,且设计误差为0。第一层(径向基层)神经元数目等于输入向量的个数,加权输入函数为dist,网络输入函数为netprod;第二层(线性层)神经元数模有输出向量T确定,加权输入函数为dotprod,网络输入函数为netsum。两层都有阀值。 第一层的权值初值为p',阀值初值为0.8326/spread,目的是使加权输入为±spread时径向基层输出为0.5,阀值的设置决定了每一个径向基神经元对输入向量产生响应的区域。

2. [net,tr] = newrb(P,T,goal,spread,MN,DF)

说明

P为输入向量,T为目标向量,GOAL为圴方误差,默认为0,SPREAD为径向基函数的分布密度,默认为1,MN为神经元的最大数目,DF为两次显示之间所添加的神经元神经元数目。

该函数和newrbe一样,只是可以自动增加网络的隐层神经元数模直到均方差满足精度或者神经元数模达到最大为止。 P=-1:0.1:1; T=sin(P); spread=1; mse=0.02;

net=newrb(P,T,mse,spread); t=sim(net,P); plot(P,T,'r*',P,t)

3. net = newgrnn(P,T,spread)泛回归网络(generalized regression neural network)

广义回归网络主要用于函数逼近。它的结构完全与newbre的相同,但是有以下几点区别(没有说明的表示相同): (1)第二网络的权值初值为T (2)第二层没有阀值

(3)第二层的权值输入函数为normpod,网络输入函数为netsum

10

>> P=0:1:20; >> T=exp(P).*sin(P); >> net=newgrnn(P,T,0.7); >> p=0:0.1:20; >> t=sim(net,p); >> plot(P,T,'*r',p,t)

4. net = newpnn(P,T,spread)概率神经网络(probabilistic neural network) 该网络与前面三个最大的区别在于,第二层不再是线性层而是竞争层,并且竞争层没有阀值,其它同newbre,故PNN网络主要用于解决分类问题。 注意:由于第二层是竞争层,故输入/输出向量必须使用ind2vec/vec2ind函数进行转换,也就是将索引转换为向量或者向量转换为索引。

5. simurb ( ) 仿真函数。

a=simurb(p,w1,b1,w2,b2)

式中,p为输入矢量,w1,b1为径向基神经元层的权值和阀值,w2,b2为线性神经元的权值和阀值。

6. rodbas( )

径向基传递函数,其使用方式多种: radbas(n) radbas(z,b)

其中radbas(n)函数可对网络输入矩阵n中的所有元素如同径向基函数。 radbas(z,b)函数提供成批处理矢量,并且提供阀值的情况,这时阀值b与加权输入矩阵z是分开的,阀值b乘以z 中的每个矢量,以形成网络的输入矢量,然后利用径向基函数网络输入转换成输出。

对于径向基函数的训练可用两个函数来实现: 7. 训练函数 (1)solverb ( )

利用solverb ( )函数可得到径向基函数隐层的权值w1和阀值b1,还得到了线性输出层的权值w2和阀值b2。

11

[w1, b1, w2, b2]=solverb(p, t, tp) 其中设计参数tp指示如何进行训练。

tp(1)指定更新显示之间的迭代次数,其缺省值25; tp(2)指定最多的神经元数,其缺省值100; tp(3)误差平方和门限,缺省值为0.02; tp(4)指定径向基层的宽度,缺省值1.0。 (2)solverbe( )

函数solverbe( )的功能是精确径向基函数求解。利用solverbe( )也可得到径向基网络隐层的权值w1和阀值b1,以及线性输出层的权值w2和阀值b2。其调用格式如下

[w1, b1, w2, b2]=solverbe(p, t, sc)

式中的可逆变量sc为径向基函数的宽度,即从函数值为1到其值为0.5之间的距离,其缺省值为1。

3.4 RBF网络的应用举例

例2 建立一个径向基神经网络,对非线性函数y=sqrt(x)进行逼近,并作出网络的逼近误差曲线。

%输入从0开始变化到5, 每次变化幅度为0.1 x=0:0.1:5; y=sqrt(x);

%建立一个目标误差为0, 径向基函数的分布密度为0.5,隐含层神经元个数的最大值为20,每增加5个神经元显示一次结果

net=newrb(x,y,0,0.5,20,5); t=sim(net,x); plot(x,y-t,’*-’)

误差曲线和逼近函数曲线如下:

12

13

本文来源:https://www.bwwdw.com/article/lm3g.html

Top