码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-08-19 00:53:53      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:一个   单位   api   集中   rds   auto   awb   bak   uap   

一、什么是感知机?

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

其中x1,x2为输入,b为偏置,激活函数被称为符号函数(sign function),我们将激活函数的输出记为技术分享图片,其函数表达式及图像如下所示。

 

技术分享图片

技术分享图片

二、感知机可以用来干什么?

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

技术分享图片

线性可分技术分享图片

线性不可分

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

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

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

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)

 

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

标签:一个   单位   api   集中   rds   auto   awb   bak   uap   

原文地址:https://www.cnblogs.com/xugong/p/9499098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!