一、什么是感知机
感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机目的在求一个可以将实例分开的超平面,为了求它,我们用到基于误分类的损失函数和梯度下降的优化策略。
二、模型分析
之前的学习中,我们学习了权重向量的概念,明白了只要找到权重向量,就能够找到那条分割线,所有现在的问题来到了,我们应该怎么样找到权重向量呢?基本做法和回归时相同:将权重向量用作参数,创建更新表达式来更新参数。接下来,我要说明的就是被称为感知机(perceptron) 的模型。 感知机是非常简单的模型,基本不会应用在实际的问题中。 但它是神经网络和深度学习的基础模型,所以记住它没坏处。
感知机是接受多个输入后将每个值与各自的权重相乘,最后输出总和的模型。人们常用这样的图来表示它:
和我们之前说到的向量的内积很相似,这次我们从图像的角度去理解。在介绍参数更新表达式之前,我们最好做一些准备工作,我们可以先理解这一部分,磨刀不误砍柴工。
2.1训练数据的准备
我们依然以图像的横纵分类为探索问题,设表示宽的轴为 x1、表示高的轴为 x2,用 y 来 表示图像是横向还是纵向的,横向的值为 1、纵向的值为 −1。我们将其画在表里:
接下来,根据参数向量 x 来判断图像是横向还是纵向的函 数,即返回 1 或者 −1 的函数 fw(x)的定义如下。这个函数被称为判别函数。
也就是说,这是根据内积的符号来给出不同返回值的函数,这样就可以判断图像是横向还是纵向的。如果不理解也没有关系,我们对上面这句话再深入理解一下:
与权重向量 w 的内积为负的向量 x 是 什么样的向量呢?用图形来解释更容易理解,所以我们利用这个 包含 cos 的表达式来思考。
之前我们说过|w| 和 |x| 必定为正数,所以决定内积符号的是 cos θ ,我们回忆一下cos θ 的图,它什么时候为 负呢?
在 90◦ < θ < 270◦ 的时候 cos θ 为负,与权重向量 w 之间的夹角为 θ,在 90◦ < θ < 270◦ 范围内的所有 向量都符合条件,所以就在这条直线下面、与权重向量方向相反的这个区域
同理,我们也可以得到使内积为正的向量
所以可以根据内积的正负来分割,内积是衡量向量之间相似程度的指标。结果为正,说明二者相似; 为 0 则二者垂直;为负则说明二者不相似。
2.2权重向量的更新表达式
在这个基础上,我们可以这样定义权重向量的更新表达式。
i 在介绍回归的时候也出现过,它指的是训练数据的索引,而不是i 次方的意思,这一点一定要注意。用这个表达式重复处理所有训练数据,更新权重向量。
虽然表达式整体看上去 乱七八糟的,但是一部分一部分分解来看就不那么难了。好好地 想清楚各部分的含义,再慢慢理解整体含义就好了。之前我们也是这么做的
我们先从表达式括号中的 fw(x(i) ) ̸= y(i)开始看,意思是通过判别函数对宽和高的向量 x 进行分类的结果与实际的标签 y不同,也就是说,判别函数的分类结果不正确。那么另外一个 fw(x(i) ) = y(i)就是分类正确。这也就是说,刚才的更新表达式只有在判别函数分类失败的时候 才会更新参数值。
现在着重看一下w := w + y(i) x(i)这个表达式的含义,我们可以结合图形来理解,一边把学习过程实际地画在 图上,一边去考虑它的含义可能就容易理解了。首先在图上随意 画一个权重向量和直线
权重向量是通过随机值来初始化的,上面向量就可以是初始向量。 在这个状态下,假设第一个训练数据是 x(1) = (125, 30),首先我们就用它来更新参数。
现在权重向量 w 和训练数据的向量 x(1) 二者的方向几乎相 反,w 和 x(1) 之间的夹角 θ 的范围是 90◦ < θ < 270◦ ,内积为负。 也就是说,判别函数 fw(x(1) ) 的分类结果为 −1。我们在这里应用刚才的更新表达式。现在 y(1) = 1,所以更新表 达式是这样的,其实就是向量的加法。
这个 w + x(1) 就是下一个新的 w,画一条与新的权重向量 垂直的直线,相当于把原来的线旋转了一下,刚才x(1) 与权重向量分居直线两侧,现在它们在同一侧了
这次 θ < 90◦,所以内积为正,判别函数 fw(x) 的分类结果为1。而且x(1) 的标签也为 1,说明分类成功了。这样就可以更新参数的权重向量,刚才处理的是标签值 y = 1 的情况,而对于 y = −1 的情况,只是 更新表达式的向量加法变成了减法而已,做的事情是一样的。
也就是说,虽然有加法和减法的区别,但它们的做法都是在分类失败时更新权重向量,使得直线旋转相应的角度,这就是感知机的学习方法。