(一)感知器
1.1 基本介绍
感知器学习算法是神经网络中的一个概念,单层感知器是最简单的神经网络,输入层和输出层直接相 连,每一个输入端和其上的权值相乘,然后将这些乘积相加得到乘积和,这个结果与阈值相比较(一般为0),若大于阈值输出端就取1,反之,输出端取-1
1.2 感知器分类算法步骤
权重向量W,训练样本X
1.把权重向量初始化为0,或把每个分类初始化为[0,1]间任意小数
2.把训练样本输入感知器,得到分类结果(1或-1)
3.根据分类结果更新权重向量
.
1.3权重更新算法
W(j)=W(j)+ΔW(j);ΔW(j)=η*(y-y’)*X(j);
η:表示学习率,是介于[0,1]之间 的一个小数
y:输入样本的正确分类
y’:感知器计算出来的分类
通过上面公式不断更新权值,直到达到分类要求。
.
1.4 代码实现
% 1. 感知器神经网络的构建
% 1.1 生成网络
net=newp([0 2],1);%单输入,输入值为[0,2]之间的数
inputweights=net.inputweights{
1,1};%第一层的权重为1
biases=net.biases{
1};%阈值为1
% 1.2 网络仿真
net=newp([-2 2;-2 2],1);%两个输入,一个神经元,默认二值激活
net.IW{
1,1}=[-1 1];%权重,net.IW{
i,j}表示第i层网络第j个神经元的权重向量
net.IW{
1,1}
net.b{
1}=1;
net.b{
1}
p1=[1;1],a1=sim(net,p1)
p2=[1;-1],a2=sim(net,p2)
p3={
[1;1] [1 ;-1]},a3=sim(net,p3) %两组数据放一起
p4=[1 1;1 -1],a4=sim(net,p4)%也可以放在矩阵里面
net.IW{
1,1}=[3,4];
net.b{
1}=[1];
a1=sim(net,p1)
% 1.3 网络初始化
net=init(net);
wts=net.IW{
1,1}
bias=net.b{
1}
% 改变权值和阈值为随机数
net.inputweights{
1,1}.initFcn='rands';
net.biases{
1}.initFcn='rands';
net=init(net);
bias=net.b{
1}
wts=net.IW{
1,1}
a1=sim(net,p1)
% 2. 感知器神经网络的学习和训练
% 1 网络学习
net=newp([-2 2;-2 2],1);
net.b{
1}=[0];
w=[1 -0.8]
net.IW{
1,1}=w;
p=[1;2];
t=[1];
a=sim(net,p)
e=t-a
help learnp
dw=learnp(w,p,[],[],[],[],e,[],[],[],[],[])
w=w+dw
net.IW{
1,1}=w;
a=sim(net,p)
net = newp([0 1; -2 2],1);
P = [0 0 1 1; 0 1 0 1];
T = [0 1 1 1];
Y = sim(net,P)
net.trainParam.epochs = 20;
net = train(net,P,T);
Y = sim(net,P)
% 2 网络训练
net=init