单层感知器实现逻辑‘与’功能

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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所示:

相关文档
最新文档