很多人第一次学习机器学习,就学的是感知机(Perceptron)这个模型。感知机模型虽然简单,但是包含的方法确实后面很多模型常常用到的,例如神经网络、支持向量机等。
本文就用最简单的方式,从该模型背景出发,对其原理进行推导。文中特别介绍了感知机的对偶形式,对我们学习支持向量机很有益处,可以好好体会感知机和支持向量机的区别与联系。
1 问题提出
假设在二维空间中我们有一些散点,这些散点属于不同的类,那我们该怎么样区分这些点呢?或者说按照什么样的规则分开这些点呢?我们首先想到的应该是画一条线来进行区分。
如下图所示,红色的线的上部为一类,下部分为一类。很简单不是吗?如果我们下图建立坐标,就可以很容易的求得直线的解析式F(X),F(X)>0为一类,F(X)<0又为另一类。倘若我们的空间为N维呢,情况又会怎么样呢?于是我们提出了感知机模型,简单来说,就是找一个直线或者平面将数据分隔开
2 感知机模型初探
2.1 感知机模型的定义
一中的 f(x)就是感知机的最简单形式,现在假设输入空间为N维,输入空间为y = {+1, -1},我们定义函数:
f(x) = sign(wx+b)
该函数便称为感知机,其中w与b是感知机模型参数,w为权值(N维),b为偏置,sign()函数即符号函数,在x大于0时为正,x小于0时结果为负,该函数的最大作用是取某个数的符号,在机器学习中,常常用于二分类问题。
2.2 感知机模型的细节
感知机模型定义为f(x) = sign(wx+b),其函数内部的 wx+b,当其 wx+b=0 时表示为一个超平面,具体超平面是什么在2.3中有讲解,注意,此处w和x都是N维的。
我们将数据x代入 wx+b 中,若 wx+b>0 表明其在超平面上方,值 wx+b<0 表示其在超平面下方( 类别不同,符号不同 )。因此我们在外面加上 sign() 函数,取其正负号,其结果便能够表示数据的类别。
同时要理解模型是什么?在二分类问题中,将给定数据输入模型中,能够输出数据的类别。感知机模型就是如此,同时感知机模型的本质是一个判别模型,仅仅能够判断数据的类别。与之相对的是生成模型,具体的定义可以看本人的生成对抗网络(GAN)论文原文详解一文。
但是模型不是天生就有的,我们需要找到最合适的 w 和 b 才能将数据很好的分割开来,而怎么找到合适的 w 和 b 呢?就需要对模型进行训练了,具体的训练过程见第三节。
2.3 感知机模型的适用范围
在1中我们可以注意到,两类样本都是可以通过直线下进行分割的,这样数据集称为线性可分数据集,扩展到N维,我们定义:
简而言之,假如我们的数据能够被wx+b=0的超平面分隔开,则称为数据集线性可分,这里超平面的概念初学者可能会难理解,其实质就是数据能够被这个函数分隔在左右两边,wx+b>0是一类,wx+b<0又是一类。
wx+b=0在二维空间中是一条直线,三维空间中是一个平面,在多为空间中就可以被称为超平面了,因为我们根本无法想象了,想象不出来就记得这个函数公式就好啦。
指导线性可分的概念,我们也就给出感知机的适用范围。感知机就必须要求数据集是线性可分的, 不然就无法确定一个超平面了。
3 感知机学习算法
定义好模型之后,我们需要对模型进行训练,以得出合适的参数。在李航的《统计学习法》一书中,统计学习有三大要素,分别是模型、策略和方法。这是一个很好的学习框架,当解决一类机器学习问题的时候,脑中就应该有这三个概念,再在这个框架上添砖加瓦。
3.1 模型
进行统计学习,首先考虑的问题就是要学习什么样的模型。李航《机器学习》一书中,将模型定义为要学习的条件概率分布和决策函数,两种模型分别对应概率模型的非概率模型。在学习机器学习过程中,要慢慢的理解二者的差别。
个人理解使用模型的最根本目标就是能够拟合现有数据的特征。例如在感知机中可以将正负样本分开,在聚类算法中可以吧同类的点划分在一起等,都是能够拟合现有数据的特征,并依据我们所得到的这个模型,去对一些未知的数据进行分类、聚类等操作
本文的感知机模型目标就是找到一个超平面,以此来分割正负样本点,故是一种非概率模型。再第二节中,我们知道了感知机模型的决策函数定义为:
f ( x ) = s i g n ( w x + b ) f(x) = sign(wx+b) f(x)=sign(wx+b) 其中的 s i g n ( x ) = { + 1 , x ⩾ 0 − 1 , x ⩽ 0 sign(x) = \left\{\begin{matrix} +1,x\geqslant 0\\ -1,x\leqslant 0 \end{matrix}\right. sign(x)={
+1,x⩾0−1,x⩽0
3.2 学习策略
选