神经网络指导.docx
《神经网络指导.docx》由会员分享,可在线阅读,更多相关《神经网络指导.docx(15页珍藏版)》请在冰豆网上搜索。
![神经网络指导.docx](https://file1.bdocx.com/fileroot1/2022-10/19/e4a4e62a-6959-44b4-be27-4f44de74b389/e4a4e62a-6959-44b4-be27-4f44de74b3891.gif)
神经网络指导
第三部分神经网络控制技术
一感知机
1)感知机概念
感知机是最早被设计并被实现的人工神网络。
感知器是一种非常特殊的神经网络,它在人工神经网络的发展历史上有着非常重要的地位,尽管它的能力非常有限,主要用于线性分类。
图1单神经元结构模型
概念:
(P125)x1…xn为输入信号;
w1...wn表示连接权系数,即权值,连接权;
y为输出;
θ为阈值(阀值);
模型可描述为:
响应函数为:
或
f(•)也称为变换函数,活化函数(activationfunction),激发函数。
2)感知器的工作方式:
学习阶段——修改权值(例:
根据“已知的样本”对权值不断修改;――有导师学习)
工作阶段——计算单元变化,由响应函数给出新输入下的输出。
感知机的学习算法
样本:
X={X1,X2……Xp}
Y={y1,y2……yp}
学习的过程,主要根据“样本”来修正权值W,阈值θ
3)响应函数(激活函数)
响应函数(激活函数)的基本作用:
(1).控制输入对输出的激活作用;
(2).对输入、输出进行函数转换;
(3).将可能无限域的输入变换成指定的有限范围内的输出。
1).阈值单元
单层感知器:
✓两个输入x1和x2。
✓一个阈值(阀值)θ
✓两个待调整的权值W1和W2
✓决策函数为
✓样本集分别属于2类。
4)工作阶段理解的例题
x1为考试成绩、x2为平时成绩,将x1、x2作为两个输入,构建两输入、单输出的感知机实现成绩评定系统其权值w1=0.7、w2=0.3,阈值θ=60。
求下列成绩的评定结果。
X1
70
30
60
80
x2
50
90
59
40
解:
x1
70
30
60
80
x2
50
90
59
40
Net()
70*0.7+50*0.3-60
=7>0
30*0.7+90*0.3-60
=-12<0
60*0.7+59*0.3-60
=-0.3<0
80*0.7+40*0.3-60
=8>0
y
1
0
0
1
练习
2设一平面上有两类点,使用横坐标x1和纵坐标x2作为两个输入,构建两输入、单输出的感知机。
若权值w1=-40、w2=22,阈值θ=6000,求下列样本的识别结果。
x1
70
30
60
80
x2
50
90
59
40
感知器的建立:
学习阶段——修改权值(例:
根据“已知的样本”对权值不断修改;――有导师学习)
工作阶段——计算单元变化,由响应函数给出新输入下的输出。
举例:
用感知器实现“与”的功能
解:
设x1,x2为两输入,取值为逻辑0或1
y为输出,即x1,x2与运算后的结果。
用感知器实现“与”的功能,即用此设计好的感知器可以相当于“与门”完成与运算。
也就是确定此感知器中的3个参数“w1,w2,θ”。
举例:
用感知器实现“与”的功能
1)设w1=0;w2=0;θ=0;
2)输入x={x1,x2}
输出y
样本:
x1=0011
x2=0101
y=0001
即,时
y1=0,y2=0,y3=0,y4=1;
3)计算感知机在ui作用下的输出yi
由模型可描述为:
j=1,2n=2i=1,2,3,4,用矩阵表示为
s1=(w1,w2)×u1-θ=(0,0)×-0=0;
s2=(w1,w2)×u2-θ=(0,0)×-0=0;
s3=(w1,w2)×u3-θ=(0,0)×-0=0;
s4=(w1,w2)×u4-θ=(0,0)×-0=0;
由响应函数
Y=[1111],即y1=y2=y3=y4=1;
4)调整权值和阈值
由ei(t)=(di-yi(t))
e(t)=(-1,-1,-1,0)
求E(t)==-3,设η=0.5
w1(t+1)=w1(t)+η∑(di-yi(t))×x1’)
=0+0.5×(-1,-1,-1,0)×(0,0,1,1)’=-0.5;
w2(t+1)=w2(t)+η∑(di-yi(t))×x2’)
=0+0.5×(-1,-1,-1,0)×(0,1,0,1)’=-0.5;
θ(t+1)=θ(t)+(|E(t)|)1/2=0+1.732=1.732;
由此w1=-0.5,w2=-0.5,θ=1.732;
返回3)重新计算,直到E满足要求。
%建立一个感知机网络,使其能够完成“与”的功能
%感知机神经网络学习阶段
%自编程,没用mat工具箱
err_goal=0.001;lr=0.9;
max_expoch=10000;
X=[0011;0101];T=[0001];
[M,N]=size(X);[L,N]=size(T);
Wij=rand(L,M);y=0;b=rand(L);
forepoch=1:
max_expoch
NETi=Wij*X;
forj=1:
N
fori=1:
L
if(NETi(i,j)>=b(i))
y(i,j)=1;
else
y(i,j)=0;
end
end
end
E=(T-y);EE=0;
forj=1:
N
EE=EE+abs(E(j));
end
if(EEWij=Wij+lr*E*X';%%调整权值
b=b+sqrt(EE);%%调整阈值
end
epoch,Wij,b
%第二阶段工作期,验证网络
X1=X;
NETi=Wij*X1;[M,N]=size(X1);
forj=1:
N
fori=1:
L
if(NETi(i,j)>=b(i))
y(i,j)=1;
else
y(i,j)=0;
end
end
end
y
算法步骤:
1)设输入变量为x1,x2…,xm;(j=1,2,…,m),设置权系数初值wj(wj一般取[-1,1]之间的随机小数);
2)确定学习样本,即给定输入/输出样本对,
输入:
u={u1,u2……un},,(i=1,2,…,n)
输出:
d={d1,d2……dn},(i=1,2,…,n)
3)分别计算感知机在ui作用下的输出yi ;
t指第t次计算并调整权值。
4)调整权值和阈值
(1)求ei(t)=di-yi(t)
(2)求E(t)=
若E(t)≠0,调整权值;
wj(t+1)=wj(t)+η∑([di-yi(t)]xji),写出矩阵为W(t+1)=W(t)+η∑([di-yi(t)]ui);
θ(t+1)=θ(t)+(E(t))2返回3
若E(t)满足要求则结束。
η:
训练步长,一般0<η<1,η大收敛快,易振荡,η小,收敛慢,不易振荡
初始化:
initp训练:
trainp仿真:
simup
初始化:
initp可自动产生[-1,1]区间中的随机初始权值和阈值,例:
[w,b]=initp(2,8)或[w,b]=initp(p,t)
训练:
trainp感知器网络学习和仿真的过程
tp=[disp_freqmax_epoch];
(显示频率和训练的最大步数)
[w,b,te]=trainp[w,b,p,t,tp];
Train函数完成每一步训练后,返回新的网络权值和阈值,并显示已完成的训练步数ep及误差te
注意:
使用trainp函数并不能保证感知器网络在取训练所得到的权值和阈值时就可以顺利达到要求,因此,训练完成后,最好要验证一下:
a=simup[p,w,b];
ifall(a==t),disp(‘Itworks!
’),end
%直接利用mat工具箱(initptrainpsimup)
clearall
NNTWARNOFF
p=[0011;
0101]
t=[0001]
[w1,b1]=initp(p,t)%初始化
[w1,b1,epoches,errors]=trainp(w1,b1,p,t,[-1]);%训练
%%%%%%%%%%计算完毕
figure
(2);
ploterr(errors)
a1=simup(p,w1,b1);%%%%%%仿真
a1
ifall(a==t),disp(‘Itworks!
’);
e=t-a1;
k=1:
1:
4;
figure(3);
plot(k,e)
3感知机的特点
1)多输入,单输出
2)激活函数/传递函数为二值,一般为阶跃函数或符号函数
3)输出为二值:
0/1或-1/1
4)=f(u)
习题1
1)看懂课堂中2个实现“与”功能的程序:
yu1.m和yu2.m
2)模仿实现“与”功能的程序yu2.m,编写能实现2个变量及3个变量的“或”功能程序,要求:
a)给出完整的程序,并对重要的函数及语句给于解释说明,程序中要用语句画出训练误差图,分类图等。
b)在实验报告中,画出设计的网络的结构图,并在图中标出训练好的权值阈值。
4感知机的局限:
感知机只能对线性可分离的模式进行正确的分类。
当输入模式是线性不可分时,则无论怎样调节突触的结合强度(连接权值)和阈值的大小也不可能对输入进行正确的分类。
解决方法:
构造多层感知机网络,即含有隐层的网络,但只能修改最后一层权值阈值。
%%%%%直接利用mat工具箱(initptrainp)
clearall
NNTWARNOFF
p=[0011;
0101];
t=[0110];
s1=9;
[w1,b1]=initp(p,s1);%%%初始化第一层权值及阈值
[w2,b2]=initp(s1,t);%初始化第二层(隐层)权值及阈值
A1=simup(p,w1,b1);%网络第一层输出
[w2,b2,epoches,errors]=trainp(w2,b2,A1,t,[-1]);
%%%%%%%%%%学习完毕,即网络建立完毕
w2
b2
figure
(2)
ploterr(errors)
a1=simup(p,w1,b1);%网络第一层输出
a2=simup(a1,w2,b2);%网络第一层输出
e=t-a2;
k=1:
1:
4;
figure(3)
plot(k,e)
%网络第一层的权值及阈值不做修改,只有隐层的的权值及阈值进行不断学习及修改。
%%%先设定(任意选取w1b1),初始化W2B2,再让W2B2不断学习修正
%%%%也是直接利用mat工具箱
p=[0011;
0101];
t=[0110];
w1=[1-1;
1-1]
b1=[-0.5;0.5]
[w2,b2]=initp(2,t);
A1=simup(p,w1,b1);%网络输出
[w2,b2,epoches,errors]=trainp(w2,b2,A1,t,[-1]);
w2
b2
figure
(2)
ploterr(errors)
a1=simup(p,w1,b1);
a2=simup(a1,w2,b2);
a2
e=t-a2;
k=1:
1:
4;
figure(3)
plot(k,e)
二bp网络
脐橙可食率自动估测的研究
脐橙营养丰富是深受人们喜爱的水果之一,对脐橙进行品质检测和分级对提高脐橙种植和销售水平都具有重要意义。
在