首先,我们对g(x)=wTx+w0做一些形式上的改变。定义:
y=[1,x1,x2,…,xd]T
α=[w0,w1,w2,…,wd]T
这样g(x)就可以表示成:
g(x)=αTy
决策规则是:如果g(y)>0,则y∈w1;如果g(y)<0,则y∈w2;
现在我们定义一个新的变量y′i(称为:规范化增广样本向量):
y′i={yiifyi∈w1−yiifyi∈w2
这样,样本可分的条件就变成了:
αTy′i>0,i=1,2,⋯,N
对于线性可分的一组样本y1,y2,⋯,yN满足上式的权向量α∗称为一个解向量,所有满足要求的α∗构成解区。解区中的每个解向量都能把样本没有错误的分开,但是考虑到噪声、数值计算误差等因素,靠近解区中间的解向量应该更加可靠,因此引入余量的概念,将解区向中间缩小。形式化描述就是,引入余量b>0要求解向量满足:
αTyi>bi=1,2,⋯,N
下面来讲讲如何求解α∗。
对于权向量α,如果某个样本yk被错误分类,则αTyk≤0。因此我们可以定义所有样本中错误分类样本的惩罚:
JP(α)=∑αTyk≤0(−αTyk)(1)
公式(1)就是感知器准则函数。
当且仅当JP(α∗)=minJP(α)时α∗是解向量。
公式(1)的最小化可以用梯度下降法迭代求解:
α(t+1)=α(t)−ρt∇JP(α)(2)
其中:
ρt∇JP(α)=∂JP(α)∂α=∑αTyk≤0(−yk)
因此公式(2)可写成:
α(t+1)=α(t)+ρt∑αTyk≤0(yk)
即在每一步迭代时把错分的样本按照某个系数加到权向量上。
通常情况下,一次将所有错误样本都进行修正的做法效率不高,更常用的是每次只修正一个样本的固定增量法,步骤是:
(1)任意选择初始的权向量α(0),置t=0;
(2)考察样本yj,若α(t)Tyj≤0,则α(t+1)=α(y)+yj,否则继续;
(3)考察另一个样本,重复(2),直至对所有样本都有α(y)Tyj>0,即JP(α)=0
如果考虑余量b,只需将上面的算法中的错分判断条件改成
这里修正步长ρt=1是固定的,但是也可以使用可变步长,如绝对修正法的步长为ρt=|α(k)Tyj|||yj||2
总结:感知器算法是最简单的可学习的机器,由于它只能解决线性可分的问题,所以在实际应用中直接使用感知器的场合并不多,但是它是很多复杂算法的基础,比如SVM和多层感知器人工神经网络。