人工神经网络论文2Word下载.docx
- 文档编号:5277379
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:17
- 大小:100.98KB
人工神经网络论文2Word下载.docx
《人工神经网络论文2Word下载.docx》由会员分享,可在线阅读,更多相关《人工神经网络论文2Word下载.docx(17页珍藏版)》请在冰点文库上搜索。
生物神经元传递信息的过程为多输入、单输出,有两种常规的工作模式:
兴奋与抑制状态,即满足“0-1”律。
从神经元各组成部分的功能来看,信息的处理与传递主要发生在突触附近,当神经元细胞体通过轴突传到突触前膜的脉冲幅度达到一定强度,即超过其阈值电位后,突触前膜将向突触间隙释放神经传递的化学物质,突触有两种类型,兴奋性突触和抑制性突触。
前者产生正突触后电位,后者产生负突触后电位。
1.3人工神经元模型
1通用模型
2求和操作
3响应函数
y=O(s)
1.4人工神经网络模型
1前向网络(a)
2从输出到输入有反馈的前向网络(b)
3用来存储某种模式序列,层内互连前向网络(c)
4限制层内同时动作的神经元;
分组功能相互结合型网络(d)
1.5常见神经元响应函数
(a)阈值单元σ(s)=
(b)线性单元
y=O(s)=s
(c)非线性单元:
Sigmoid函数
(1)
(2)
1.6.人工神经网络学习的原理
人工神经网络首先要以一定的学习准则进行学习,然后才能工作。
现以人工神经网络对手写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。
所以网络学习的准则应该是:
如果网络做出错误的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。
首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图像模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。
在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。
这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能做出正确的判断。
如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。
如此操作调整,当给网络轮番输入若干个手写字母“A”、“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。
这说明网络对这两个模式的学习已经获得了成功,它已将这两个模式分布地记忆在网络的各个连接权值上。
当网络再次遇到其中任何一个模式时,能够做出迅速、准确的判断和识别。
一般说来,网络中所含的神经元个数越多,则它能记忆、识别的模式也就越多。
二BP神经网络
2.1BP网络
反向传播网络(Back-PropagationNetwork,简称BP网络)是将W-H学习规则一般化,对非线性可微分函数进行权值训练的多层网络。
权值的调整采用反向传播(Back-propagation)的学习算法,它是一种多层前向反馈神经网络,其神经元的变换函数是S型函数。
输出量为0到1之间的连续量,它可实现从输入到输出的任意的非线性映射。
2.1.1BP网络主要应用:
(1)函数逼近:
用输入矢量和相应的输出矢量训练一个网络逼近一个函数
(2)模式识别和分类:
用一个特定的输出矢量将它与输入矢量联系起来;
把输入矢量以所定义的合适方式进行分类;
(3)数据压缩:
减少输出矢量维数以便于传输或存储
(4)具有将强泛化性能:
使网络平滑地学习函数,使网络能够合理地响应被训练以外的输入泛化性能只对被训练的输入/输出对最大值范围内的数据有效,即网络具有内插值特性,不具有外插值性。
超出最大训练值的输入必将产生大的输出误差
2.1.2BP网络特点
(1)输入和输出是并行的模拟量
(2)网络的输入输出关系是各层连接的权因子决定,没有固定的算法
(3)权因子通过学习信号调节。
学习越多,网络越聪明
(4)隐含层越多,网络输出精度越高,且个别权因子的损坏不会对网络输出产生大的影响
只有当希望对网络的输出进行限制,如限制在0和1之间,那么在输出层应当包含S型激活函数。
在一般情况下,均是在隐含层采用S型激活函数,而输出层采用线性激活函数。
2.1.3多层BP网络简介
多层BP网络是一种具有三层或三层以上的多层神经网络,每一层都由若干个神经元组成,如图2-1所示,它的左、右各层之间各个神经元实现全连接,即左层的每个神经元与右层的每个神经元都由连接,而上下神经元无连接。
图2-1多层BP网络
BP网络按有教师学习方式进行训练,当一对学习模式提供给网络以后,其神经元的激活值将从输入层经中间层向输出层传播,在输出层的各神经元输出对应于输入模式的网络响应。
然后,按减少希望输出与实际输出误差的原则,从输出层经中间层,最后回到输入层逐层修正个连接权。
由于这种修正过程是从输出到输入逐层进行的,所以称它为“误差逆传播算法”。
随着这种误差逆传播训练的不断进行,网络对输入模式响应的正确率也将不断提高。
由于BP网络有处于中间位置的隐含层,并有相应的学习规则可循,可训练这种网络,使其具有对非线性模式的识别能力。
2.2三层BP网络
2.2.1三层BP网络结构图
图2-2三层BP网络结构图
2.2.2三层BP网络学习算法
为了使BP网络具有某种功能,完成某项任务,必须调整层间连接权值和节点阈值,使所有样品的实际输出和期望输出之间的误差稳定在一个较小的值以内。
在训练BP网络算法中,误差反向传播算法是最有效最常用的一种方法。
BP网的学习过程主要有以下四个部分组成。
1)输入模式顺传播(输入模式由输入层经中间层向输出层传播计算)。
2)输出误差逆传播(输出的误差由输出层经中间层传向输入层)。
3)循环记忆训练(模式顺传播与误差逆传播的计算过程反复交替循环进行)。
4)学习结果判别(判定全局误差是否趋向极小值)。
2.2.3三层BP网络设计需要考虑的问题
在进行BP网络的设计时,应从网络的层数、每层中的神经元数、初始值及学习速率等几个方面考虑。
1)网络的层数
已经证明:
三层BP网络可以实现多维单位立方体Rm到Rn的映射,即能够逼近任何有理函数。
这实际上给了一个设计BP网络的基本原则。
增加层数可以更进一步降低误差,提高精度,但同时也使网络复杂化,从而增加网络权值的训练时间。
而误差精度的提高实际上可以通过增加隐含层的神经元数目来获得,其训练结果也比增加层数更容易观察和调整。
所以一般情况下,应优先考虑增加隐含层的神经元个数。
2)隐含层的神经元数
网络训练精度的提高,可以通过采用一个隐含层而增加神经元数的方法来获得。
这在结构的实现上要比增加更多的隐含层简单的多。
在具体设计时,比较实际的做法是隐含层取输入层的两倍,然后适当地加上一点余量。
评价一个网络设计的好坏,首先是它的精度,再是它的训练时间。
时间包含两层含义:
一层是循环次数,二是每一次循环所花的时间。
3)初值权值的选取
由于系统是非线性的,初始值的选取对于学习是否达到局部最小,是否能够收敛以及训练时间的长短有很大关系。
初始值过大、过小都会影响学习速度,因此权值的初始值应选为均匀分布的小数经验值,一般取初始权值在(-1,1)之间的随机数,也有选取在[-2.4/F,2.4/F]之间的随机数的,其中F为输入特征个数。
为避免每一步权值的调整方向是同向的,应将初始值设为随机数。
4)学习速率
学习速率决定每一次循环中所产生的权值变化量。
快的学习速率可能导致系统的不稳定。
但慢的学习速率导致较长的训练时间,可能收敛很满,不过能保证网络的误差值跳出误差表面的低谷而最终趋于最小误差值。
所以在一般情况下,倾向于选择较慢的学习速率以保证系统的稳定性。
学习速率的选择范围在0.01-0.8之间。
如同初始权值的选取过程一样,在一个神经网络的设计中,网络要经过几个不同的学习速率的训练,通过观察每一次训练后的误差平方和∑e2的下降速率来判断所选定的学习速率是否合适,若∑e2下降很快,则说明学习速率合适,若∑e2出现振荡现象,则说明学习速率过快。
对于每一个具体网络都存在一个合适的学习速率,但对于较复杂网络,在误差曲面的不同部位可能需要不同的学习速率。
为了减少寻找学习速率的训练次数和训练时间,比较合适的方法是采用变化的自适应学习速率,使网络的训练在不同的阶段自动设置不同的学习速率。
一般说,学习速率越快,收敛越快,但容易振荡;
而学习速率越慢,收敛越慢。
5)期望误差的选取
在网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值。
所谓“合适”,是相对所需要的隐含层的节点数来确定,因为较小的期望误差要靠增加隐含层的节点以及训练时间来获得。
一般情况下,作为对比,可以同时对两个不同期望误差的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络。
尽管含有隐含层的神经网络能实现任意连续函数的逼近,但在训练过程中如果一些参数选取合适,可以加快神经网络的训练,缩短神经网络的训练时间和取得满意的训练结果。
对训练过程影响较大的是权系数的初值、学习速率等。
1)调整量与误差成正比,即误差越大,调整的幅度就越大。
2)调整量与输入值的大小成正比,由于输入值越大,在这次学习过程中就显得越活跃,所以与其相连的权值的调整幅度就应该越大。
3)调整量与学习系数成正比。
通常学习系数在0.01-0.8之间,为使整个学习过程加快,又不引起振荡,可采用变学习率的方法,即在学习初期取较大的学习系数,随着学习过程的进行会逐渐减少其值。
三BP神经网络的应用
3.1问题的提出
世界干散海运量1986—1996年各年海运量如下表所示:
试建立预测模型,要求能通过输入以前几年的数据预测出今后某年的海运量预测数据。
3.2模型建立思想
我们将上述数据分成5个样本如下:
样本1Z1=(1399,1467,1567,1595,1588)d1=1622
样本2Z2=(1467,1567,1595,1588,1622)d2=1611
……
样本5Z5=(1622,1611,1615,1685,1789)d5=1790
即将连续5年的数据作为一个预测样本数据,取第6年的数据为理想数据。
通过神经网络由前面5年给出的数据给出第6年一个预测值,并与第6年的实际数据比较得到一个差值,将各组样本所得预测值与实际值的差值平方求和,记为J作为训练指标,若训练指标没有达到要求的精度,则修改神经网络的权值,并重新计算新的训练指标,直到达到精度为止。
此时,神经网络学习完毕,自次,向神经网络输入一组样本,便能得到比较精确的下一年的预测值。
我们采用多输入单输出切比雪夫神经网络模型建立世界干散海运量的预测模型,其网络模型结构如下图所示。
w1T1
x1
……netTiY
xn
wnTm
在本例中,我们采用5*1*6*1算法结构,图示中包含了x1到xn的5个输入节点,用于输入1个样本中用于预测的前5年数据,即用于预测第6年数据的前5年数据,Wi为对应于每个输入节点Xi的权值,Tj为该网络模型中设置的6个隐层节点(也即隐神经元),对应每个隐神经元都有一对应的权值Cj。
Y为预测输出结果。
对于各输入信息Xi,它们经过带权叠加
得到net信息,
将net向前传播到各隐神经元Ti,再经过作用函数Tj(net)并求带权叠加和
变换后将隐节点的输入信号传播到输出层接点Y,从而对应于一组样本得到一个预测值Y。
其中Tj为切比雪夫多项式函数模型,其多项式函数如下所示:
T0(x)=1;
T1(x)=x;
T2(x)=2x2-1;
T3(x)=4x3–3x;
T4(x)=8x4-8x2+1;
T5(x)=16x5-20x3+5x;
…………………..
输入上面所设的5组样本Zl(l=1,2..5),通过神经网络变换将会得到5个对应的预测值Yl,将各Yl与对应各组样本的dl(理想输出值)相减,所得值记为el,即el=dl-yl;
将各所得的el按平方求和得到J,即
J即为此神经网络的训练指标,当J小于一任意指定小的ε时,则学习结束,否则转入下
一步:
调整神经网络各部分权值Cj和Wi。
通过J的函数表达式对Cj求偏导得到
△Cj=η*el*Tj(net);
对Wi求偏导得到△Wi=η*Cj*el*Tj’(net);
将它们分别分别与Cj和Wi相加便得到了一组新的Cj和Wi,至此便完成了一次权值调整也即一次学习,重新返回第一步,循环执行,直到训练指标达到要求为止。
3.3具体算法描述
(1)η=0.1,Cj
(1)=rand(随即数),(j=1,2,,,,6)J=0,Wi
(1)=rand(随即数)(i=1,2,,,,5),k=1,L=1;
Tj(net(l))=…切氏多项式;
(j=1,2,,,,6)
;
e(l)=d(l)-y(l),J=J+1/2e2(l),若l<
p则goto(3),否则若J小于ε,则训练结束,否则goto(3);
(3)△Cj(k)=η*el*Tj(net)(j=1,,,,6),
△Wi(k)=η*Cj*el*Tj’(net)(i=1,,,,5),
Cj(k+1)=Cj(k)+△Cj(k),Wi(k+1)=Wi(k)+△Wi(k);
(4)L=L+1,若L<
p,goto
(2),否则k=k+1,l=1,J=0,goto
(2).
其中l为样本数(l=1,,,,,p),k表示学习次数,i为输入节点数(i=1,,,5),j为隐神经元数(j=1,,,6),e表示预测值与期望值的误差,J为训练指标,Xi(l)为理想输入,d(l)为理想输出。
3.4源程序实现代码
#include<
stdio.h>
#defineN0.000001//训练指标所要求达到的精度
floatt(intj,floatx);
//切比雪夫多项式调用函数
floatt1(intj,floatx);
//切比雪夫多项式的一介导数调用函数
floatg,J,net,y,e;
//g为参数,J为训练指标,y为预测输出值,e为理想输出与预测输出值之间的误差
floatx[5][5],d[5],w[5],w1[5],neww[5],c[6],c1[6],newc[6];
//x数组用来存放5组样本,每个样本包括5个输入值,d数组存放对应于各组样本的理想输出值,w数组存放各输入端的权值,neww数组存放更新后的输入端权值,w1数组存放各w权值的修正值,c数组存放各输出端权值,newc存放更新后的输出端权值,c1存放各c权值的修正值。
inti,j,l;
main()
{
intk=0;
//训练次数
floattemp1;
g=0.1;
for(l=0;
l<
5;
l++){//将各数组通过手动设置进行初始化
for(i=0;
i<
i++)
scanf("
%f"
&
x[i][l]);
d[l]);
neww[l]);
}
for(j=0;
j<
6;
j++)
newc[j]);
do{//开始训练
J=0;
y=0;
net=0;
i++)//用新权值数组更新各以前的权值数组
w[i]=neww[i];
c[j]=newc[j];
l++){//对各组样本计算其预测输出值Y
net=net+w[i]*x[i][l];
j++){
y=y+c[j]*t(j,net);
temp1=temp1+c[j]*t1(j,net);
e=d[l]-y;
//计算累积误差
J=J+1/2*e*e;
j++){//根据结果调整各神经网络权值
c1[j]=g*e*t(j,net);
newc[j]=c[j]+c1[j];
i++){
w1[i]=g*e*temp1*x[i][l];
neww[i]=w[i]+w1[i];
k++;
}//for
}while(J<
=N&
&
k<
100);
//当训练指标未达到要求以及未超过最大训练次数
if(k>
=100)printf("
can'
ttrainsuccessfully"
);
//若k超过最大允许训练次数,打印训练失败
else{//否则打印训练成功,并输出神经网络训练成功以后的各权值
printf("
trainsuccessfully\n"
)
for(i=0;
printf(“%f”,w[i]);
printf(“\n”);
for(j=0;
printf(“%f”,c[j]);
}
floatt(intj,floatx){
floattemp;
switch(j)
case0:
temp=x;
case1:
temp=2*x*x-1;
case2:
temp=4*x*x*x-3*x;
case3:
temp=8*x*x*x*x-8*x*x+1;
case4:
temp=16*x*x*x*x*x-20*x*x*x+5*x;
returntemp;
floatt1(intj,floatx){
temp=1;
temp=4*x;
temp=12*x*x-3;
temp=32*x*x*x-16*x;
temp=80*x*x*x*x-60*x*x+5;
}
运行结果:
n=38
w0=0.62531.60702.58023.57274.5746
c0=-3.9602-1.96020.03982.03984.0398
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工 神经网络 论文