感知机(perceptron)是二类分类的线性分类模型。其输入为实例的特征(一个特征对应实数,多个特征对应向量);输出为实例的类别,取+1和-1二值。感知机对应于输入空间中将实例划分为正负两类的分离超平面。
2.1 感知机模型
假设输入空间是$X subseteq R^{n} $,输出空间$mathcal{Y} = {+1, -1}$。输入$x in X$表示实例的特征,对应输入空间的一点。$y in mathcal{Y}$表示实例的类别。由输入空间到输出空间的如下函数:
egin{align*}
f(x) = sign(wcdot x + b)
end{align*}
称为感知机。其中,$w subseteq R^{n} $叫做权重(weight),$b in R$叫做偏置(bias)。sign是符号函数。即:
egin{align*}
sign(x) = left{egin{matrix} +1, qquad x geq 0
\-1, qquad x < 0
end{matrix}
ight.
end{align*}
我们需要通过训练集的训练,求得合适的$w$和$b$。
线性方程$wcdot x + b = 0$对应输入空间$R^{n}$中的一个超平面$S$,其中w是超平面的发现,b是截距。该超平面将输入空间分为两部分,分别对应正样本和负样本。
已二维空间为例,输入空间$R^{n}$是一个平面,$S$是一条线,如下图所示:
2.2 损失函数及模型训练
容易想到把误分类点的个数作为损失函数。但这样的函数不是模型参数$w$、$b$的连续可导函数,不易优化。感知机采用的损失函数是误分类点到超平面的总距离。
首先写出$R^{n}$中的任一点$x_0$到超平面$wcdot x + b = 0$的距离公式:
egin{align*}
frac{1}{left | w
ight |} left | w cdot x_0 + b
ight |
end{align*}
其中,$left | w ight |$是$w$的$L_2$距离。
另外,对于误分类样本$(x_i, y_i)$有:
egin{align*}
-y_i(wcdot x_i + b ) > 0
end{align*}
因此误分类点到超平面距离可写作:
egin{align*}
-frac{1}{left | w
ight |} y_0(w cdot x_0 + b)
end{align*}
不考虑$frac{1}{left | w ight |}$,或者始终对$w$向量做正规化(normalize),得到感知机的损失函数:
egin{align*}
L(w, b) = -sum_{x_i in M} y_i(wcdot x_i + b)
end{align*}
其中,$M$是误分类样本点的集合。
求得偏导数:
egin{align*}
& frac{partial L}{partial w} = -sum_{x_i in M} y_ix_i \
& frac{partial L}{partial b} = -sum_{x_i in M} y_i \
end{align*}
其中,$x$、$w$的取值均可以是向量,$b$的取值是实数。
然后就可通过梯度下降(或者随机梯度下降,可参考梯度下降求解线性回归)对该损失函数求解。