您的位置:首页 > 其它

统计学习方法--感知机模型 (perception)

2015-09-21 01:46 459 查看

概念

感知机是一个
二类
分类的
线性分类器
,是支持向量机和神经网络的基础。它假设数据是
线性可分
的,目标是通过
梯度下降法
,极小化
损失函数
,最后找到一个
分割超平面
,可以将数据划分成两个类别。

决策函数 如下: f(x)=sign(w⋅x+b)

其中 w 是权值(weight)参数,b 是偏置项(bias)。对 n 维来说,线性方程 w⋅x+b=0 对应特征空间的一个超平面,其中 w 是超平面的法向量,b 是超平面的截距。w⋅x 是求内积的意思,即各项对应相乘后求和。

在二维空间,即直角坐标系中,上面的超平面变成了高中学过的直线的解析式。

{w=(A, B), x=(x1, x2)=(x, y)w⋅x+b=0→ Ax+By+b=0

函数 sign 就是符号函数,定义如下:

sign(t)={+1,t≥0−1,t<0

即,给出特征空间的一个例子x={x1,x2,x3,...,xn},通过上面的公式得出该输入的分类结果是f(x)。对二类分类来说,要么是正例,要么是反例。

训练一个感知机模型

要建立感知机模型,只要确定参数 w 和 b 就行了。我们通过
梯度下降法
,不断的调整两个参数,向最优解靠近。

怎么评价现在的两个参数到底是好是坏呢?我们量化一个损失函数(loss function),函数值越小,说明离最好的模型越近。在感知机这里,最好的解就是最合适的分割超平面,能把数据分割的最好。

定义 损失函数

L(w,b)=−∑xi∈Myi(w⋅xi+b)

其中 (xi,yi) 为分类错误的一个样例,M 为所有分类错误样例的集合。所以在训练集中没有样例分类错误的时候,损失函数的最小值就收敛到 0 了。前面加一个负号,是因为分类错误的标签 yi 和 分类器预测的分类结果 sign(w⋅xi+b),正好相反,一个 +1,一个是 -1.

损失函数 L(w,b) 是非负的,且是 w, b 的连续可导函数。其中相加项的意义涉及“函数间隔”和“几何间隔”的概念,见支持向量机的定义。

梯度下降

下面讲感知机的具体学习算法,主要涉及梯度下降法来修改参数 w 和 b 。

我们要极小化损失函数,即求

minw,bL(w,b)=−∑xi∈Myi(w⋅xi+b)

对 w 和 b 分别求偏导数如下:

⎧⎩⎨⎪⎪⎪⎪⎪⎪∇wL(w,b)=−∑xi∈Myixi∇bL(w,b)=−∑xi∈Myi

更新的时候,直接随便选一个误分类的点 (xi,yi),按下面的公式更新,

{wb←w+η yixi←b+η yi

其中 η (0<η≤1) 表示学习率,或者步长。

整个过程是这样子的,每来一个样本 (xi,yi),计算若 yi(w⋅xi+b)≤0,说明误分了,要用梯度下降更新权重 w,b。若大于0,说明分类正确,不用管。这样直到遍历整个样本都没有误分点,算法停止。

对偶形式

通过观察上面梯度下降的更新公式,发现参数 w 最终的取值,其实是初值(初值为0可以忽略)加上每个样本的某个整数倍,具体如下:

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪wb=∑i=1Nαiyixi=∑i=1Nαiyi

其中,αi≥0, i=1,2,...,N 表示每个样本点在更新过程中被误分类的次数。从 α 中我们还可以看出来,若该值越大,则说明对应的样本点被误分的次数越大,也就离超平面越近,因此难分类。

判断是否属于误分点时,我们用公式 yi(∑j=1Nαjyjxj⋅xi+b)≤0 来判断。对比之前的 w,b 版本,其实只是把 w 用 α 代替而已。注意后面的点乘,即内积,我们可以先事先计算好并存储在Gram矩阵中(G=[xi⋅xj]N×N),以减少实时计算量。

书里没有写为何要有对偶模式,我觉得可能是为了后面的支持向量机的对偶形式做铺垫。对偶形式的计算量并不比原始形式低,反而更麻烦一点,但是 [xi⋅xj] 内积可以更换成核函数 K(xi,xj)=ϕ(xi)ϕ(xj) ,从而能处理非线性可分的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: