神经网络与matlab仿真

合集下载

在Matlab中实现神经网络的方法与实例

在Matlab中实现神经网络的方法与实例

在Matlab中实现神经网络的方法与实例神经网络是一种模拟人类大脑神经系统的计算模型,它能够通过学习数据的模式和关联性来解决各种问题。

在计算机科学和人工智能领域,神经网络被广泛应用于图像识别、自然语言处理、预测等任务。

而Matlab作为一种功能强大的科学计算软件,提供了一套完善的工具箱,可以方便地实现神经网络的建模和训练。

本文将介绍在Matlab中实现神经网络的方法与实例。

首先,我们会简要介绍神经网络的基本原理和结构,然后详细讲解在Matlab中如何创建并训练神经网络模型,最后通过几个实例展示神经网络在不同领域的应用。

一、神经网络的原理和结构神经网络模型由神经元和它们之间的连接构成。

每个神经元接收输入信号,并通过权重和偏置进行加权计算,然后使用激活函数对结果进行非线性变换。

这样,神经网络就能够模拟复杂的非线性关系。

常见的神经网络结构包括前馈神经网络(Feedforward Neural Network)和循环神经网络(Recurrent Neural Network)。

前馈神经网络是最基本的结构,信号只能向前传递,输出不对网络进行反馈;而循环神经网络具有反馈连接,可以对自身的输出进行再处理,适用于序列数据的建模。

神经网络的训练是通过最小化损失函数来优化模型的参数。

常用的训练算法包括梯度下降法和反向传播算法。

其中,梯度下降法通过计算损失函数对参数的梯度来更新参数;反向传播算法是梯度下降法在神经网络中的具体应用,通过反向计算梯度来更新网络的权重和偏置。

二、在Matlab中创建神经网络模型在Matlab中,可以通过Neural Network Toolbox来创建和训练神经网络模型。

首先,我们需要定义神经网络的结构,包括输入层、隐藏层和输出层的神经元数量,以及每个神经元之间的连接权重。

例如,我们可以创建一个三层的前馈神经网络模型:```matlabnet = feedforwardnet([10 8]);```其中,`[10 8]`表示隐藏层的神经元数量分别为10和8。

基于MATLAB的BP神经网络的仿真与实现论文

基于MATLAB的BP神经网络的仿真与实现论文

2012届毕业设计论文基于MatLab的BP神经网络的仿真与实现院、部:计算机与信息科学学院学生姓名:指导教师:职称讲师专业:计算机科学与技术班级:完成时间:2012年5月摘要摘要本文首先说明课题研究的目的和意义,评述课题的国内外研究现状,引出目前存在的问题。

然后分析了神经网络算法的基本原理,给出经典神经网络算法的具体实现方法,总结神经网络算法的特点,并给出神经网络算法的基本流程。

采用Matlab软件编程实现BP神经网络算法。

将神经网络算法应用于函数逼近,样本分类和样本含量估计问题中,并分析相关参数或算法对运行结果的影响。

最后对BP神经网络算法进行了展望。

关键字: 神经网络;BP神经网络;函数逼近;样本分类ABSTRACTABSTRACTFirst, the research purpose and significance of neural network is expounded in this article. Commentary studies current situation at the problem home and abroad. Leads to the existing problems. and then have analyzed algorithmic basal principle of neural networks, Give algorithmic concert of classics neural networks out the realization method. Summing up the characteristics of neural network algorithm. Neural network algorithm is given the basic processes. The arithmetic of BP neural network is realized in Matlab software. The algorithm applies of BP neural networks to the function approximation problem,Sample classification and computes the swatch content. And analysis of relevant parameters on the results of algorithm. Finally, The BP neural network algorithm is Outlook.Key words: Neural network;BP neural network;Function approximation; Sample classfication目录摘要 (I)ABSTRACT........................................................ I I 目录............................................................ I II 前言.. (V)第一章绪论................................................... - 1 -1.1 人工神经网络的研究背景和意义............................ - 1 -1.2 神经网络的发展与研究现状................................ - 2 -1.2.1 神经网络的发展..................................... - 2 -1.2.2 神经网络的现状.................................... - 3 -1.3 神经网络的研究内容和目前存在的问题...................... - 3 -1.3.1 神经网络的研究内容................................. - 3 -1.3.2 神经网络研究目前存在的问题......................... - 3 -1.4 神经网络的应用.......................................... - 4 - 第二章神经网络结构及BP神经网络................................ - 5 -2.1 神经元与网络结构........................................ - 5 -2.1.1 生物神经元......................................... - 5 -2.1.2 人工神经元......................................... - 6 -2.1.3人工神经网络的构成................................. - 6 -2.2 BP神经网络及其原理...................................... - 9 -2.2.1 BP神经网络定义.................................... - 9 -2.2.2 BP神经网络模型及其基本原理........................ - 9 -2.3 BP神经网络的主要功能................................... - 10 -2.4 BP网络的优点以及局限性................................. - 11 - 第三章 BP神经网络在实例中的应用............................... - 13 -3.1 基于MATLAB的BP神经网络工具箱函数..................... - 13 -3.1.1 BP网络创建函数................................... - 14 -3.1.2 神经元上的传递函数................................ - 14 -3.1.3 BP网络学习函数................................... - 15 -3.1.4 BP网络训练函数................................... - 15 -3.2 BP网络在函数逼近中的应用............................... - 15 -3.2.1 问题的提出........................................ - 15 -3.2.2 基于BP神经网络逼近函数........................... - 16 -3.2.3 不同频率下的逼近效果.............................. - 19 -3.2.4 讨论............................................. - 21 -3.3仿真实验................................................ - 21 -3.3.1 BP神经网络MATLAB设计............................ - 21 -3.3.2 各种BP学习算法MATLAB仿真........................ - 23 -3.3.3 各种算法仿真结果比较与分析........................ - 26 -3.3.4 调整初始权值和阈值的仿真.......................... - 27 -3.3.5 其他影响因素仿真.................................. - 29 -3.4 BP网络在样本含量估计中的应用........................... - 30 -3.4.1 问题的提出........................................ - 30 -3.4.2 基于BP神经网络对胆固醇含量估计................... - 31 -3.4.3 不同条件下的输出结果.............................. - 33 -3.4.4 讨论.............................................. - 35 -3.5 BP神经网络在样本分类中的应用........................... - 36 -3.5.1问题的提出........................................ - 36 -3.5.2 基于BP神经网络的样本分类......................... - 36 -3.5.3不同算法条件下的不同测试过程以及输出结果.......... - 38 -3.5.4讨论.............................................. - 42 - 结论........................................................... - 43 - 参考文献 (1)致谢 (2)前言前言BP神经网络是目前人工神经网络模式中最具代表性,应用最广泛的一种模型,具有自学习、自组织、自适应和很强的非线性映射能力,可以以任意精度逼近任意连续函数.近年来,为了解决BP网络收敛速度慢,训练时间长等不足,提出了许多改进算法.然而,在针对实际问题的BP网络建模过程中,选择多少层网络,每层多少个神经元节点,选择何种传递函数等,均无可行的理论指导,只能通过大量的实验计算获得.MATLAB中的神经网络工具箱(Neural NetworkToolbox,简称NNbox),为解决这一问题提供了便利的条件.神经网络工具箱功能十分完善,提供了各种MATLAB函数,包括神经网络的建立、训练和仿真等函数,以及各种改进训练算法函数,用户可以很方便地进行神经网络的设计和仿真,也可以在MATLAB源文件的基础上进行适当修改,形成自己的工具包以满足实际需要。

神经网络与MATLAB仿真 (1)

神经网络与MATLAB仿真 (1)

两次迭代之间的权值变化已经很小
设定最大迭代次数M,当迭代了M次之后算 法就停止迭代
条件的混合使用,防止 出现算法不收敛现象。
2.单层感知器的学习算法
确定学习率

不应当过大,以便为输入向量提供一个比较稳 定的权值估计
不应当过小,以便使权值能够根据输入的向量x 实时变化,体现误差对权值的修正作用
P=[ -9, 1, -12, -4, 0, 5;...
15, -8, 4, 5, 11, 9]; d=[0,1,0,0,0,1]; % 期望输出
P=[ones(1,6);P]; P
P=
1 -9 15
1
1
1 -4 5
1 0 11
1 5 9
1 -12 -8 4
%% (2)显示要分类的点 figure; subplot(2,1,1); 类结果 plot([-9 , -12 -4 hold on; plot([1,5],[-8,9],'*'); axis([-13,6,-10,16]); legend('第一类','第二类'); title('6个坐标点的二分类'); % 显示待分类的点和分 0],[15, 4 5 11],'o');
2.单层感知器的学习算法
在实际应用中 ,通常采用纠错学习规则的学习算法。 将偏置作为一个固定输入
x0=1 x1 x2
... ...
1
2
0 =b
xi xN
输入 权值
i
N
T

f
y
x (n) 1, x1 (n), x2 (n), , xN (n)
ω(n) b(n), 1 (n), 2 (n), , N (n)

神经网络与深度学习基于MATLAB的仿真与实现

神经网络与深度学习基于MATLAB的仿真与实现

目录分析
目录分析
《神经网络与深度学习基于MATLAB的仿真与实现》是一本介绍神经网络和深 度学习理论的书籍,由电子工业社于2016年。该书以通俗易懂的方式,结合 MATLAB仿真与实现,详细阐述了神经网络与深度学习的基本概念、原理和实践。 下面,我们对其目录进行简要分析。
目录分析
本书的目录结构清晰明了,逻辑性强。它以循序渐进的方式引导读者从基础 知识入手,逐步深入到高级主题。全书共分为11章,各章的主题相对独立,又相 互,形成了一个完整的神经网络和深度学习知识体系。
精彩摘录
“循环神经网络(RNN)是一种能够处理序列数据的神经网络。它们通过使用 循环结构来捕捉序列数据的时间依赖关系。”这句话解释了循环神经网络的特点 和应用领域,对于处理序列数据具有重要的指导意义。
精彩摘录
“长短期记忆(LSTM)是一种特殊的RNN,它通过引入记忆单元来解决普通 RNN存在的长期依赖问题。”这句话介绍了LSTM的特点和应用领域,对于处理序 列数据中的长期依赖关系具有重要的指导意义。
精彩摘录
“Dropout是一种正则化技术,它通过在训练过程中随机地丢弃一部分神经元 来防止过拟合。”这句话说明了Dropout的作用和效果,有助于读者理解如何防 止过拟合这一重要问题。
精彩摘录
“卷积神经网络(CNN)是一种专门用于处理图像数据的神经网络。它们通过 使用卷积层来捕捉图像中的空间结构信息。”这句话揭示了卷积神经网络的特点 和应用领域,对于处理图像数据具有重要的指导意义。
精彩摘录
“反向传播算法是训练神经网络的核心步骤。这个算法通过计算损失函数关 于权重的梯度,并使用梯度下降法来更新权重,从而减小预测误差。”这句话解 释了反向传播算法的工作原理和目的,对于理解神经网络的训练过程至关重要。

如何利用Matlab进行神经网络研究

如何利用Matlab进行神经网络研究

如何利用Matlab进行神经网络研究利用Matlab进行神经网络研究随着人工智能的快速发展,神经网络成为了研究人员和工程师们在处理复杂问题时的一种重要工具。

而在神经网络研究中,Matlab是一个非常常用且强大的工具。

本文将介绍如何利用Matlab进行神经网络研究,并探讨一些相关的技术和应用。

一、Matlab简介Matlab是一种基于数值计算的软件平台,广泛应用于科学、工程和工业领域。

它提供了丰富的功能和工具箱,其中包括神经网络工具箱。

神经网络工具箱具有强大的功能,可以用于神经网络的建模、训练、仿真和分析。

二、神经网络建模神经网络建模是神经网络研究的第一步。

在Matlab中,可以使用神经网络工具箱中的图形用户界面(GUI)来建立神经网络模型,也可以通过编程的方式进行建模。

无论是使用GUI还是编程,都需要先确定神经网络的结构和参数。

在GUI中,可以选择不同的神经网络类型,如前馈神经网络、循环神经网络和自适应神经网络等。

然后,可以设置网络的层数、每层的节点数量以及连接权重和偏差。

此外,还可以选择合适的激活函数和损失函数等。

如果选择编程方式进行建模,需要先创建一个神经网络对象,并使用相应的函数设置神经网络的各个参数。

例如,可以使用"feedforwardnet"函数创建一个前馈神经网络,并使用"trainlm"函数设置网络的训练算法为Levenberg-Marquardt算法。

三、神经网络训练神经网络的训练是为了使其能够对输入数据进行准确预测或分类。

在Matlab 中,可以使用神经网络工具箱中的函数来进行神经网络的训练。

常用的训练算法包括梯度下降法、Levenberg-Marquardt算法和递归最小二乘法等。

在训练之前,需要准备好训练数据和验证数据。

训练数据用于调整神经网络的权重和偏差,验证数据用于评估训练模型的性能。

在Matlab中,可以使用"train"函数来进行训练,该函数会自动将数据划分为训练集和验证集,并根据指定的训练算法进行训练。

神经网络PID控制策略及其Matlab仿真研究

神经网络PID控制策略及其Matlab仿真研究

神经网络PID控制策略及其Matlab仿真研究摘要:本文讨论了神经网络PID控制策略,利用神经网络的自学习能力进行PID控制参数的在线整定,并使用Matlab软件进行了仿真研究。

仿真结果表明,神经网络PID控制器参数调整简单,具有很高的精度和很强的适应性,可以获得满意的控制效果。

关键词:神经网络,BP网络,PID,参数整定,仿真Abstract: This paper discusses the nerve network PID control strategy, makes use of the study ability of the nerve network to turning the PID control parameters, and proceeds the simulation research using matlab software. From the simulation results, it is can be shown that Neural Network PID controller have the higher accuracy and stronger adaptability, and can get satisfied control result.Key word: neural network, BP neural network, PID, parameter turning, simulation1.引言PID控制由于其具有直观性好、实现简单、可靠性高以及强鲁棒性等优点,在工业控制中得到广泛的应用,尤其适用于建立了精确数学模型的确定性系统。

然而常规PID控制效果的优劣直接取决于控制参数选取的好坏,而传统方法是在获取控制对象数学模型的基础上,根据某一整定原则来确定PID参数,但现代工业过程机理复杂,大都存在着非线性、时变、变参数、变结构等不确定性,难以确定精确的数学模型,利用常规的PID控制很难获得满意的控制效果。

(整理)BP神经网络matlab实现和matlab工具箱使用实例.

(整理)BP神经网络matlab实现和matlab工具箱使用实例.

(整理)BP神经网络matlab实现和matlab工具箱使用实例.BP神经网络matlab实现和matlab工具箱使用实例经过最近一段时间的神经网络学习,终于能初步使用matlab实现BP网络仿真试验。

这里特别感谢研友sistor2004的帖子《自己编的BP算法(工具:matlab)》和研友wangleisxcc的帖子《用C++,Matlab,Fortran实现的BP算法》前者帮助我对BP算法有了更明确的认识,后者让我对matlab下BP函数的使用有了初步了解。

因为他们发的帖子都没有加注释,对我等新手阅读时有一定困难,所以我把sistor2004发的程序稍加修改后加注了详细解释,方便新手阅读。

%严格按照BP网络计算公式来设计的一个matlab程序,对BP网络进行了优化设计%yyy,即在o(k)计算公式时,当网络进入平坦区时(<0.0001)学习率加大,出来后学习率又还原%v(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j); 动量项clear allclcinputNums=3; %输入层节点outputNums=3; %输出层节点hideNums=10; %隐层节点数maxcount=20000; %最大迭代次数samplenum=3; %一个计数器,无意义precision=0.001; %预设精度yyy=1.3; %yyy是帮助网络加速走出平坦区alpha=0.01; %学习率设定值a=0.5; %BP优化算法的一个设定值,对上组训练的调整值按比例修改字串9error=zeros(1,maxcount+1); %error数组初始化;目的是预分配内存空间errorp=zeros(1,samplenum); %同上v=rand(inputNums,hideNums); %3*10;v初始化为一个3*10的随机归一矩阵; v表输入层到隐层的权值deltv=zeros(inputNums,hideNums); %3*10;内存空间预分配dv=zeros(inputNums,hideNums); %3*10;w=rand(hideNums,outputNums); %10*3;同Vdeltw=zeros(hideNums,outputNums);%10*3dw=zeros(hideNums,outputNums); %10*3samplelist=[0.1323,0.323,-0.132;0.321,0.2434,0.456;-0.6546,-0.3242,0.3255]; %3*3;指定输入值3*3(实为3个向量)expectlist=[0.5435,0.422,-0.642;0.1,0.562,0.5675;-0.6464,-0.756,0.11]; %3*3;期望输出值3*3(实为3个向量),有导师的监督学习count=1;while (count<=maxcount) %结束条件1迭代20000次c=1;while (c<=samplenum)for k=1:outputNumsd(k)=expectlist(c,k); %获得期望输出的向量,d(1:3)表示一个期望向量内的值endfor i=1:inputNumsx(i)=samplelist(c,i); %获得输入的向量(数据),x(1:3)表一个训练向量字串4end%Forward();for j=1:hideNumsnet=0.0;for i=1:inputNumsnet=net+x(i)*v(i,j);%输入层到隐层的加权和∑X(i)V(i)endy(j)=1/(1+exp(-net)); %输出层处理f(x)=1/(1+exp(-x))单极性sigmiod函数endfor k=1:outputNumsnet=0.0;for j=1:hideNumsnet=net+y(j)*w(j,k);endif count>=2&&error(count)-error(count+1)<=0.0001o(k)=1/(1+exp(-net)/yyy); %平坦区加大学习率else o(k)=1/(1+exp(-net)); %同上endend%BpError(c)反馈/修改;errortmp=0.0;for k=1:outputNumserrortmp=errortmp+(d(k)-o(k))^2; %第一组训练后的误差计算enderrorp(c)=0.5*errortmp; %误差E=∑(d(k)-o(k))^2 * 1/2%end%Backward();for k=1:outputNumsyitao(k)=(d(k)-o(k))*o(k)*(1-o(k)); %输入层误差偏导字串5endfor j=1:hideNumstem=0.0;for k=1:outputNumstem=tem+yitao(k)*w(j,k); %为了求隐层偏导,而计算的∑endyitay(j)=tem*y(j)*(1-y(j)); %隐层偏导end%调整各层权值for j=1:hideNumsfor k=1:outputNumsdeltw(j,k)=alpha*yitao(k)*y(j); %权值w的调整量deltw(已乘学习率)w(j,k)=w(j,k)+deltw(j,k)+a*dw(j,k);%权值调整,这里的dw=dletw(t-1),实际是对BP算法的一个dw(j,k)=deltw(j,k); %改进措施--增加动量项目的是提高训练速度endendfor i=1:inputNumsfor j=1:hideNumsdeltv(i,j)=alpha*yitay(j)*x(i); %同上deltwv(i,j)=v(i,j)+deltv(i,j)+a*dv(i,j);dv(i,j)=deltv(i,j);endendc=c+1;end%第二个while结束;表示一次BP训练结束double tmp;tmp=0.0; 字串8for i=1:samplenumtmp=tmp+errorp(i)*errorp(i);%误差求和endtmp=tmp/c;error(count)=sqrt(tmp);%误差求均方根,即精度if (error(count)<precision)%另一个结束条件< p="">break;endcount=count+1;%训练次数加1end%第一个while结束error(maxcount+1)=error(maxcount);p=1:count;pp=p/50;plot(pp,error(p),"-"); %显示误差然后下面是研友wangleisxcc的程序基础上,我把初始化网络,训练网络,和网络使用三个稍微集成后的一个新函数bpnet %简单的BP神经网络集成,使用时直接调用bpnet就行%输入的是p-作为训练值的输入% t-也是网络的期望输出结果% ynum-设定隐层点数一般取3~20;% maxnum-如果训练一直达不到期望误差之内,那么BP迭代的次数一般设为5000% ex-期望误差,也就是训练一小于这个误差后结束迭代一般设为0.01% lr-学习率一般设为0.01% pp-使用p-t虚拟蓝好的BP网络来分类计算的向量,也就是嵌入二值水印的大组系数进行训练然后得到二值序列% ww-输出结果% 注明:ynum,maxnum,ex,lr均是一个值;而p,t,pp,ww均可以为向量字串1% 比如p是m*n的n维行向量,t那么为m*k的k维行向量,pp为o*i的i维行向量,ww为o* k的k维行向量%p,t作为网络训练输入,pp作为训练好的网络输入计算,最后的ww作为pp经过训练好的BP训练后的输出function ww=bpnet(p,t,ynum,maxnum,ex,lr,pp)plot(p,t,"+");title("训练向量");xlabel("P");ylabel("t");[w1,b1,w2,b2]=initff(p,ynum,"tansig",t,"purelin"); %初始化含一个隐层的BP网络zhen=25; %每迭代多少次更新显示biglr=1.1; %学习慢时学习率(用于跳出平坦区)litlr=0.7; %学习快时学习率(梯度下降过快时)a=0.7 %动量项a大小(△W(t)=lr*X*ん+a*△W(t-1))tp=[zhen maxnum ex lr biglr litlr a 1.04]; %trainbpx[w1,b1,w2,b2,ep,tr]=trainbpx(w1,b1,"tansig",w2,b2,"purelin", p,t,tp);ww=simuff(pp,w1,b1,"tansig",w2,b2,"purelin"); %ww就是调用结果下面是bpnet使用简例:%bpnet举例,因为BP网络的权值初始化都是随即生成,所以每次运行的状态可能不一样。

人工神经网络计算机仿真中matlab的应用[Word文档]

人工神经网络计算机仿真中matlab的应用[Word文档]

人工神经网络计算机仿真中matlab的应用[Word文档] 人工神经网络计算机仿真中matlab的应用关键字: 人工神经网络计算机仿真中matlab的应用本文为Word文档,感谢你的关注,【摘要】人工神经网络是目前发展较迅速的交叉学科,神经网络可以用来计算复杂的输入和输出之间的关系。

文中把Matlab的神经网络工具箱与Simulink合理结合,完成神经网络控制系统的计算仿真。

【关键词】计算机神经网络 Matlab 应用近年来,大多控制系统的高品质控制都少不了对系统的仿真进行研究。

根据仿真研究可以优化设定的控制参量,因此,控制系统的模拟与仿真一直是研究的重点。

通常来说,控制系统进行计算机仿真必须首先创建系统模型,之后根据模型设定仿真城西,充分运用计算机对其进行动态模拟并展示结果。

本文以计算机神经网络为研究视角,介绍了人工神经网络及BP网络模型,提出设计基于Simulink控制系统及动态仿真。

一、简述人工神经网络人工神经网络又被称为神经网络,是由人脑结构的启发之下创建的计算模型,人工神经网络不单单是高度非线性动力学系统,也是自适应组织系统。

神经网络的主要特征表现在他的学习、组织及容错能力方面。

神经网络可以采用被训练的状态实现特定任务,从而为系统提供独具代表性的描述问题样本,就是其可以成组的输入、输出样本,神经网络可以推测出输入与输出数据之间的关系。

等到训练完成之后,神经网络又能永凯训练和识别任意样本之间相似的新数据。

同时,神经网络也能对不完整或存在噪音的数据进行识别,这一特征被广泛使用到预测、诊断、控制方面。

在最抽象的层次上,神经网络可以看做一个黑箱,数据由一边输入,通过神经网络处理之后给予相应的输出。

对比输出及目标数值,采用产生的误差调整网络内部之间的链接权重。

人工神经网络功能如图1所示。

二、创建BP网络模型BP网络是现今使用最广泛的神经网络模型。

该模型的学习规则是采用反向传播(BP)对网络的权值和阀值进行调整,却阿伯网络误差的平方和达到最小状态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

神经网络与matlab仿真摘要随着技术的发展,人工神经网络在各个方面应用越来越广泛,由于matlab仿真技术对神经网络的建模起着十分重要的作用,因此,本文通过讨论神经网络中基础的一类——线性神经网络的matlab仿真,对神经网络的matlab仿真做一个基本的了解和学习。

关键词:人工神经网路matlab仿真线性神经网络1 神经网络的发展及应用人工神经网络(Artificial Neural Network,简称ANN)是一种高度并行的信息处理系统,它具有高度的容错性,自组织能力和自学习能力;它以神经科学的研究成果为基础,反映了人脑功能的若干基本特性,对传统的计算机结构和人工智能方法是一个有力的挑战,其目的在于探索人脑加工、储存和搜索信息的机制,进而应用于人工智能系统。

1.1 神经网络的研究历史及发展现状神经网络的研究已有较长的历史。

1943年,心理学家McCulloch和数学家Pitts合作提出形式(兴奋与抑制型)神经元的数学模型(MP模型),开创了神经科学理论研究的时代。

1944年,Hebb提出了神经元连接强度的修改规则,它们至今仍在各种神经网络模型中起着重要作用。

50年代末60年代初,开始了作为人工智能的网络系统的研究。

1958年,F.Rosenblatt首次引进了模拟人脑感知和学习能力的感知器概念,它由阈值性神经元组成。

1962年,B.Widrow提出的自适应线性元件(adaline),具有自适应学习功能,在信息处理、模式识别等方面受到重视和应用。

在这期间,神经网络大都是单层线性网络。

此时,人们对如何解决非线性分割问题很快有了明确的认识,但此时,计算机科学已被人工智能研究热潮所笼罩。

80年代后,传统的数字计算机在模拟视听觉的人工智能方面遇到了物理上不能逾越的基线,此时,物理学家Hopfield提出了HNN模型,引入了能量函数的概念,给出了网络稳定性的判据,同时开拓了神经网络用于联想记忆和优化计算的新途径。

神经网络的热潮再次掀起。

此后,Feldmann和Ballard 的连接网络模型指出了传统的人工智能“计算”与生物的“计算”的不同点,给出了并行分布的计算原则;Hinton和Sejnowski提出的Boltzman机模型则急用了统计物理学的概念和方法,首次采用了多层网络的学习算法,保证整个系统趋于全局稳定点;Rumelhart和McClelland等人发展了多层网络的BP算法;Kosko提出了双向联想记忆网络;Hecht-Nielsen提出了另一种反向传播网络,可用于图像压缩和统计分析;Holland提出了分类系统类似于以规则为基础的专家系统。

这些努力为神经网络的后期发展奠定了牢固的基础。

目前,神经网络在研究方向上已经形成多个流派,包括多层网络BP算法,Hopfield网络模型,自适应共振理论(ART),自组织特征映射理论等。

1987年,IEEE在San Diego召开大规模的神经网络国际学术会议,国际神经网络学会也随之诞生。

迄今为止的神经网络研究。

大体可分为三个大的方向:1)探求人脑神经系统的生物结构和机制;2)用微电子学或光学器件形成特殊功能网络,主要应用于新一代计算机制造;3)讲神经网络理论作为解决某些问题的一种手段和方法。

1.2 神经网络的应用在理论工作取得重要进展的同时,硬件实现的研究工作也在积极开展,神经网络理论已经渗透到各个领域,并在智能控制、模式识别、计算机视觉、自适应滤波和信号处理、非线性优化、自动目标识别、连续语音识别、声纳信号的处理、知识处理、传感器技术与机器人、生物医学工程等方面取得了很大的进展。

人工神经网络系统是仿照人脑的工作原理而产生。

它是大量的、同时也是很简单的处理单元(神经元)广泛互连形成的复杂的非线性系统。

在人工神经网络中存在着许多简单的、具有非线性函数功能的几类单元,它们称为人工神经元。

神经元以分层的形式来组织,而它们之间又存在着用突触维持的高度互连。

人工神经网络的学习能力就在于突触的权值能够在学习过程中得到加强或是削弱,并以此将信息储存于神经网络中。

人工神经网络经过训练,能够实现输入到输出的映射关系,同时具有一定的推广性,因此在不同的领域得到广泛的应用,如自动控制、移动通信、生物医学、模式识别、生产制造等等。

2 面向matlab工具箱的神经网络设计人工神经网络可通过硬件或软件方式来实现。

硬件方式即神经计算机。

目前较常用的还是软件实现方式。

已有许多公司和研究单位设计了通用的ANN程序以方便人们使用,matlab提供的神经网络工具箱就是其重要代表。

神经网络工具箱是在matlab环境下所开发出来的许多工具箱之一,它是以人工神经网络理论为基础,用matlab语言构造出典型神经网络的激活函数,如S 型、线性、竞争层、饱和线性等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。

另外,根据各种典型的修正网络权值的规定,加上网络的训练过程,用matlab编写出各种网络设计与训练所涉及的公式运算、矩阵操作和方程求解等大部分子程序,网络的设计者可以根据自己的需要进行调用,免除了自己编写复杂而庞大的算法程序的困扰,集中精力去思考需要解决的问题,提高工作效率和解题质量。

目前matlab几乎完整地概括了神经网络的基本成果,对于各种网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便。

同时,matlab的其他工具箱也为我们在神经网络工具箱的基础上开发研究模糊与神经网络的结合、神经网络的样条算法等问题提供了辅助手段。

3 线性神经网络线性神经网络是最简单的一种神经元网络,它可以由一个或多个线性神经元构成。

50年代末期提出的自适应线性元件是线性神经网络最早的典型代表。

其每个神经元的传递函数为线性函数,其输出可以取任意值。

线性神经网络可以采用Widrow-Hoff学习规则,也称为LMS算法来调整网络的权值和阈值。

3.1 线性神经网络模型线性神经元模型的神经元有一个线性传递函数purelin,其输入输出之间是简单的比例关系,一次对单个线性神经元,由图1可得,a=purelin(ω×p+b).因此,线性神经网络允许输出可以取任意值,而不仅仅是0或1。

图1 线性神经元模型图2 线性神经元传递函数具有R 个输入的单层(S 个神经元)线性神经网络模型如下图3所示。

图3 单层多输入的线性神经网络模型3.2 线性神经网络的学习算法Widrow-Hoff 学习规则,又称为最小均方误差LMS (Least Mean Square Error )学习算法,由Widrow-Hoff 提出,属于有导师学习算法。

LMS 学习规则定义如下:221111()(()())m mk k mse e k d k y k m m ====-∑∑ (3-1)其目标是通过调节权值,使mse 从误差空间的某点开始,沿着mse 的斜面向下滑行,最终使mse 达到最小值。

LMS 算法的实现有五个步骤:第一步:初始化。

给各个连接赋一个较小的随机值;第二步:输入一个样本,计算连接权值的调整量:2()()2()ij ij e k e k e k ωω∂∂=∂∂ (3-2)2()()2()e k e k e k b b ∂∂=∂∂ (3-3)1()[()(())]R ij i ij ij i e k e d k p k b ωωω=∂∂=-+∂∂∑ (3-4)第三步:调整连接权值:根据负梯度下降的原则,网络权值和阈值修正公式如下(1)()2()()(1)()2()T k k e k p k b k b k e k ωωηη+=++=+ (3-5)式中η为学习率,当其取较大值时,可以加快网络的训练速度,但是如果其值太大,会导致网络稳定性的降低和训练误差的增加。

所以,为了保证网络进行稳定的训练,学习率的值必须选择一个合适的值;第四步:计算均方误差:221111()(()())m mk k mes e k d k y k m m ====-∑∑ (3-6)第五步:判断误差是否为零或者是否达到预选设定的要求。

如果是,则结束算法,否则输入下一个样本,返回第二步进入下一轮求解过程。

4 线性神经网络的matlab 实现下表1给出了matlab 中与线性网络相关的神经网络工具函数。

具函数实现。

设计一个简单的单层线性神经元,其输入和目标分别为P=[+1.0 -1.2],T=[+0.5 +1.0]。

权值和阈值的范围分别为-1~1。

试用matlab实现其从输入到输出的变化关系。

该线性网络的结构如下图4所示。

图4 线性网络结构图由例中的条件编写matlab源程序如下:%dlin1.m%NEWLIND%SIMclf;figure(gcf);P=[1.0 -1.2];T=[0.5 1.0];w_range=-1:0.1:1;b_range=-1:0.2:1;ES=errsurf(P,T,w_range,b_range,'purelin');plotes(w_range,b_range,ES);ax=findobj(gcf.'type','axes');pausenet=neslind(P,T);format compact;A=0;E=0;SSE=0;A=sim(net,P)E=T-ASSE=sumsqr(E)plotes(w_range,b_range,ES);plotep(net.IW{1.1},net.b{1},SSE);p=-1.2;a=0;a=sim(net,p) % 进行网络验证disp('End of dline1')执行程序,可得到线性网络求解后的误差曲面图5如下。

图5 线性网络误差曲面图对此线性网络进行更多的训练以求最优解,则matlab程序更改如下。

% dlin2.m% NEWLIN% TRAIN% SIMclf;figure(gcf);P=[1.0 -1.2];T=[0.5 1.0];w_range=-1:0.2:1;b_range=-1:0.2:1;ES=errsurf(P,T,w_range,b_range,'purelin');plotes(w_range,b_range,ES);pausemaxlr=0.40*maxlinlr(P,'bias');net=newlin([-2 2].1.[0],maxlr);net.trainParam.goal=.001;subplot(1,2,2);h=text(sum(get(gca,'xlim'))*0.5,sum(get(gca,'ylim'))*0.5'*Click On ME*'); set(h,'horizontal','center','fontweight','bold');[net.IW{1.1}net.b{1}]=ginput(1);delete(h);[net,tr]=train (net,P,T);format conpact;A=0;E=0;SSE=0;A=sim(net,P)E=T-ASSE=sumsqr(E)plotes(w_range,b_range,ES);plotep(net.IW{1.1},net.b{1},SSE);pauseplotperf(tr,net.trainParam.goal);p=-1.2;a=sim(net,P)disp('End of dlin2')运行程序,得到的误差曲面及误差等高线图如下图6所示。

相关文档
最新文档