【城北徐公之机器学习】感知机模型

1、什么是感知机?网络

感知机最先由计算科学家Rosenblatt在1958年提出,他是一种单层(注意,输入层并不计算在内)神经网络。如图为一个二元输入的感知机模型。函数

其中x1,x2为输入,b为偏置,激活函数被称为符号函数(sign function),咱们将激活函数的输出记为,其函数表达式及图像以下所示。学习

 

2、感知机能够用来干什么?优化

感知机能够用来处理线性可分类问题,线性可不可分简单来讲,就是可不能够用一条直线把图上两类点划分开。如第二张图所示,不管怎么画直线都没法将两类点分区开。spa

线性可分blog

线性不可分ci

对于线性不可分问题通常用多层神经网络,SVM来处理。it

3、感知机如何实现线性分类?io

咱们举一个最最最简单的分类问题,逻辑运算(这里咱们用“与”运算)而且结合matlab代码来讲明感知机如何实现线性分类。table

X1

X2

y

0

0

0

0

1

0

1

0

0

1

1

1

也就是说,咱们要在平面上找到这样一条直线,把点(1,1)与其它点划分开,而这条直线的方程为(decision boundary),若是把符号激活函数向右平移1各单位,那么这条直线方程则为

转化为最优化问题,那如何找这么一个函数来描述优化程度?由于激活函数不平滑,没法用偏差的形式来描述。

这里咱们提出一种点到直线距离的描述方法J=,对误分类点而言,J>0;

咱们对数据集中的训练点逐一进行判别,训练权重,直至无误分类点。

权重训练方法采用的是梯度降低法。

 

 

matlab代码:

 

close all;clear;w=[1 0.5];b=0;%随机设置初始权值与阈值%p,t为给定的训练样本,p为输入,t为对应的输出%And计算网络迭代训练五次p=[0 0;0 1;1 0;1 1];t=[-1;-1;-1;1];p1=[p;p;p;p;p];t1=[t;t;t;t;t];%训练过程传递函数为阶跃函数for i=1:size(p1,1)    n=0.5;%学习率    a=unitstep(p1(i,1:2)*w'+b);    if t1(i)*(p1(i,1:2)*w'+b)<0        w=w+n*p1(i,1:2)*t1(i);        b=b+n*t1(i);                   figure(1)        plot(i,w(1),'*');        hold on;                 figure(2)        plot(i,w(2),'^');        hold on;                figure(3)        x1=0:0.1:1;        x2=(-w(1)/w(2))*x1-b/w(2);        plot(x1,x2)        plot([0 0 1 1],[0 1 0 1],'^');        axis([0 1 0 1])        hold on;             end end%网络输出a=unitstep(p(1:4,1:2)*w'+b)

相关文章
相关标签/搜索