单层感知器实现逻辑‘与’功能
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单层感知器实现逻辑‘与’功能
1.感知器实现逻辑‘与’功能的学习算法
单层感知器,即只有一层处理单元的感知器。 感知器结构如下图所示:
图1:感知器结构
表1:与运算的真值表
x 1 【
x 2 y 0 0 0 0 1 0 1 0 )
1
1
1
分界线的方程(w 1x 1+w 2x 2-T=0)可以为: +输入为k x 1、k x 2,输出为yk 。当k x 1和k
x 2均为1时,yk 为1,否则yk 为0。
设阈值θ=,训练速率系数η=,初始设置加权为058.0)
0(1=w ,065.0)
0(2=w 。
由于只有一个输出,得加权修正公式为:
k k i i x n w n w ηδ+=+)()1(
k k k y T -=δ
-
第一步:w(0)=, ,加入x 1=(0, 0),05.01221
111-=-+=θx w x w s ,则y 1=0。由
于T 1=0,δ1= T 1- y 1=0,故w(1)=,
第二步:加入x 2=(0, 1),015.02
222112
=-+=θx w x w s ,则y 2=1。由于T 2=0,
则δ2= T 2- y 2=-1,故
w(2)=w(1)+(-1)x 2=,
第三步:加入x 3=(1, 0),008.03
223113=-+=θx w x w s ,则y 3=1。由于T 3=0,则δ3= T 3- y 3=-1,故 w(3)=w(2)+(-1)x 3=,
第四步:加入x 4=(1, 1),033.04
224114=-+=θx w x w s ,则y 4=1。由于T 4=1,
则δ4= T 4- y 4=0,故w(4)=w(3)=,
第五步:加入x 1=(0, 0),S 1=,则y 1=0。由于T 1=0,δ1=0,故w(5)=, 第六步:加入x 2=(0, 1),S 2=,则y 2=0。由于T 2=0,δ2=0,故w(6)=, 第七步:加入x 3=(1, 0),S 3=,则y 3=0。由于T 3=0,δ3=0,故w(7)=, 第八步:加入x 4=(1, 1),S 4=,则y 4=1。由于T 4=1,δ4=0,故w(8)=, 】
所以:w=,
2.用Matlab 实现‘与’逻辑的程序
function yu(); close all;
rand('state',sum(100*clock)) X=[-1 0 0;-1 0 1;-1 1 0;-1 1 1]'; d=[0 0 0 1]; h=; $ p=4;
epoch=100; T=;
W=rand(1,3); W(1)=T; W1=[]; W2=[]; err=[]; k=0;
for i=1:epoch 《
s=0;
for j=1:p
net(j)=W*X(:,j);
o(j)=(net(j)>=0);
W=W+h*(d(j)-o(j))*X(:,j)';
s=s+abs(d(j)-o(j));
end
err=[err s];
k=k+1;
W1=[W1 W(2)];
。
W2=[W2 W(3)];
if s==0,break
end
end
figure(1)
subplot(3,1,1)
x=1:k;
plot(x,err,'b-')
xlabel('迭代次数')
ylabel('error')
.
title('误差的收敛曲线') subplot(3,1,2)
plot(x,W1,'r-')
xlabel('迭代次数')
ylabel('W1')
title('权值W1的变化过程')
subplot(3,1,3)
plot(x,W2,'y-')
xlabel('迭代次数')
ylabel('W2')
(
title('权值W2的变化过程') figure(2)
hold on
grid on
x1=-2:4;
x2=(T-W(1)*x1)/W(2);
plot(x1,x2,'b--')
xlabel('x1')
ylabel('x2 ')
title('样本分布及分界线')
(
x=[0 0 1 1];
y=[0 1 0 1];
plot(x,y,'b*');
M=[0 0 0;0 1 0;1 0 0;1 1 1];
fprintf('\n')
display(['与运算的结果'])
display(['The final error is:' num2str(s)])
display(['The epoch is:' num2str(k)])
display(['The final W is:' num2str(W(2)) ' ' num2str(W(3))]) display(['The final T is:' num2str(T)])
"
display(['the result is:'])
display(['x1',' x2',' y'])
display(num2str(M))
运算结果是:
>> yu
与运算的结果
The final error is:0
The epoch is:3
%
The final W is:
The final T is:
the result is:
x1 x2 y
0 0 0
0 1 0
1 0 0
1 1 1
生成的图表如图2,图3所示: