Skip to content

perceptron

loss function

一个自然的想法去定义损失函数,就是全部分类错误的点的数量。但是这个函数不好分析,而且是非凸的。所以我们转而使用当前超平面和所有误分类点的距离之和作为loss function。

learning strategy

对于这个损失函数,如果我们使用梯度下降的方法来进行优化,那么我们需要知道每次更新参数的时候所有的误分类点到超平面的距离。这种方法计算量开销比较大,所以我们采取更加简便但是效果和梯度下降类似的随机梯度下降,也就是当我们扫描特征向量时,一旦扫描到误分类的数据,就更新参数(利用随机梯度下降算法,具体实现这里不做赘述)。这样虽然最坏的情况下仍然需要扫描所有的数据,但是不会每次都扫描所有,可以大大减小计算的开销。

drawback

  1. 感知机说到底是个线性的函数,无法对复杂的逻辑进行分类。比如异或逻辑(也就是对于数据点X,其正确的标签是各个分量异或的结果)。

  2. 感知机只能对线性可分的数据进行分类,但是无法对线性不可分的数据进行分类,这一点会在后面的SVM中解决(利用软间隔)

math behind it

感知机要求数据是线性可分的,那么我们自然会想,怎么样的数据满足线性可分的条件呢?

事实上,两类标签的数据线性可分当且仅当他们各自的凸包没有交集。关于这一点,本质上是seperating hyperplane theorem的应用。