当前位置:文档之家› matlab BP神经网络

matlab BP神经网络

matlab BP神经网络
matlab BP神经网络

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

最新版本的神经网络工具箱几乎涵盖了所有的神经网络的基本常用模型,如感知器和BP网络等。对于各种不同的网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便[16]。Matlab R2007神经网络工具箱中包含了许多用于BP网络分析与设计的函数,BP网络的常用函数如表3.1所示。

3.1.1BP网络创建函数

1) newff

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

net=newff

net=newff(PR,[S1S2..SN1],{TF1TF2..TFN1},BTF,BLF,PF)

其中,

net=newff;用于在对话框中创建一个BP网络。

net为创建的新BP神经网络;

PR为网络输入向量取值范围的矩阵;

[S1S2…SNl]表示网络隐含层和输出层神经元的个数;

{TFlTF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’;

BTF表示网络的训练函数,默认为‘trainlm’;

BLF表示网络的权值学习函数,默认为‘learngdm’;

PF表示性能数,默认为‘mse’。

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

3.1.2神经元上的传递函数

传递函数是BP网络的重要组成部分。传递函数又称为激活函数,必须是连续可微的。BP网络经常采用S型的对数或正切函数和线性函数。

1) logsig

该传递函数为S型的对数函数。调用格式为:

A=logsig(N)

info=logsig(code)

其中,

N:Q个S维的输入列向量;

A:函数返回值,位于区间(0,1)中;

2)tansig

该函数为双曲正切S型传递函数。调用格式为:

A=tansig(N)

info=tansig(code)

其中,

N:Q个S维的输入列向量;

A:函数返回值,位于区间(-1,1)之间。

3)purelin

该函数为线性传递函数。调用格式为:

A=purelin(N)

info=purelin(code)

其中,

N:Q个S维的输入列向量;

A:函数返回值,A=N。

3.1.3BP网络学习函数

1)learngd

该函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习效率,来计算权值或阈值的变化率。调用格式为:

[dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)

[db,ls]=learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)

info=learngd(code)

2)learngdm函数为梯度下降动量学习函数,它利用神经元的输入和误差、权值或阈值的学习速率和动量常数,来计算权值或阈值的变化率。

3.1.4BP网络训练函数

1)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) traingd函数为梯度下降BP算法函数。traingdm函数为梯度下降动量BP算法函数。

3.2BP网络在函数逼近中的应用

3.2.1问题的提出

BP网络由很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面将通过实例来说明BP网络在函数逼近方面的应用。

要求设计一个BP网络,逼近以下函数:g(x)=1+sin(k*pi/4*x),实现对该非线性函数的逼近。其中,分别令k=1,2,4进行仿真,通过调节参数(如隐藏层节点个数等)得出信号的频率与隐层节点之间,隐层节点与函数逼近能力之间的关系。

3.2.2基于BP神经网络逼近函数

步骤1:假设频率参数k=1,绘制要逼近的非线性函数的曲线。函数的曲线如图3.2所示

k=1;

p=[-1:.05:8];

t=1+sin(k*pi/4*p);

plot(p,t,'-');

title('要逼近的非线性函数');

xlabel('时间');

ylabel('非线性函数');

图3.2要逼近的非线性函数曲线

步骤2:网络的建立

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

n=3;

net = newff(minmax(p),[n,1],{'tansig' 'purelin'},'trainlm');

对于初始网络,可以应用sim()函数观察网络输出。

y1=sim(net,p);

figure;

plot(p,t,'-',p,y1,':')

title('未训练网络的输出结果');

xlabel('时间');

ylabel('仿真输出--原函数-');

同时绘制网络输出曲线,并与原函数相比较,结果如图3.3所示。

图3.3未训练网络的输出结果

其中“”代表要逼近的非线性函数曲线;

“‥‥‥”代表未经训练的函数曲线;

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

步骤3:网络训练

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

图3.4训练过程

net.trainParam.epochs=50; (网络训练时间设置为50)

net.trainParam.goal=0.01;(网络训练精度设置为0.01)

net=train(net,p,t);(开始训练网络)

TRAINLM-calcjx, Epoch 0/50, MSE 9.27774/0.01, Gradient 13.3122/1e-010

TRAINLM-calcjx, Epoch 3/50, MSE 0.00127047/0.01, Gradient 0.0337555/1e-010

TRAINLM, Performance goal met.

从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。

步骤4:网络测试

对于训练好的网络进行仿真:

y2=sim(net,p);

figure;

plot(p,t,'-',p,y1,':',p,y2, '--')

title('训练后网络的输出结果');

xlabel('时间');

ylabel('仿真输出');

绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图3.5所示。

图3.5 训练后网络的输出结果

其中“”代表要逼近的非线性函数曲线;

“‥‥‥”代表未经训练的函数曲线;

“―――”代表经过训练的函数曲线;

从图中可以看出,得到的曲线和原始的非线性函数曲线很接近。这说明经过训练后,BP网络对非线性函数的逼近效果比较好。

3.2.3不同频率下的逼近效果

改变非线性函数的频率和BP函数隐层神经元的数目,对于函数逼近的效果有一定的影响。网络非线性程度越高,对于BP网络的要求越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果也有一定影响,一般来说隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。

下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明。

(1)频率参数设为k=2,当隐层神经元数目分别取n=3、n=6时,得到了训练后的网络输出结果如图3.6,3.7所示。

图3.6 当n=3时训练后网络的输出结果图3.7当n=6时训练后网络的输出结果

其中“”代表要逼近的非线性函数曲线;

“‥‥‥”代表未经训练的函数曲线;

“―――”代表经过训练的函数曲线;

(2)频率参数设为k=4,当隐层神经元数目分别取n=6、n=8时,得到了训练后的网络输出结果如图3.8,3.9所示。

图3.8 当n=6时训练后网络的输出结果图3.9 当n=8时训练后网络的输出结果

其中“”代表要逼近的非线性函数曲线;

“‥‥‥”代表未经训练的函数曲线;

“―――”代表经过训练的函数曲线;

(2)频率参数设为k=8,当隐层神经元数目分别取n=10、n=15时,得到了训练后的网络输出结果如图3.10,3.11所示。

图3.10 当n=10时训练后网络的输出结果图3.11 当n=15时训练后网络的输出结果

其中“”代表要逼近的非线性函数曲线;

“‥‥‥”代表未经训练的函数曲线;

“―――”代表经过训练的函数曲线;

3.2.4讨论

通过上述仿真结果可知,当k=1,n=3时;k=2,n=6时;k=4,n=8时;k=8,n=15时,BP神经网络分别对函数取得了较好的逼近效果。由此可见,n取不同的值对函数逼近的效果有很大的影响。改变BP网络隐层神经元的数目,可以改变BP神经网络对于函数的逼近效果。隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。

3.3BP网络在样本含量估计中的应用

3.3.1问题的提出

这是一个神经网络在医学中应用的例子。拟设计一台仪器,通过对血液样本进行光谱分析来测试血清中胆固醇水平。共采集了264位病人的血液样本,对其光谱分析共发现21种光谱波长。对这些病人,通过血清分离,同样也测量了hdl、ldl、vldl胆固醇水平。

(1)将数据导入Matlab工作空间,进行主要成分的分析。数据文件为choles_all.ma t。

loadcholes_all %matlab中有一个choles_all.mat文件它包含了本问题需要的原始数据[pn,meanp,stdp,tn,meant,stdt]=prestd(p,t); %prestd 函数对样本数据作归一化处理[ptrans,sransMat]=prepca(pn,0.001);%利用 prepca 函数对归一化后的样本数据进行主元分析

这里剔除了一些数据,只保留了所占99.9%的主要成分数据。下面检验一下转换后数据矩阵的大小。

[R,Q]=size(ptrans)

R =

4

Q =

264

从中可以看出通过主要成分分析,输入数据从21组减少到4组,由此可见原始数据有着很大的冗余度。

(2) 将这些数据分成几个部分,分别用于训练、验证和测试。将数据的1/4用于验证、1/4用于测试,其余的用于训练网络。采用等间隔的方式在原始数据中抽取出这些数据。

iitst=2:4:Q;

iival=4:4:Q;

iitr=[1:4:Q3:4:Q];

val.P=ptrans(:,iival);val.T=tn(:,iival);

test.P=ptrans(:,iitst);test.T=tn(:,iitst);

ptr=ptrans(:,iitr);ttr=tn(:,iitr);

3.3.2基于BP神经网络对胆固醇含量估计

步骤一:网络建立

一切准备工作做好后,开始建立网络。在本例中,建立一个两层网络,隐层的传递函数采用tan-sigmoid,输出层采用线性传递函数。隐层神经元初步设计为五个,因为需要得到三个目标,网络输出层设计为三个神经元。

net=newff(minmax(ptr),[53],{'tansig' 'purelin'},'trainlm');

步骤二:网络训练

进行网络训练,其训练过程如图3.12所示。

Validation

Train

Test

图3.12训练过程

net.trainParam.show=5;

[net,tr]=train(net,ptr,ttr,[],[],val,test);

TRAINLM-calcjx, Epoch 0/100, MSE 5.23521/0, Gradient 5.13228/1e-010

TRAINLM-calcjx, Epoch 5/100, MSE 0.578625/0, Gradient 1.62833/1e-010

TRAINLM-calcjx, Epoch 10/100, MSE 0.352352/0, Gradient 0.505629/1e-010

TRAINLM-calcjx, Epoch 15/100, MSE 0.340796/0, Gradient 0.404806/1e-010

TRAINLM-calcjx, Epoch 16/100, MSE 0.334648/0, Gradient 0.513826/1e-010

TRAINLM, Validation stop.

可以看出,经过20次训练后,由于验证误差的增加,训练停止。将训练误差,验证误差和测试误差绘制在一副图中,如图3.13所示,这样就可以更加直观地观察训练过程。

plot(tr.epoch,tr.perf,'-',tr.epoch,tr.vperf,':',tr.epoch,tr.tperf,'-.')

legend('Training','Validation','Test',-1);

ylabel('平方差');

xlabel('时间')

图3.13训练误差、验证误差、测试误差曲线

步骤三:输出结果

最后,对网络响应进行分析,将所有的数据都放在整个数据集中,包括训练数据、验证数据和测试数据,然后网络输出和相应的期望输出向量进行线性回归分析。线性回归之前需要对网络输出进行反规范转换,因为有三组输出值,所以应进行三次线性回归。其结果如图3.14所示。

an=sim(net,ptrans);

a=poststd(an,meant,stdt);

fori=1:3

figure(i)

[m(i),b(i),r(i)]=postreg(a(i,:),t(i,:)); %postreg( )将三组输出进行线性回归分析

End

(a)

(b) (c)

图3.14 线性回归结果

(a) hdl线性回归;(b) ldl线性回归;(c) vhdl线性回归

3.3.3 不同条件下的输出结果

对BP网络型进行改进,将隐层神经元数目加为15个,观察其输出结果其训练过程如图3.16所示。三种误差曲线如图3.17所示,改进后的线性回归结果如图3.15所示。

图3.16 训练过程

net=newff(minmax(ptr),[20 3],{'tansig' 'purelin'},'trainlm');

[net,tr]=train(net,ptr,ttr,[],[],val,test);

TRAINLM-calcjx, Epoch 0/100, MSE 15.4753/0, Gradient 16.3115/1e-010 TRAINLM-calcjx, Epoch 12/100, MSE 0.216075/0, Gradient 0.204225/1e-010 TRAINLM, Validation stop.

图3.17 三种误差曲线

plot(tr.epoch,tr.perf,'-',tr.epoch,tr.vperf,':',tr.epoch,tr.tperf,'-.')

legend('Training','Validation','Test',-1);

ylabel('平方差');

xlabel('时间')

plot(tr.epoch,tr.perf,'-',tr.epoch,tr.vperf,':',tr.epoch,tr.tperf,'-.')

an=sim(net,ptrans);

a=poststd(an,meant,stdt);

fori=1:3

figure(i)

[m(i),b(i),r(i)]=postreg(a(i,:),t(i,:));

end

[m(1),b(1),r(1)]=postreg(a(1,:),t(1,:));

同样将所有的数据都放在整个数据集中,包括训练数据、验证数据和测试数据,然后网络输出和相应的期望输出向量进行线性回归分析。最后线性回归的输出结果如图3.15所示。

(a)(b)

(c)

图3.15 线性回归结果

(a) hdl线性回归;(b) ldl线性回归;(c) vhdl线性回归

3.3.4 讨论

综上两种情况比较下,其中当隐层神经元为五个时,前面两个输出期望值的跟踪较好,相应的R值几乎达到了0.9,而第三个输出则吻合得不是很理想,作进一步研究,在当隐层数据为15时,较第一种情况,它的输出更加接近于期望值。比较可知,当隐层数目越多,则测试得到的样本水平越接近于期望值。

4结束语

本文首先总结了神经网络的研究目的和意义,介绍了神经网络的研究背景和现状,分析了目前神经网络研究中存在的问题,然后描述了BP神经网络算法的实现以及BP神经网络的工作原理,给出了BP网络的局限性。在以BP神经网络为基础的前提下,分析研究了BP神经网络在函数逼近和样本含量估计两个实例中的应用。以及分析了结论,即信号的频率越高,则隐层节点越多,隐单元个数越多,逼近能力越强。和隐层数目越多,测试得到的样本的水平越接近于期望值。

本文虽然总结分析了BP神经网络算法的实现,给出了实例分析,但是还有很多的不足。本文所总结的BP神经网络和目前研究的现状都还不够全面,经过程序调试的图形有可能都还存在很多细节上的问题,而图形曲线所实现效果都还不够好,以及结果分析不够全面,正确,缺乏科学性等,这些都还是需加强提高的,本文的完成不代表就对这门学科研究的结束,还有很多知识,理论,研究成果需要不断学习,

近几年的不断发展,神经网络更是取得了非常广泛的应用,和令人瞩目的发展,在很多方面都发挥了其独特的作用,特别是在人工智能、自动控制、计算机科学、信息处理、机器

人、模式识别等众多方面的应用实例,给人们带来了很多应用上到思考,和解决方法的研究。但是神经网络的研究最近几年还没有达到非常热门的阶段,这还需有很多热爱神经网络和研究神经网络人员的不断研究和创新,在科技高度发达的现在,我们有理由期待,也有理由相信。我想在不久的将来神经网络会应用到更多更广的方面,人们的生活会更加便捷。

(完整版)BP神经网络matlab实例(简单而经典).doc

p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); % 原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP 网络net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM 算法训练BP 网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); anew=postmnmx(anewn,mint,maxt); %对 BP 网络进行仿真%还原数据 y=anew'; 1、 BP 网络构建 (1)生成 BP 网络 net newff ( PR,[ S1 S2...SNl],{ TF1 TF 2...TFNl }, BTF , BLF , PF ) PR :由R 维的输入样本最小最大值构成的R 2 维矩阵。 [ S1 S2...SNl] :各层的神经元个数。 {TF 1 TF 2...TFNl } :各层的神经元传递函数。 BTF :训练用函数的名称。 (2)网络训练 [ net,tr ,Y, E, Pf , Af ] train (net, P, T , Pi , Ai ,VV , TV ) (3)网络仿真 [Y, Pf , Af , E, perf ] sim(net, P, Pi , Ai ,T ) {'tansig','purelin'},'trainrp' BP 网络的训练函数 训练方法 梯度下降法 有动量的梯度下降法 自适应 lr 梯度下降法 自适应 lr 动量梯度下降法弹性梯度下降法训练函数traingd traingdm traingda traingdx trainrp Fletcher-Reeves 共轭梯度法traincgf Ploak-Ribiere 共轭梯度法traincgp

神经网络控制

人工神经网络控制 摘要: 神经网络控制,即基于神经网络控制或简称神经控制,是指在控制系统中采用神经网络这一工具对难以精确描述的复杂的非线性对象进行建模,或充当控制器,或优化计算,或进行推理,或故障诊断等,亦即同时兼有上述某些功能的适应组合,将这样的系统统称为神经网络的控制系统。本文从人工神经网络,以及控制理论如何与神经网络相结合,详细的论述了神经网络控制的应用以及发展。 关键词: 神经网络控制;控制系统;人工神经网络 人工神经网络的发展过程 神经网络控制是20世纪80年代末期发展起来的自动控制领域的前沿学科之一。它是智能控制的一个新的分支,为解决复杂的非线性、不确定、不确知系统的控制问题开辟了新途径。是(人工)神经网络理论与控制理论相结合的产物,是发展中的学科。它汇集了包括数学、生物学、神经生理学、脑科学、遗传学、人工智能、计算机科学、自动控制等学科的理论、技术、方法及研究成果。 在控制领域,将具有学习能力的控制系统称为学习控制系统,属于智能控制系统。神经控制是有学习能力的,属于学习控制,是智能控制的一个分支。神经控制发展至今,虽仅有十余年的历史,已有了多种控制结构。如神经预测控制、神经逆系统控制等。 生物神经元模型 神经元是大脑处理信息的基本单元,人脑大约含1012个神经元,分成约1000种类型,每个神经元大约与102~104个其他神经元相连接,形成极为错综复杂而又灵活多变的神经网络。每个神经元虽然都十分简单,但是如此大量的神经元之间、如此复杂的连接却可以演化出丰富多彩的行为方式,同时,如此大量的神经元与外部感受器之间的多种多样的连接方式也蕴含了变化莫测的反应方式。 图1 生物神经元传递信息的过程为多输入、单输出,神经元各组成部分的功能来看,信息的处理与传递主要发生在突触附近,当神经元细胞体通过轴突传到突触前膜的脉冲幅度达到一定强度,即超过其阈值电位后,突触前膜将向突触间隙释放神经传递的化学物质,突触有两

人工神经网络Matlab实现代码

以下是用Matlab中的m语言编写的BP神经网络代码,实现的是一个正弦函数的拟合过程,包括了初始化、BP算法、绘制曲线等过程,可以将代码放到一个M文件中运行,以下是代码: defaultpoints=20; %%%%%%%%%隐含层节点数 inputpoints=1; %%%%%%%%%输入层节点数 outputpoints=1; %%%%%%%%%输出层节点数 Testerror=zeros(1,100);%%%%每个测试点的误差记录 a=zeros(1,inputpoints);%%%%输入层节点值 y=zeros(1,outputpoints);%%%样本节点输出值 w=zeros(inputpoints,defaultpoints);%%%%%输入层和隐含层权值 %初始化权重很重要,比如用rand函数初始化则效果非常不确定,不如用zeros初始化 v=zeros(defaultpoints,outputpoints);%%%%隐含层和输出层权值 bin=rand(1,defaultpoints);%%%%%隐含层输入 bout=rand(1,defaultpoints);%%%%隐含层输出 base1=0*ones(1,defaultpoints);%隐含层阈值,初始化为0 cin=rand(1,outputpoints);%%%%%%输出层输入 cout=rand(1,outputpoints);%%%%%输出层输出 base2=0*rand(1,outputpoints);%%输出层阈值 error=zeros(1,outputpoints);%%%拟合误差 errors=0;error_sum=0; %%%误差累加和 error_rate_cin=rand(defaultpoints,outputpoints);%%误差对输出层节点权值的导数 error_rate_bin=rand(inputpoints,defaultpoints);%%%误差对输入层节点权值的导数 alfa=0.5; %%%% alfa 是隐含层和输出层权值-误差变化率的系数,影响很大 belt=0.5; %%%% belt 是隐含层和输入层权值-误差变化率的系数,影响较小 gama=5; %%%% gama 是误差放大倍数,可以影响跟随速度和拟合精度,当gama大于2时误差变大,容易震荡 %%%%规律100个隐含节点,当alfa *gama =1.5时,效果好,其他值误差变大,belt基本不影响效果 %%%%规律200个隐含节点,当alfa *gama =0.7时,效果好,其他值误差变大,belt基本不影响效果,最小误差和100个隐含点一样 %%%%规律50个隐含节点,当alfa *gama =3时,效果好,其他值误差变大,belt基本不影响效果,最小误差和100个隐含点一样 trainingROUND=200;% 训练次数,有时训练几十次比训练几百次上千次效果要好很多sampleNUM=361; % 样本点数 x1=zeros(sampleNUM,inputpoints); %样本输入矩阵 y1=zeros(sampleNUM,outputpoints); %样本输出矩阵 x2=zeros(sampleNUM,inputpoints); %测试输入矩阵

循环神经网络(RNN, Recurrent Neural Networks)介绍

循环神经网络(RNN, Recurrent Neural Networks)介绍 标签:递归神经网络RNN神经网络LSTMCW-RNN 2015-09-23 13:24 25873人阅读评论(13) 收藏举报分类: 数据挖掘与机器学习(23) 版权声明:未经许可, 不能转载 目录(?)[+]循环神经网络(RNN, Recurrent Neural Networks)介绍 这篇文章很多内容是参考: https://www.doczj.com/doc/496571311.html,/2015/09/recurrent-neural-networks-tutorial-part-1-introd uction-to-rnns/,在这篇文章中,加入了一些新的内容与一些自己的理解。 循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。主要分成以下几个部分对RNNs进行介绍: 1. RNNs的基本介绍以及一些常见的RNNs(本文内容); 2. 详细介绍RNNs中一些经常使用的训练算法,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing gradient problem) 3. 详细介绍Long Short-Term Memory(LSTM,长短时记忆网络);

基于遗传算法的BP神经网络MATLAB代码

用遗传算法优化BP神经网络的Matlab编程实例(转) 由于BP网络的权值优化是一个无约束优化问题,而且权值要采用实数编码,所以直接利用Matlab遗传算法工具箱。以下贴出的代码是为一个19输入变量,1个输出变量情况下的非线性回归而设计的,如果要应用于其它情况,只需改动编解码函数即可。 程序一:GA训练BP权值的主函数 function net=GABPNET(XX,YY) %-------------------------------------------------------------------------- % GABPNET.m % 使用遗传算法对BP网络权值阈值进行优化,再用BP算法训练网络 %-------------------------------------------------------------------------- %数据归一化预处理 nntwarn off XX=[1:19;2:20;3:21;4:22]'; YY=[1:4]; XX=premnmx(XX); YY=premnmx(YY); YY %创建网络 net=newff(minmax(XX),[19,25,1],{'tansig','tansig','purelin'},'tra inlm'); %下面使用遗传算法对网络进行优化 P=XX; T=YY; R=size(P,1); S2=size(T,1); S1=25;%隐含层节点数 S=R*S1+S1*S2+S1+S2;%遗传算法编码长度 aa=ones(S,1)*[-1,1]; popu=50;%种群规模 save data2 XX YY % 是将 xx,yy 二个变数的数值存入 data2 这个MAT-file,initPpp=initializega(popu,aa,'gabpEval');%初始化种群 gen=100;%遗传代数

人工智能习题&答案-第4章-计算智能1-神经计算-模糊计算

第四章计算智能(1):神经计算模糊计算4-1 计算智能的含义是什么?它涉及哪些研究分支? 贝兹德克认为计算智能取决于制造者提供的数值数据,而不依赖于知识。计算智能是智力的低层认知。 主要的研究领域为神经计算,模糊计算,进化计算,人工生命。 4-2 试述计算智能(CI)、人工智能(AI)和生物智能(BI)的关系。 计算智能是智力的低层认知,主要取决于数值数据而不依赖于知识。人工智能是在计算智能的基础上引入知识而产生的智力中层认知。生物智能,尤其是人类智能,则是最高层的智能。即CI包含AI包含BI 4-3 人工神经网络为什么具有诱人的发展前景和潜在的广泛应用领域? 人工神经网络具有如下至关重要的特性: (1) 并行分布处理 适于实时和动态处理 (2)非线性映射 给处理非线性问题带来新的希望 (3) 通过训练进行学习 一个经过适当训练的神经网络具有归纳全部数据的能力,能够解决那些由数学模型或描述规则难以处理的问题 (4) 适应与集成 神经网络的强适应和信息融合能力使得它可以同时输入大量不同的控制信号,实现信息集成和融合,适于复杂,大规模和多变量系统 (5) 硬件实现 一些超大规模集成是电路实现硬件已经问世,使得神经网络成为具有快速和大规模处理能力的网络。 4-4 简述生物神经元及人工神经网络的结构和主要学习算法。

生物神经元 大多数神经元由一个细胞体(cell body或soma)和突(process)两部分组成。突分两类,即轴突(axon)和树突(dendrite),轴突是个突出部分,长度可达1m,把本神经元的输出发送至其它相连接的神经元。树突也是突出部分,但一般较短,且分枝很多,与其它神经元的轴突相连,以接收来自其它神经元的生物信号。 轴突的末端与树突进行信号传递的界面称为突触(synapse),通过突触向其它神经元发送信息。对某些突触的刺激促使神经元触发(fire)。只有神经元所有输入的总效应达到阈值电平,它才能开始工作。此时,神经元就产生一个全强度的输出窄脉冲,从细胞体经轴突进入轴突分枝。这时的神经元就称为被触发。突触把经过一个神经元轴突的脉冲转化为下一个神经元的兴奋或抑制。学习就发生在突触附近。 每个人脑大约含有10^11-10^12个神经元,每一神经元又约有10^3-10^4个突触。神经元通过突触形成的网络,传递神经元间的兴奋与抑制。大脑的全部神经元构成极其复杂的拓扑网络群体,用于实现记忆与思维。 人工神经网络的结构 人工神经网络由神经元模型构成。每个神经元具有单一输出,并且能够与其它神经元连接,存在许多输出连接方法,每种连接方法对应于一个连接权系数。 人工神经网络的结构分为2类, (1)递归(反馈)网络 有些神经元的输出被反馈至同层或前层神经元。信号能够从正向和反向流通。Hopfield网络,Elmman网络和Jordan网络是代表。 (2) 前馈网络 具有递阶分层结构,由一些同层神经元间不存在互连的层级组成。从输入层至输出层的信号通过单向连接流通,神经元从一层连接至下一层,不存在同层神经元之间的连接。多层感知器(MLP),学习矢量量化网络(LVQ),小脑模型连接控制网络(CMAC)和数据处理方法网络(GMDH)是代表。 人工神经网络的主要学习算法 (1) 指导式(有师)学习 根据期望和实际的网络输出之间的差来调整神经元连接的强度或权。包括Delta规则,广义Delta规则,反向传播算法及LVQ算法。 (2) 非指导(无导师)学习 训练过程中,神经网络能自动地适应连接权,以便按相似特征把输入模式分组聚集。包括

matlab神经网络

Matlab神经网络工具箱 2010-7-21 今天学的是BP神经网络,首先看的是一个关于非线性函数逼近的例子,最后得出一个心得:在使用newff函数生成一个新的网络时,神经元的层数和每一层的神经元数会对结果造成不小的影响,一般都采用[n,1]的建立方法,其中n为隐层的神经元数,1为输出层的神经元数。 然后是做了一个识别系统,算是一个较大的神经网络,具体的代码解释和分析如下: [alphabet,targets]=prprob; [R,Q]=size(alphabet); [S2,Q]=size(targets); S1=10; [R,Q]=size(alphabet); [S2,Q]=size(targets); P=alphabet; net=newff(minmax(P),[S1,S2],{'logsig','logsig'},'traingdx'); net.LW{2,1}=net.LW{2,1}*0.01; net.b{2}=net.b{2}+0.01; 其中的proprob是matlab自带的一个生成字母表布尔值的函数。可以具体查看。 T=targets; net.performFcn='sse'; net.trainParam.goal=0.1; net.trainParam.show=20; net.trainParam.epochs=5000; net.trainParam.mc=0.95; [net,tr]=train(net,P,T) 接下来首先进行无噪声训练。 netn.trainParam.goal=0.6; netn.trainParam.epochs=300; T=[targets targets targets targets]; for pass=1:10 P=[alphabet,alphabet,(alphabet+randn(R,Q)*0.1),(alphabet+randn(R,Q)*0.2) ]; [netn,tr]=train(net,P,T); end 接下来是有噪声训练,采用随机数生成影响输入矩阵的方式。这里收敛的有点慢,在

BP神经网络地设计实例(MATLAB编程)

神经网络的设计实例(MATLAB编程) 例1 采用动量梯度下降算法训练BP 网络。训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为t = [-1 -1 1 1] 解:本例的MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练 % SIM——对BP 神经网络进行仿真pause % 敲任意键开始 clc % 定义训练样本 P=[-1, -2, 3, 1; -1, 1, 5, -3]; % P 为输入矢量T=[-1, -1, 1, 1]; % T 为目标矢量

clc % 创建一个新的前向神经网络 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值 inputWeights=net.IW{1,1} inputbias=net.b{1} % 当前网络层权值和阈值 layerWeights=net.LW{2,1} layerbias=net.b{2} pause clc % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; pause clc % 调用TRAINGDM 算法训练BP 网络 [net,tr]=train(net,P,T);

神经网络模型预测控制器

神经网络模型预测控制器 摘要:本文将神经网络控制器应用于受限非线性系统的优化模型预测控制中,控制规则用一个神经网络函数逼近器来表示,该网络是通过最小化一个与控制相关的代价函数来训练的。本文提出的方法可以用于构造任意结构的控制器,如减速优化控制器和分散控制器。 关键字:模型预测控制、神经网络、非线性控制 1.介绍 由于非线性控制问题的复杂性,通常用逼近方法来获得近似解。在本文中,提出了一种广泛应用的方法即模型预测控制(MPC),这可用于解决在线优化问题,另一种方法是函数逼近器,如人工神经网络,这可用于离线的优化控制规则。 在模型预测控制中,控制信号取决于在每个采样时刻时的想要在线最小化的代价函数,它已经广泛地应用于受限的多变量系统和非线性过程等工业控制中[3,11,22]。MPC方法一个潜在的弱点是优化问题必须能严格地按要求推算,尤其是在非线性系统中。模型预测控制已经广泛地应用于线性MPC问题中[5],但为了减小在线计算时的计算量,该部分的计算为离线。一个非常强大的函数逼近器为神经网络,它能很好地用于表示非线性模型或控制器,如文献[4,13,14]。基于模型跟踪控制的方法已经普遍地应用在神经网络控制,这种方法的一个局限性是它不适合于不稳定地逆系统,基此本文研究了基于优化控制技术的方法。 许多基于神经网络的方法已经提出了应用在优化控制问题方面,该优化控制的目标是最小化一个与控制相关的代价函数。一个方法是用一个神经网络来逼近与优化控制问题相关联的动态程式方程的解[6]。一个更直接地方法是模仿MPC方法,用通过最小化预测代价函数来训练神经网络控制器。为了达到精确的MPC技术,用神经网络来逼近模型预测控制策略,且通过离线计算[1,7.9,19]。用一个交替且更直接的方法即直接最小化代价函数训练网络控制器代替通过训练一个神经网络来逼近一个优化模型预测控制策略。这种方法目前已有许多版本,Parisini[20]和Zoppoli[24]等人研究了随机优化控制问题,其中控制器作为神经网络逼近器的输入输出的一个函数。Seong和Widrow[23]研究了一个初始状态为随机分配的优化控制问题,控制器为反馈状态,用一个神经网络来表示。在以上的研究中,应用了一个随机逼近器算法来训练网络。Al-dajani[2]和Nayeri等人[15]提出了一种相似的方法,即用最速下降法来训练神经网络控制器。 在许多应用中,设计一个控制器都涉及到一个特殊的结构。对于复杂的系统如减速控制器或分散控制系统,都需要许多输入与输出。在模型预测控制中,模型是用于预测系统未来的运动轨迹,优化控制信号是系统模型的系统的函数。因此,模型预测控制不能用于定结构控制问题。不同的是,基于神经网络函数逼近器的控制器可以应用于优化定结构控制问题。 在本文中,主要研究的是应用于非线性优化控制问题的结构受限的MPC类型[20,2,24,23,15]。控制规则用神经网络逼近器表示,最小化一个与控制相关的代价函数来离线训练神经网络。通过将神经网络控制的输入适当特殊化来完成优化低阶控制器的设计,分散和其它定结构神经网络控制器是通过对网络结构加入合适的限制构成的。通过一个数据例子来评价神经网络控制器的性能并与优化模型预测控制器进行比较。 2.问题表述 考虑一个离散非线性控制系统: 其中为控制器的输出,为输入,为状态矢量。控制

BP神经网络matlab源程序代码

close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 % 定义训练样本 % P为输入矢量 P=[0.7317 0.6790 0.5710 0.5673 0.5948;0.6790 0.5710 0.5673 0.5948 0.6292; ... 0.5710 0.5673 0.5948 0.6292 0.6488;0.5673 0.5948 0.6292 0.6488 0.6130; ... 0.5948 0.6292 0.6488 0.6130 0.5654; 0.6292 0.6488 0.6130 0.5654 0.5567; ... 0.6488 0.6130 0.5654 0.5567 0.5673;0.6130 0.5654 0.5567 0.5673 0.5976; ... 0.5654 0.5567 0.5673 0.5976 0.6269;0.5567 0.5673 0.5976 0.6269 0.6274; ... 0.5673 0.5976 0.6269 0.6274 0.6301;0.5976 0.6269 0.6274 0.6301 0.5803; ... 0.6269 0.6274 0.6301 0.5803 0.6668;0.6274 0.6301 0.5803 0.6668 0.6896; ... 0.6301 0.5803 0.6668 0.6896 0.7497]; % T为目标矢量 T=[0.6292 0.6488 0.6130 0.5654 0.5567 0.5673 0.5976 ... 0.6269 0.6274 0.6301 0.5803 0.6668 0.6896 0.7497 0.8094]; % Ptest为测试输入矢量 Ptest=[0.5803 0.6668 0.6896 0.7497 0.8094;0.6668 0.6896 0.7497 0.8094 0.8722; ... 0.6896 0.7497 0.8094 0.8722 0.9096]; % Ttest为测试目标矢量 Ttest=[0.8722 0.9096 1.0000]; % 创建一个新的前向神经网络 net=newff(minmax(P'),[12,1],{'logsig','purelin'},'traingdm'); % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 5000; net.trainParam.goal = 0.001; % 调用TRAINGDM算法训练 BP 网络 [net,tr]=train(net,P',T); % 对BP网络进行仿真 A=sim(net,P'); figure; plot((1993:2007),T,'-*',(1993:2007),A,'-o'); title('网络的实际输出和仿真输出结果,*为真实值,o为预测值'); xlabel('年份'); ylabel('客运量'); % 对BP网络进行测试 A1=sim(net,Ptest');

基于BP神经网络的语言特征信号识别分类

%% 该代码为基于BP网络的语言特征信号识别分类 %% 清空环境变量 clc clear %% 训练数据预测数据提取及归一化 %下载四类语音信号(原始数据附在代码最后面) load data1 c1 load data2 c2 load data3 c3 load data4 c4 %四个特征信号矩阵合成一个矩阵 data(1:500,:)=c1(1:500,:); data(501:1000,:)=c2(1:500,:); data(1001:1500,:)=c3(1:500,:); data(1501:2000,:)=c4(1:500,:); %从1到2000间随机排序 k=rand(1,2000);

[m,n]=sort(k); %输入输出数据 input=data(:,2:25); output1 =data(:,1); %把输出从1维变成4维 output=zeros(2000,4); for i=1:2000 switch output1(i) case 1 output(i,:)=[1 0 0 0]; case 2 output(i,:)=[0 1 0 0]; case 3 output(i,:)=[0 0 1 0]; case 4 output(i,:)=[0 0 0 1]; end end %随机提取1500个样本为训练样本,500个样本为预测样本

input_train=input(n(1:1500),:)'; output_train=output(n(1:1500),:)'; input_test=input(n(1501:2000),:)'; output_test=output(n(1501:2000),:)'; %输入数据归一化 [inputn,inputps]=mapminmax(input_train); %% 网络结构初始化 innum=24; midnum=25; outnum=4; %权值初始化 w1=rands(midnum,innum); b1=rands(midnum,1); w2=rands(midnum,outnum); b2=rands(outnum,1); w2_1=w2;w2_2=w2_1; w1_1=w1;w1_2=w1_1;

不错的Matlab神经网络工具箱实用指南

Matlab的神经网络工具箱实用指南 文章摘要:第一章是神经网络的基本介绍,第二章包括了由工具箱指定的有关网络结构和符号的基本材料以及建立神经网络的一些基本函数,例如new、init、adapt和train。第三章以反向传播网络为例讲解了反向传播网络的原理和应用的基本过程。 第一章介绍 1.神经网络 神经网络是单个并行处理元素的集合,我们从生物学神经系统得到启发。在自然界,网络功能主要由神经节决定,我们可以通过改变连接点的权重来训练神经网络完成特定的功能。 一般的神经网络都是可调节的,或者说可训练的,这样一个特定的输入便可得到要求的输出。如下图所示。这里,网络根据输出和目标的比较而调整,直到网络输出和目标匹配。作为典型,许多输入/目标对应的方法已被用在有监督模式中来训练神经网络。 神经网络已经在各个领域中应用,以实现各种复杂的功能。这些领域包括:模式识别、鉴定、分类、语音、翻译和控制系统。 如今神经网络能够用来解决常规计算机和人难以解决的问题。我们主要通过这个工具箱来建立示范的神经网络系统,并应用到工程、金融和其他实际项目中去。 一般普遍使用有监督训练方法,但是也能够通过无监督的训练方法或者直接设计得到其他的神经网络。无监督网络可以被应用在数据组的辨别上。一些线形网络和Hopfield网络是直接设计的。总的来说,有各种各样的设计和学习方法来增强用户的选择。 神经网络领域已经有50年的历史了,但是实际的应用却是在最近15年里,如今神经网络仍快速发展着。因此,它显然不同与控制系统和最优化系统领域,它们的术语、数学理论和设计过程都已牢固的建立和应用了好多年。我们没有把神经网络工具箱仅看作一个能正常运行的建好的处理轮廓。我们宁愿希望它能成为一个有用的工业、教育和研究工具,一个能够帮助用户找到什么能够做什么不能做的工具,一个能够帮助发展和拓宽神经网络领域的工具。因为这个领域和它的材料是如此新,这个工具箱将给我们解释处理过程,讲述怎样运用它们,并且举例说明它们的成功和失败。我们相信要成功和满意的使用这个工具箱,对范例

Matlab训练好的BP神经网络如何保存和读取方法(附实例说明)

Matlab训练好的BP神经网络如何保存和读取方法(附实例说明) 看到论坛里很多朋友都在提问如何存储和调用已经训练好的神经网络。 本人前几天也遇到了这样的问题,在论坛中看了大家的回复,虽然都提到了关键的两个函数“save”和“load”,但或多或少都简洁了些,让人摸不着头脑(呵呵,当然也可能是本人太菜)。通过不断调试,大致弄明白这两个函数对神经网络的存储。下面附上实例给大家做个说明,希望对跟我有一样问题的朋友有所帮助。 如果只是需要在工作目录下保到当前训练好的网络,可以在命令窗口 输入:save net %net为已训练好的网络 然后在命令窗口 输入:load net %net为已保存的网络 加载net。 但一般我们都会在加载完后对网络进行进一步的操作,建议都放在M文件中进行保存网络和调用网络的操作 如下所示: %% 以函数的形式训练神经网络 functionshenjingwangluo() P=[-1,-2,3,1; -1,1,5,-3]; %P为输入矢量 T=[-1,-1,1,1,]; %T为目标矢量 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') %创建一个新的前向神经网络 inputWeights=net.IW{1,1} inputbias=net.b{1} %当前输入层权值和阀值 layerWeights=net.LW{2,1} layerbias=net.b{2} net.trainParam.show=50; net.trainParam.lr=0.05; net.trainParam.mc=0.9;

BP神经网络MATLAB代码

BP神经网络matlab代码 p=[284528334488;283344884554;448845542928;455429283497;29283497 2261;... 349722616921;226169211391;692113913580;139135804451;35804451 2636;... 445126363471;263634713854;347138543556;385435562659;35562659 4335;... 265943352882;433528824084;433528821999;288219992889;19992889 2175;... 288921752510;217525103409;251034093729;340937293489;37293489 3172;... 348931724568;317245684015;]'; %====期望输出======= t=[4554292834972261692113913580445126363471385435562659... 4335288240841999288921752510340937293489317245684015... 3666]; ptest=[284528334488;283344884554;448845542928;455429283497;29283497 2261;... 349722616921;226169211391;692113913580;139135804451;35804451 2636;... 445126363471;263634713854;347138543556;385435562659;35562659 4335;... 265943352882;433528824084;433528821999;288219992889;19992889 2175;... 288921752510;217525103409;251034093729;340937293489;37293489 3172;... 348931724568;317245684015;456840153666]'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%将数据归一化 NodeNum1=20;%隐层第一层节点数 NodeNum2=40;%隐层第二层节点数 TypeNum=1;%输出维数 TF1='tansig'; TF2='tansig'; TF3='tansig'; net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1TF2 TF3},'traingdx');

神经网络控制完整版

神经网络控制 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

人工神经网络控制 摘要: 神经网络控制,即基于神经网络控制或简称神经控制,是指在控制系统中采用神经网络这一工具对难以精确描述的复杂的非线性对象进行建模,或充当控制器,或优化计算,或进行推理,或故障诊断等,亦即同时兼有上述某些功能的适应组合,将这样的系统统称为神经网络的控制系统。本文从人工神经网络,以及控制理论如何与神经网络相结合,详细的论述了神经网络控制的应用以及发展。 关键词: 神经网络控制;控制系统;人工神经网络 人工神经网络的发展过程 神经网络控制是20世纪80年代末期发展起来的自动控制领域的前沿学科之一。它是智能控制的一个新的分支,为解决复杂的非线性、不确定、不确知系统的控制问题开辟了新途径。是(人工)神经网络理论与控制理论相结合的产物,是发展中的学科。它汇集了包括数学、生物学、神经生理学、脑科学、遗传学、人工智能、计算机科学、自动控制等学科的理论、技术、方法及研究成果。 在控制领域,将具有学习能力的控制系统称为学习控制系统,属于智能控制系统。神经控制是有学习能力的,属于学习控制,是智能控制的一个分支。神经控制发展至今,虽仅有十余年的历史,已有了多种控制结构。如神经预测控制、神经逆系统控制等。 生物神经元模型 神经元是大脑处理信息的基本单元,人脑大约含1012个神经元,分成约1000种类型,每个神经元大约与 102~104个其他神经元相连接,形成极为错综复杂而又灵活多变的神经网络。每个神经元虽然都十分简单,但是如此大量的神经元之间、如此复杂的连接却可以演化出丰富多彩的行为方式,同时,如此大量的神经元与外部感受器之间的多种多样的连接方式也蕴含了变化莫测的反应方式。 图1 生物神经元传递信息的过程为多输入、单输出,神经元各组成部分的功能来看,信息的处理与传递主要发生在突触附近,当神经元细胞体通过轴突传到突触前膜的脉

神经网络学习笔记及R实现

神经网络 一、神经网络简介 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式物理结构:人工神经元将模拟生物神经元的功能 计算模拟:人脑的神经元有局部计算和存储的功能,通过连接构成一个系统。人工神经网络中也有大量有局部处理能力的神经元,也能够将信息进行大规模并行处理存储与操作:人脑和人工神经网络都是通过神经元的连接强度来实现记忆存储功能,同时为概括、类比、推广提供有力的支持 训练:同人脑一样,人工神经网络将根据自己的结构特性,使用不同的训练、学习过程,自动从实践中获得相关知识 神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。 二、BP神经网络算法描述 1、sigmoid函数分类 回顾我们前面提到的感知器,它使用示性函数作为分类的办法。然而示性函数作为分类器它的跳点让人觉得很难处理,幸好sigmoid函数y=1/(1+e^-x)有类似的性质,且有着光滑性这一优良性质。我们通过下图可以看见sigmoid函数的图像: 错误!

基于神经网络和决策树分类器的工艺参数优化研究

基于神经网络和决策树分类器的工艺参数优化研究 摘要:提出了基于神经网络和决策树分类器的机械加工工艺参数寻优方法,根据已有的样本训练数据建立分类和神经网络模型,针对要求的加工目标,通过对分类规则的提取,生成预测数据集,结合建立的神经网络模型,迅速准确的预测出对应的加工工艺参数。 关键词:神经网络分类器决策树工艺参数分类规则 1. 引言 在机械加工中,加工参数的选择对加工生产率和经济效益具有重要的影响,而加工参数一般是有经验的机械师的操作记录,这些记录再编纂成机械加工手册。但手册中的数据仅仅适用于特定的机加工条件,对于略有不同的机加工条件就可能不适用。而在通常加工系统中,加工参数的选择主要依靠加工手册、工人的经验等来确定,因此正确性难以保证。同时,现代工业生产中的计算机在加工过程中采集大量的数据,这些数据及其关系人工一般是很难理解、辨认和优化的,特别对一个新的加工工艺,没有参考的经验和手册,只有不断积累的数据,这时要迅速的建立优化的加工参数,按照传统的技术和方法,难度是较大的。本文针对这种问题,提出了基于决策树分类器和神经网络的加工参数寻优的新方法。 2. 基本原理与概念 2.1 分类 分类要解决的问题是为一个事件或对象归类,在已有数据的基础上学会一个分类函数或构造出一个分类模型。

分类的一般性描述如下:给定数据库D ={t1,t2,…,tn },元组ti ?D ,类的集合C ={C1,……,Cm },分类问题定义为从数据库到类集合的映射f :D ->C ,即数据库中的元组ti 分配到某个类Cj 中,有Cj ={ti | f (ti ) = Cj ,1≤i≤n ,且ti ∈D } 构造决策树分类器,需要有一个训练样本数据集作为输入。训练集(Training set ) 由一组记录或元组构成,每个记录是一个由有关字段值组成的特征向量,这些字段称做属性(Attribute ),用于分类的属性称为标签(Label ),标签属性即训练集的类别标记。一个具体的样本的形式可以表示为(sv1,v2,… ,vn ;c ), 其中vi 表示字段值,c 表示类别。标签属性的类型必须是离散的,且标签属性的可能值的数目越少越好。 决策树分类器在确定分类节点时,采用信息论中信息熵理论来选择节点,信息熵为信息论中用于描述每个消息的信息量以及信源的平均不确定性,决策树分类器中用其作为特征判别能力的度量,以其下降的速度作为测试属性的标准,其概念如下所述: 设S 是具有s 个样本的集合,假定决策属性是类标号属性,具有m 个不同的值,定义了不同的类别Ci (i=1,2,…,m )。假设si 是类别Ci 中的样本数,样本分类所需的信息量由下式给出: 121log() m m i i i I p p =∑(s ,s ,......s )=- 其中pi 是任意样本属于Ci 的概率,并用si/s 估计。设属性A 取v 个不同的值{a1,a2,…,av}。利用属性A 可以将集合S 划分为v 个子集{S1,S2,…,Sv},其中Sj 包含了S 集合中属性A 取aj 值的数

BP神经网络matlab源程序代码

BP神经网络matlab源程序代码) %******************************% 学习程序 %******************************% %======原始数据输入======== p=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928 3497 2261;... 3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;... 4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;... 2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;... 2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;... 3489 3172 4568;3172 4568 4015;]'; %===========期望输出======= t=[4554 2928 3497 2261 6921 1391 3580 4451 2636 3471 3854 3556 2659 ... 4335 2882 4084 1999 2889 2175 2510 3409 3729 3489 3172 4568 4015 ... 3666]; ptest=[2845 2833 4488;2833 4488 4554;4488 4554 2928;4554 2928 3497;2928 3497 2261;... 3497 2261 6921;2261 6921 1391;6921 1391 3580;1391 3580 4451;3580 4451 2636;... 4451 2636 3471;2636 3471 3854;3471 3854 3556;3854 3556 2659;3556 2659 4335;... 2659 4335 2882;4335 2882 4084;4335 2882 1999;2882 1999 2889;1999 2889 2175;... 2889 2175 2510;2175 2510 3409;2510 3409 3729;3409 3729 3489;3729 3489 3172;... 3489 3172 4568;3172 4568 4015;4568 4015 3666]'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %将数据归一化 NodeNum1 =20; % 隐层第一层节点数 NodeNum2=40; % 隐层第二层节点数 TypeNum = 1; % 输出维数 TF1 = 'tansig';

相关主题
文本预览
相关文档 最新文档