机器学习之感知机

原创 2016年05月31日 23:21:24

感知机是二类分类的线性分类模型,输入为实例的特征向量,输出为实例的类别,取+1和-1二值,感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。

感知机模型:

f(x)=sign(w*x +b)
其中,w和b是感知机的模型参数,w属于Rn,叫做权值或者权值向量。b属于R,叫做偏置,w*x标识w和x的内积,sign是符号函数:x>=0 sign(x)=1;x<0,sign(x)=-1;

感知机几何解释:w*x+b=0;对应一个超平面,w是平面的法向量,b是截距;

感知机学习策略:

线性可分性:

对于一个数据集:T={(x1,y1),(x2,y2).....(xn,yn)}  xi属于X,yi属于Y属于{+1,-1},i=1,2,3......n;如果存在超平面S w*x+b=0 能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有yi=+1的实例i,都有w*xi+b>0; 对于所有yi=-1的实例i,都有w*xi+b<0;则称数据集T为线性可分数据集,否则为线性不可分;

感知机学习策略:

目的是求一个超平面能否将正实例和负实例完全正确地分开;为了得到这个平面,需要确定w和b;需要定义一个学习策略,及定义(经验)损失函数并将损失函数极小化;
损失函数的一个自然选择是误分类的点数,但是这样的损失函数不是参数w和b的连续可导函数,不易优化,损失函数的另一个选择是误分类点到超平面的总距离,这是感知机所采用的,为此,首先写出输入空间中任一点x0到超平面S的距离:
                 是w的范数。


对于误分类的数据(xi,yi)来说,;因为w*xi+b>0时,yi=-1,而当w*xi+b<0时,yi=+1,因此,误分类点xi到超平面S的距离是:

假设误分类点集合为M,则误分类点到超平面S的总距离为:


对于训练集T={(x1,y1),(x2,y2).....(xn,yn)}  ,不考虑L2范式,损失函数定义为:

其中M为误分类点的集合,这个损失函数就是感知机学习的经验风险函数。

如果没有误分类点,损失函数值是0,而且误分类点越少,误分类点离超平面越近,损失函数就越小。一个特定的样本点的损失函数:在误分类时时参数w,b的线性函数,在正确分类时是0,因此,给定特定训练集T,损失函数L(w,b)是w,b的连续可导函数。

感知机学习算法:

感知机学习问题转化为求解损失函数式的最优化问题 ,最优化的方法是随机梯度下降法。

感知机学习算法的原始形式:


求解参数w,b,使其为以下损失函数极小化问题的解:

感知机学习算方法是误分类驱动的,具体采用随机梯度下降法,首先,任意选一个超平面w0,b0,然后用梯度下降法不断地极小化目标函数。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。

L(w,b)的梯度由给出。

随机选择一个误分类点(xi,yi),对w,b进行更新:



是步长,在统计学习中又称为学习率。这样,通过迭代可以期待损失函数L(w,b)不断减小,直到0.综上所述,得到如下算法:
1、选取初值:w0,b0;
2、在训练集中选取数据(xi,yi);
3、如果yi(w*xi+b)<=0

4、转至2,直至训练集中没有误分类点。




算法收敛性(这里不再证明了。)

举例子:
正实例点 x1=(3,3),x2=(4,3),负实例点x3=(1,1),试用感知机学习算法的原始形式求感知机模型f(x)=sign(w*x +b),这里w=(w1,w2),x=(x1,x2)
按照如上算法求解w b ,步长=1
1、 w0 = 0 b=0
2、对于x1=(3,3),y1*(w0*x1+b0)=0,未能正确分类,更新w,b
        w1 = w0+y1*x1=(3,3),b1=b0+y1=1
w1*x+b1=3x1+3x2+1
3、对于x1,x2 显然 损失函数>0被正确分类,不修改wb;对于x3(1,1)y3*(w1*x3+b1)<0被误分类

w2=w1+y3x3=(2,2),b2=b1+y3=0
得到
w2*x+b2=2x1+2x2

如此继续下去,直到w7*x+b7=x1+x2-3,对于所有点都被正确分类

f(x)=sign(x1+x2-3)

感知机算法对偶形式:

    对偶形式的基本想法是,将表示为实例和标记的线性组合的形式,通过求解其系数而求得
    通过上面的的更新公式,我们发现,是一个累加的过程。如果令,则可以表示为:
其中,
    此时的感知机模型就变为:
三、算法流程
  • 初始化
  • 选择误分类数据点,即,更新
  • 直到没有误分类的点,否则重复步骤2
  • 计算出

开始感觉不太理解对偶模式,后来自己计算了一下,大概明白了;
其实就是w0=0;b0=0;根据原始形式我们会得到(设步长为t)w=ty1x1+ty2x2+ty1x1+ty3x3
其实这里ai=ni*t;比如a1=2*t,2标识(x1,y1)被误分类了两次;a2=t标识第二个点误分类一次;其实和原始形式一样,只是另外一种标识方法;
至于那个G矩阵,就是为了得到点与点之间的乘积,然后比较好代码实现而已;



梯度下降

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

机器学习(感知机)

机器学习 - 感知机

博客内容源于《统计机器学习》一书的阅读笔记。Python的源码实现源于《机器学习实战》部分内容。 1. 感知机模型感知机是二分类的线性分类模型,该模型的输入为实例的特征向量,输出为实例的类别,一般取+...

统计机器学习笔记(一)---感知机模型

公共绘图部分import numpy as np from matplotlib import pyplot as plt from matplotlib import animation from ...

Rosenblatt感知机-神经网络与机器学习笔记1

一、Rosenblatt感知机小结感知机模型 输入向量:x(n)=[+1,x1(n),x2(n),...,xm(n)]Tx(n)=[+1,x_1(n),x_2(n),...,x_m(n)]^T ...

Rosenblatt感知机-神经网络与机器学习笔记1

一、Rosenblatt感知机小结感知机模型 输入向量:x(n)=[+1,x1(n),x2(n),...,xm(n)]Tx(n)=[+1,x_1(n),x_2(n),...,x_m(n)]^T ...

机器学习之感知机模型及其实现

感知机模型 感知机算法 感知机损失函数 随机梯度下降求解 感知机代码python实现 TO BE CONTINUE感知机模型感知机模型是一个二分类模型,想象一下在一个多维空间中,有两类数据,正类和负类...

听课笔记(第二讲): Perceptron-感知机 (台湾国立大学机器学习基石)

转自:https://www.douban.com/note/319669984/ Learning to Answer Yes/No (二值分类) 一, Perceptron ...

机器学习系列之感知机

感知机是非常简单的线性二类分类器,是SVM的基础,原理就是找一个线性超平面来对训练数据进行划分,下面按照机器学习算法三要素的形式来介绍感知机。 一、模型 我们分别用+1、-1来标记正负类别,则模型...

机器学习(2)--感知机

案例银行办信用卡–获得感知机我们到银行办信用卡时,银行并不是直接就给你办卡的,而是会根据你的一些个人信息、消费信息、个人信誉等指标综合考虑后,才会决定是否给你办卡(不像现在银行办信用卡有点随意)。银行...

【机器学习基础】从感知机模型说起

感知器(perceptron)1957年由Rosenblatt提出,是神经网络与支持向量机的基础。感知器是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机对应...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)