文档介绍:《机器学****课内实验报告(3)感知器神经网络的实现2015-2016学年第2学期专业:智能科学与技术班级:智能1301班学号:06133029姓名:张争辉实验目的:理解单层感知器的工作原理。通过调节算法参数了解参数的变化对于感知器训练的影响。了解单层感知器局限性。实验内容:使用Matlab编程实现单层感知器。调节学****率η,观察对于不同学****率算法的收敛速度(迭代次数)。用单层感知器处理非线性分类问题,观察结果。实验原理:单层感知器:只有一层处理单元的感知器:感知器的学****算法采用感知器学****规则,训练步骤如下:Step1:对各权值w0j(0),w2j(0),…,wnj(0),j=1,2,…,m(m为计算层的节点数)赋予较小的非零随机数,设置p=1;Step2:输入样本对,其中为期望的输出向量(教师信号),上标p表示样本对的模式序号,设样本总数为P,则p=1,2,…,P;Step3:计算各节点的实际输出Step4:调整各节点对应的权值,η为学****率,用于控制调整速度,η值太大会影响训练的稳定性,太小则使训练的收敛速度变慢,一般取0<η≤1;Step5:p=p+1,如果p≤P,返回到Step2,否则转到Step6;Step6:如果感知器对所有样本的实际输出与期望输出相等,则停止;否则设置p=1,返回Step2。实验要求:用MATLAB/C/C++,实现上述算法选取逻辑与的实现。具体实现:MATLAB实现代码如下:closeall;rand('state',sum(100*clock))X=[-100;-101;-110;-111]';d=[0001];h=;p=4;epoch=100;T=;W=rand(1,3);W(1)=T;W1=[];W2=[];err=[];k=0;fori=1:epochs=0;forj=1:pnet(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));enderr=[errs];k=k+1;W1=[W1W(2)];W2=[W2W(3)];ifs==0,breakendendfigure(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)holdongridonx1=-2:4;x2=(T-W(1)*x1)/W(2);plot(x1,x2