单层感知器属于单层前向网络,即除输入层和输出层之外,只拥有一层神经元节点。
一、感知器的结构
单层感知器由一个线性组合器和一个二值阈值原件组成。(一般选择阈值函数作为输出函数)
上图每一个输入分量pj通过一个权值分量wj进行加权求和,并作为阈值函数的输入,偏差b 的加入使得网络多一个参数,作为调节输出的值增加方便。
二、感知器的学习
感知器学习就是不断调整权值和阈值,不断训练,寻找最合适的权值阈值。
w为权值向量,b为阈值向量,p为输入向量,e为误差,k为第k步学习,称为标准化感知器学习规则。
三、感知器的神经网络训练函数
1、newp--创建感知器
net=newp(P,T,TF,LF)
net:生成的感知器网络
P:R*2矩阵
T:神经元的个数
TF:感知器传递函数 默认hardlim 可选hardlims
LF:感知器学习函数 默认learnp 可选 learnpn
net.IW{1,1} 显示权值 net.b{1} 显示阈值
2、train--训练感知器网络
net=train(net,P,T)
net:被训练神经网络
P:网络输入
T:网络期望输出
net.trainParam.epochs=10 预定最大训练次数为10
3、adapt--自适应训练函数
net=adapt(net,P,T)
4、sim--仿真
a=sim(net.P)
5、
plotpv(P,T)输入向量图像
plotpc(W,b)画分类线
四、Matlab实现感知器
代码:
P=[-0.6 -0.7 0.8;0.9 0 1]; T=[1 1 0]; plotpv(P,T); %输入向量图像 xlabel('坐标1'); ylabel('坐标2'); title('感知器分类图'); net=newp([-1,1;-1,1],1);%生成感知器,神经元个数为1 he=plotpc(net.iw{1},net.b{1});%返回划线的句柄,下一次绘制分类线时将旧的删除。 %net.iw{1}神经网络第一层权重,net.b{1}神经网络第一层的偏置。 net.trainParam.epochs=15;%设置最大训练次数为15; net=train(net,P,T);%利用训练集对感知器进行训练; Q=[0.5 0.8 -0.2;-0.2 -0.6 0.6]; Y=sim(net,Q) %利用感知器net对Q进行分类; figure; plotpv(Q,Y); he=plotpc(net.iw{1},net.b{1},he)%画出分类线
五、总结
感知器是最简单的神经网络,只针对线性可分的向量集合进行分类,用一条直线将输入向量分开。