当前位置:首页 >> 互联网 >>

MATLAB神经网络工具箱(函数拟合)_图文

MATLAB神经网络工具箱 介绍及实验要求

神经元模型
Neuron Model: 多输入,单输出,带偏置
?输入:R维列向量

p ? [ p1,? pR ]T
阈值:标量 b

?权值:R维行向量 w ? [w11 ,? w1R ] ?求和单元 n ? ? p w ?b i 1i
i ?1 R

?传递函数 f ?输出

a ? f ( wp ? b)

常用传递函数
? 阈值函数
?1 (n ? 0) MATLAB函数: hardlim a ? f (n) ? hardlim(n) ? ? ?0 (n ? 0)

a 1 -1

-b

Wp

? 1 (n ? 0) a ? f (n) ? hard lim s(n) ? ? ??1 (n ? 0)

MATLAB函数: hardlims

线性函数
?

Purelin Transfer Function :

a ? f (n) ? n

a

n

MATLAB函数: purelin

Sigmoid函数
? Sigmoid
? 特性:

Function :

?值域a∈(0,1) ?非线性,单调性 ?无限次可微 ?|n|较小时可近似线性 函数 ?|n|较大时可近似阈值 函数

对数Sigmoid函数 1 a ? f (n) ? 1 ? e? n

正切Sigmoid函数
en ? e? n a ? tanh(n) ? n ? n e ?e

MATLAB函数: logsig(对数), tansig(正切)

单层神经网络模型
R维输入, S个神经元的单层神经网络模型

? w11 ?w W ? ? 21 ?? ? ? wS 1

w12 ? w1R ? w21 ? w2 R ? ? ? ? ?? ? wS 1 ? wSR ?

? b1 ? ?b ? b ? ? 2? ??? ? ? ?bS ?

a ? f (Wp + b)

多层神经网络模型

前馈神经网络
? 前馈神经网络(feed

forward NN):各神经元 接受前级输入,并输出到下一级,无反馈, 可用一有向无环图表示。 ? 前馈网络通常分为不同的层(layer),第i层的 输入只与第i-1层的输出联结。 ? 可见层:输入层(input layer)和输出层(output layer) ? 隐藏层(hidden layer) :中间层

感知器(perceptron):
? ?

单层前馈网络 传递函数为阈值函数

? 主要功能是模式分类

感知器的生成
函数newp用来生成一个感知器神经网络

newp

net = newp( pr, s, tf, lf )

? net: 函数返回参数,表示生成的感知器网络

? pr: 一个R×2矩阵, 由R维输入向量的每维最小值和最
大值组成 ? s: ? tf: ? lf: 神经元的个数 感知器的传递函数, 默认为hardlim, 可选hardlims 感知器的学习函数,默认为learnp, 可选learnpn

net = newp([-2,+2;-2,+2],2) %生成一个二维输入,两个神经元的感知器

感知器的权值和阈值初始化
? newp默认权值和阈值为零(零初始化函数initzero). net = newp([-2,+2;-2,+2],2); W=net.IW{1,1} %显示网络的权值 b=net.b{1} %显示网络的阈值 W= 0 0 b= 0

0 0

0

? 改变默认初始化函数为随机函数rands net.inputweights{1,1}.initFcn = ‘rands’; net.biases{1}.initFcn = ‘rands’; net =init(net); %重新初始化

? 直接初始化定义权值和阈值 net.IW{1,1}=[1 2;3 4]; net.b{1}=1

感知器学习
? 感知器学习算法
权值增量: 阈值增量: 权值更新: 阈值更新:

?W ? (t ? a) pT ? epT
?b ? t ? a ? e

W new ? W old ? ?W bnew ? bold ? ?b

? 算法改进
(t ? a) pT epT ?W ? ? p p

输入样本归一化

权值和阈值训练与学习函数
设计好的感知器并不能马上投入使用. 通过样本训练, 确定感知器的权值和阈值.

train

net=train(net, P, T)

被训练网络

输入向量

目标向量

net.trainParam.epochs=10 ; %预定的最大训 练次数为10, 感知器经过最多训练10次后停止,

adapt

net=adapt(net, P, T) 自适应训练函数

权值和阈值学习函数
learnp
dW=learnp(W,P,Z,N,A,T,E,D,gW,gA,LP,LS) dW:权值或阈值的增量矩阵 W:权值矩阵或阈值向量 P:输入向量 T:目标向量 E:误差向量 其他可以忽略,设为[ ]

learnpn

归一化学习函数

网络仿真函数
sim
a = sim(net, P)

网络输出

输入向量

?分类结果显示绘图函数

plotpv plotpc

plotpv(P,T)

画输入向量的图像

plotpc(W,b)

画分类线

例: 创建一个感知器
根据给定的样本输入向量P和目标向量T, 以及需分类 的向量组Q, 创建一个感知器, 对其进行分类.
P=[-0.5 -0.6 0.7;0.8 0 0.1]; T=[1 1 0]; net=newp([-1 1;-1 1],1); %已知样本输入向量 %已知样本目标向量 %创建感知器

handle=plotpc(net.iw{1},net.b{1});
net.trainParam.epochs=10; net=train(net,P,T); Q=[0.6 0.9 -0.1;-0.1 -0.5 0.5];

%返回划分类线的句柄
% 设置训练最大次数 %训练网络 %已知待分类向量

Y=sim(net,Q);
figure; plotpv(Q,Y); handle=plotpc(net.iw{1},net.b{1},handle)

%二元分类仿真结果
%新建图形窗口 %画输入向量 %画分类线

实验一 利用感知器进行分类(1)
一个经过训练的感知器对5个输入向量进行分类(2类)。 Step 1 画输入向量的图像
两个长度为5的向量构成输入样本矩阵P,行向量T为目标向量。利用PLOTPV画 出这个向量的图像。例如: P = [-0.5 -0.5 +0.3 -0.1 -4; -0.5 +0.5 -0.5 +1.0 5]; T = [1 1 0 0 1]; plotpv(P,T); % plotpv函数利用感知器的输入向量和目标向量来画输入向量的图像

Step 2

建立神经网络

MATLAB提供函数newp来创建一个指定的感知器。第一个参数指定了期望 的两个输入向量的取值范围,第二个参数指定了只有一个神经元。 net = newp([-40 1;-1 50],1); 注意:这个神经元的传递函数是hardlim函数,也就是阶跃函数。取0,1两个值。 Hardlims函数,取-1,1两个值。

实验一 利用感知器进行分类(2)
Step3
hold on linehandle = plotpc(net.IW{1},net.b{1}); //plotpc函数用来画分类线

添加神经元的初始化值到分类图

初始化的权值被设为0,因此任何输入都会给出同样的输出,并且分类线不会 出现在这个图中,不用害怕,我们会继续训练这个神经网。

Step4

训练神经网络

Matlab提供了adapt函数来训练感知器,adapt函数返回一个新的能更好的执 行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3个角度去调 整,画分类线一直到误差为0为止。 E = 1; //E为误差 net.adaptParam.passes = 3; //决定在训练过程中重复次数 while (sse(E)) //sse函数是用来判定误差E的函数

[net,Y,E] = adapt(net,P,T); //利用输入样本调节神经网net
linehandle = plotpc(net.IW{1},net.b{1},linehandle);/ /画出调整以后的分类线 drawnow; //延迟一段时间

end

实验一 利用感知器进行分类(3)
Step 5 模拟sim
sim函数能被用来划分任何别的输入向量,例如划分一个输入向量[0.7; 1.2].这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从 最初的训练集取分开来。 p = [0.7; 1.2]; a = sim(net,p); //利用模拟函数sim计算出新输入p的神经网络的输出 plotpv(p,a);

circle = findobj(gca,'type', 'line');
set(circle,'Color','red'); 打开hold,以便于以前的图像不被删除。增加训练装置和分类线在图中。 hold on; plotpv(P,T); plotpc(net.IW{1},net.b{1}); hold off; axis([-2 2 -2 2]); 这个感知器正确的区分了我们的新点(用红色表示)作为”zero”类(用圆圈表示), 而不是”one”类(用+号表示),尽管需要比较长的训练时间,这个感知器仍然适当的进 行了学习。最后放大感兴趣的区域。

BP网络
? 多层前馈网络

? 传递函数:隐层采用S形函数,输出层S形函数或线性函数

? 主要功能: 函数逼近, 模式识别, 信息分类

BP网络的生成
newff
函数newff用来生成一个BP网络
net=newff(PR,[S1 S2...SN],{TF1 TF2... TFN},BTF,BLF,PF) PR: 一个R×2矩阵, 由R维输入向量的每维最小值和最大值组成 Si: 第i层的神经元个数 TFi: 第i层的传递函数, 默认为tansig BTF: 训练函数, 默认为trainlm BLF: 学习函数, 默认为learngdm PF: 性能函数, 默认为mse net=newff([0,10;-1,2],[5,1],{‘tansig’,’purelin’},’trainlm’);
%生成一个两层BP网络,隐层和输出层神经的个数为5和1, 传递函数分别为 tansig和purelin, 训练函数为trainlm, 其他默认

BP网络的初始化
newff 函数在建立网络对象的同时, 自动调用初始化函数, 根据缺省的参数设置网络的连接权值和阈值. 使用函数init可以对网络进行自定义的初始化. 通过选择 初始化函数, 可对各层连接权值和阈值分别进行不同的初始 化.

BP网络的学习规则
权值和阈值的调节规则采用误差反向传播算法(back propagation). 反向 传播算法分二步进行,即正向传播和反向传播。

1.正向传播
输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层 之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对 下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比 较,如果现行输出不等于期望输出,则进入反向传播过程。

2.反向传播
反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个 隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。

BP算法实质是求取误差函数的最小值问题。这种算法采用非 线性规划中的最速下降方法,按误差函数的负梯度方向修改 权系数。

BP网络的快速学习算法与选择
MATLAB神经网络工具箱对常规BP算法进行改进,提供 了一系列快速算法,以满足不同问题的需要
学习算法 trainlm 适用问题类型
函数拟合

收敛性能
收敛快,误差小

占用存储空间


其他特点
性能随网络规模 增大而变差 性能随网络训练 误差减小而变差 尤其适用于网络 规模较大的情况 计算量岁网络规 模的增大呈几何 增长 适用于提前停止 的方法

trainrp
trainscg trainbfg traingdx

模式分类
函数拟合 模式分类 函数拟合

收敛最快
收敛较快 性能稳定 收敛较快

较小

中等

较大

模式分类

收敛较慢

较小

BP网络的训练
利用已知的”输入—目标”样本向量数据对网络进行训练, 采用train 函数来完成. 训练之前, 对训练参数进行设置 net = train(net, P, T)

训练参数
net.trainParam.epochs net.trainParam.show

参数含义
训练步数 显示训练结果的间隔步数

默认值
100 25

net.trainParam.goal
net.trainParam.time net.trainParam.lr

训练目标误差
训练允许时间 学习率

0
INf 0.01

BP网络的设计(1)
?网络层数
已经证明,单隐层的BP网络可以实现任意非线性映射. BP网络的隐层数一般不超过两层.

?输入层的节点数
输入层接收外部的输入数据, 节点数取决于输入向量 的维数

?输出层的节点数
输出层的节点数取决于输出数据类型和该类型所需 的数据大小. 对于模式分类问题,节点数为 log 2 m

BP网络的设计(2)
?隐层的节点数
隐层的节点数与求解问题的要求,输入输出单元数多 少有关. 对于模式识别/分类的节点数可按下列公式设计
n ? ni ? n0 ? a

其中 n 为隐层节点数, ni 为输入节点数, a 为1~10之间的整数

?传递函数
隐层传递函数采用S型函数, 输出层采用S型函数或 线性函数

?训练方法及其参数选择
针对不同应用, BP网络提供了多种训练学习方法.

BP网络设计实例
采用动量梯度下降算法训练BP网络. 训练样本
%定义训练样本 p=[-1 -1 3 1;-1 1 5 -3]; t=[-1 -1 1 1]; %创建一个新的BP网络 net=newff(minmax(p),[3 1],{'tansig','purelin'},'traingdm'); %设置训练参数 net.trainParam.epochs=1000; net.trainParam.goal=0.001; net.trainParam.show=50; net.trainParam.lr=0.05; net.trainParam.mc=0.9;%动量因子,缺省为0.9 net=train(net,p,t); % 训练网络 A=sim(net,p) %网络仿真

训练误差变化曲线(每次不同)

训练误差变化曲线

目标线

实验2: BP网络用于曲线拟合
? 要求设计一个简单的BP网络,实现对非线性函数 的逼近。通过改变该函数的参数以及BP网络隐层 神经元的数目,来观察训练时间以及训练误差的 变化情况。

Step1: 将要逼近的非线性函数设为正弦函数
k = 1; p = [-1:.05:1];

t = sin(k*pi*p);
plot(p,t,'-')

title('要逼近的非线性函数');
xlabel('时间'); ylabel('非线性函数');

? Step 2: 网络建立 应用函数newff()建立BP网络结构,为二层BP 网络。隐层神经元数目n可以改变,暂设为 10,输出层有一个神经元。选择隐层和输 出层神经元传递函数分别为tansig函数和 purelin函数,网络训练算法采用trainlm

n = 10; net = newff(minmax(p), [n,1], {'tansig' 'purelin'}, 'trainlm'); % 对于该初始网络,可以应用sim()函数观察网络输出 y1 = sim(net,p); % 同时绘制网络输出曲线,并与原函数相比较 figure; plot(p,t,'-',p,y1,'--') title('未训练网络的输出结果'); xlabel('时间'); ylabel('仿真输出 - - 原函数 -');

因为使用newff()函数建立网 络时,权值和阈值的初始化 是随机的,所以网络输出的 结果很差,根本达不到函数 逼近的目的,并且每次运行 结果也有所不同。

? Step 3: 网络训练 ? 应用函数train()对网络进行训练之前,要先设置训练 参数。将训练时间设置为50,精度设置为0.01,其余 用缺省值。 ? 训练后得到的误差变化过程如图:

net.trainParam.epochs = 50; net.trainParam.goal = 0.01; net = train(net,p,t);

Stet 4: 网络测试 对于训练好的网络进行仿真 并绘制网络输出曲线,与原始非线性函数曲线以及未训 练网络的输出结果曲线相比较
y2 = sim(net,p); figure; plot(p,t,'-',p,y1,'--',p,y2,'-.') title('训练后网络的输出结果'); xlabel('时间'); ylabel('仿真输出'); 从图中可以看出,得到的曲 线和原始的非线性函数曲线 很接近。这说明经过训练后, BP网络对非线性函数的逼近 效果相当好。





? 改变非线性函数的频率k值,和BP网络隐层神经元 的数目,对于函数逼近的效果有一定的影响。 ? 网络非线性程度越高,对于BP网络的要求就越高, 则相同的网络逼近效果要差一些;隐层神经元的 数目对于网络逼近效果出有一定的影响,一般来 说,隐层神经元数目越多,则BP网络逼近能力越 强,而同时网络训练所用的时间相对来说也要长 一些。 ? 关于这些,大家可以自己通过参数调整试一试, 并在实验报告中有所反映。

思考题
设计一BP网络逼近函数

z?e

x2 ? y 2

实验要求
? 完成实验一和实验二 ? 做思考题 ? 本次实验不用上交,大家自己练习,下机结束时 不管做得如何,把所有m文件压缩用名字学号命名 上传至指定位置 ftp://192.168.113.150/上传目录/智能系统导论上传

参考书
? 《Matlab神经网络与应用》,董长虹编著, 国防工业出版社,2005年1月印刷


相关文章:
MATLAB神经网络工具箱(函数拟合)_图文.ppt
MATLAB神经网络工具箱(函数拟合)_互联网_IT/计算机_专业资料。MATL
MATLAB神经网络工具箱_图文.pdf
MATLAB神经网络工 具箱中的神经网络 模型 神经网络工具箱简介 MATLAB 7对应的...神经网络工具箱的主要应用函数逼近和模型拟合 信息处理和预测 神经网络控制 故障...
第2章MATLAB神经网络工具箱函数_图文.ppt
第2章MATLAB神经网络工具箱函数 - 第2章 MATLAB神经网络 工具箱函数 2.1 MATLAB神经网络工具箱函数 2.2 MATLAB神经网络工具箱的图形用户界面 1 利用神经网...
2MATLAB函数与神经网络工具箱_图文.ppt
2MATLAB函数神经网络工具箱 - MATLAB函数神经网络工具箱 编者 Outline 1.MATLAB常用命令 ? 2.矩阵生成和基本运算 ? 3.数学函数 ? 4.图形相关函数...
MATLAB神经网络工具箱及实验要求_图文.ppt
MATLAB神经网络工具箱 介绍及实验要求 神经元模型 Neuron Model: 多输入,单输出...适用问题类型函数拟合 收敛性能收敛快,误差小 占用存储空间大 其他特点性能随网络...
2019matlab神经网络工具箱简介和函数及示例教育精品.pp....ppt
2019matlab神经网络工具箱简介和函数及示例教育精品.ppt - 第十一章 神经网络工具 箱函数 MATLAB的神经网络工具箱简 ? 介 构造典型神经网络的激活函数,使设计者对...
第5章 人工神经网络_matlab工具箱_图文.ppt
第5章 人工神经网络_matlab工具箱 - 模式识别讲义 第5章 人工神经网络 matlab神经网络工具箱 嘉应学院 主要内容 ?0 引例:神经网络函数拟合(预测) ?1 matla...
第5章_人工神经网络_matlab工具箱_图文.ppt
第5章_人工神经网络_matlab工具箱 - 模式识别讲义 第5章 人工神经网络 matlab神经网络工具箱 黄可坤 嘉应学院 主要内容 ?0 引例:神经网络函数拟合(预测) ...
2-2MATLAB神经网络工具箱中的神经网络模型_图文.ppt
MATLAB神经网络工 具箱中的神经网络 模型 Matlab的首创者Cleve Moler博士在数值...神经网络工具箱的主要应用函数逼近和模型拟合 ? 信息处理和预测 ? 神经网络控制...
MATLAB神经网络工具箱_图文.ppt
MATLAB神经网络工具箱_机械/仪表_工程科技_专业资料。MATLAB神经网络工具箱 介绍...BP网络的实例分析 BP网络用于曲线拟合实例:设计要求:设计一个简单的BP网络,实现...
2MATLAB函数与神经网络工具箱_图文.ppt
2MATLAB函数神经网络工具箱 - MATLAB函数神经网络工具箱 编者 Outline ? 1.MATLAB常用命令 ? 2.矩阵生成和基本运算 ? 3.数学函数 ? 4.图形相关函...
MATLAB神经网络工具箱_图文.ppt
MATLAB神经网络工具箱_工学_高等教育_教育专区。MATLAB神经网络工具箱 介绍及实验...函数拟合 收敛快,误差小 大 模式分类 收敛最快 较小 函数拟合 模式分类 收敛...
Matlab神经网络工具箱介绍与数值试验.doc
第四章 Matlab 神经网络工具箱与数值试验 9 8 7 6 5 4 3 2 1 0 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 图 5.8 指数函数拟合 5) 复合函数拟合 使用...
MATLAB神经网络工具箱中的神经网络模型_图文.ppt
MATLAB神经网络工具箱中的神经网络模型_工学_高等教育_教育专区。MATLAB神经网络...神经网络工具箱的主要应用函数逼近和模型拟合 ? 信息处理和预测 ? 神经网络控制...
MATLAB神经网络工具箱及实验要求_图文.ppt
MATLAB神经网络工具箱 介绍及实验要求 神经元模型 Neuron Model: 多输入,单输出...适用问题类型函数拟合 收敛性能收敛快,误差小 占用存储空间大 其他特点性能随网络...
基于MATLAB神经网络工具箱的BP网络实现_图文.pdf
,如在神经网络工具箱中,MATLAB提供了许多有关神经网络设计、训练和仿真的函数。...进行BP神经网络设计时,需要考虑以下问题:网络 可得到如图2所示的神经网络拟合曲线...
第5章_人工神经网络_matlab工具箱_图文.ppt
模式识别讲义第5章 人工神经网络 章 matlab神经网络工具箱 神经网络工具箱 黄可坤嘉应学院 主要内容 0 引例 神经网络函数拟合 预测 引例:神经网络函数拟合 ...
MATLAB神经网络工具箱中的神经网络模型_图文.ppt
MATLAB神经网络神经网络工 具箱中的神经网络 模型 神经网络工具箱简介 MATLAB...神经网络工具箱的主要应用函数逼近和模型拟合 信息处理和预测 神经网络控制 故障...
Matlab的神经网络工具箱入门.doc
Matlab神经网络工具箱入门_计算机软件及应用_IT/计算机_专业资料。在网上下载了...feedforwardnet - 前馈神经网络。 fitnet - 函数拟合神经网络。 layrecnet - ...
基于MATLAB神经网络工具箱的线性神经网络实现.pdf
基于MATLAB神经网络工具箱的线性神经网络实现 - 电子科技 2005 年第 1 期(总第 184 期) 基于 MATLAB 神经网络工具箱的线性神经网络实现 温浩,赵国庆 (西安电子...