matlab单层感知器画线,感知器 matlab实现

1.基本原理

神经网络里最简单的模型,就是感知器。感知器可以实现N维空间的线性划分。如二维空间,下图就是用一条直线将(0

0)分为一类,其余四点为一类。实现了与门。

a4c26d1e5885305701be709a3d33442f.png

如果要将以上四点划分为(0 1)(1 0)为一类,(1 1)(0

0)为一类,显然是无法用直线将其分开。如果是三维空间,就是平面划分。如果N维,即超平面。

下图为一个神经元模型,输入为pX1的向量,输出为a。感知器工作时,首要要学习,也就是对w和b进行调整。首先要有n个P向量,和一个你期望的该p向量得到的t值。w和b是不为0的随机值,训练的目的就是调整w和b的值,使e=t-a的值不断接近0。当所有样本输出的值都等于t时,学习结束。

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

这是,给定相关值,你就可以得到你期望的结果。其中wp+b累加输出的值n,要经过一个函数,这个函数根据需要选取,并不一定要取阶跃函数。

下图可以看出在二维空间了w和b分别是如何影响划分的直线的。

a4c26d1e5885305701be709a3d33442f.png

2.单层感知器

以下图为感知器基本模型,摘自matlab的帮助文档。

a4c26d1e5885305701be709a3d33442f.png

上图有以下几个要点:

2.1 R为输入个数,S为单层神经元的个数。感知器里可以有s个神经元,但神经元之间无信息传递,之间互不影响。

2.2 输出是sX1的a向量,实现了对RX1的p向量的s次在R维空间的线性二划分。

综合以上分析,可以看出神经网络设计的重点:

2.1 如何将神经元相互联系起来,即网络的设计;

2.2 选择什么样的方法调整每个神经元的w和b值,该算法必须收敛,即在有限步骤内,让误差e趋近0;

2.3 每个神经元选择什么样的函数得到a输出;

3. 算法实现(matlab)

其中P为RXN输入矩阵,T为SXN的目标矩阵;

R为输入个数,N为训练的样本数;

S为神经元个数;

repeat为最大迭代次数;W b e为经过训练得到的W b e;如果线性可分的话,并在repeat步类收敛,e就是0。

1:function [W b e] = perceptron(P, T, repeat)

2:switch nargin

3: case 0

4: case 1

5: error('Must enter P and T');

6: case 2

7: repeat = 10000;

8:end

9:[r n]=size(P);

10:s =size(T,1);

11:W=ones(s,r);

12:b=ones(s,1);

13:e=ones(s,n);

14:for i=1:repeat

15: index=mod(i,n);

16: if(index == 0)

17: index = 4;

18: end

19: p=P(:,index);

20: t=T(:,index);

21: a= W*p + b;

22: for j=1:s

23: if a(j) >= 0

24: a(j) = 1;

25: else

26: a(j) = 0;

27: end

28: end

29: %e:s by n

30: e(:,index)=(t-a)*0.5;

31: W=W+e(:,index)*p';

32: b=b+e(:,index);

33: if(e == 0)

34: break;

35: end

36:end

37:end

这里需要说明一下w和b是如何调整的,即31行。新的权重值为旧的加上误差值乘以输入,思想很简单。即用误差调整w和b,显然误差为0,就无调整。不为0,就朝着使误差减小的方向调整,即负反馈的思想。乘以输入,是对调整的修正,使调整更加迅速。可以设想,如果一个输入非常小,一个非常大,那输入小的增量也要小,大的增量也要大。如果都大,那就容易产生震荡。如果小,收敛就很慢,需要学习的时间就会变得很长。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值