感知机(Perceptron)

1 感知机模型

感知机是一个简单的线性分类器。其定义为:假设输入空间是$\chi \subseteq R^n$,输出空间是$\gamma =\{+1, -1\}$.输入$x \in \chi$表示实例的特征向量,对应与输入空间的点;输出$y \in \gamma$表示实例的类别。由输入空间到输出空间的如下函数

称为感知机。其中$w和b$为感知机模型参数,$w \in R^n$叫做权值(weight)或权值向量(weight vector),$b \in R$叫做偏置(bias),$w \cdot x$ 表示$w$和$x$的内积。$sign$是符号函数,即

感知机有如下几何解释:线性方程

对应于特征空间$R^n$中的一个超平面$S$,其中$w$是超平面的法向量,$b$是超平面的截距。超平面$S$称为分离超平面。如图所示:
pla_model.png-5.6kB

2 感知机学习策略

若一个数据集$T$存在一个超平面$S$可以将数据集中的所有正实例和负实例完全划分到超平面的两侧,那么可以说,数据集$T$是线性可分的,称为线性可分数据集。

误分类点$x_0$到超平面的距离为

,其中,$||w||$是$w$的$L_2$范数(向量各元素平方和的平方根)

所有误分类点到超平面$S$的总距离为

不考虑$\frac{1}{||w||}$,就可以得到感知机学习的损失函数。

给定训练数据集

其中,$x_i \in \chi = R^n, y_i \in \gamma = {+1, -1}, i = 1,2,…,N$.感知机$ sign(w \cdot x + b)$学习的损失函数定义为

其中$M$为误分类点的集合。一般误分类点离超平面越近,损失函数就越小。一个特定的损失函数:在误分类时是参数$w, b$的线性函数,在正确分类时是$0$.

3 感知机学习算法

感知机采用随机梯度下降法(stochastic gradient descent)来最小化损失函数。最小化过程是随机选取一个误分类点使其梯度下降。假设误分类点集合$M$是固定的,那么损失函数$L(w,b)$的梯度由
\begin{gather*}
\bigtriangledown_w L(w, b) = - \sum_{x_i \in M} y_i x_i \\
\bigtriangledown_b L(w, b) = - \sum_{x_i \in M} y_i
\end{gather*}
给出。

随机选取一个误分类点$(x_i,y_i)$,对$w$,$b$进行更新:
\begin{gather*}
w \leftarrow w + \eta y_i x_i \\
b \leftarrow b + \eta y_i
\end{gather*}

其中$\eta$是学习率,这样通过迭代可以期待损失函数$L(w,b)$不断减小,直到为$0$.

算法(感知机学习算法的原始形式)
输入:训练数据集$T={(x_1,y_1),(x_2,y_2),…,(x_N,y_N)}$,其中$x_i \in \chi = R^n, y_i \in \gamma = \{-1, +1\}, i = 1,2,…,N$;学习率$\eta(0< \eta \leq 1)$
输出:$w, b$;感知机模型$f(x)=sign(w \cdot x + b)$
(1)选取初值$w_0, b_0$
(2)训练集中选取数据$(x_i, y_i)$
(3)如果$yi(w \cdot x_i + b) \leq 0$
\begin{gather*}
w \leftarrow w + \eta y_i x_i \\
b \leftarrow b + \eta y_i
\end{gather*}
(4)转至(2),直至训练集中没有误分类点

其算法的最直观方式请看下图:
屏幕快照 2019-05-03 下午3.14.30.png-30.5kB 屏幕快照 2019-05-03 下午3.14.36.png-34.5kB 屏幕快照 2019-05-03 下午3.14.42.png-33.9kB
屏幕快照 2019-05-03 下午3.14.52.png-32.4kB 屏幕快照 2019-05-03 下午3.15.07.png-33.6kB 屏幕快照 2019-05-03 下午3.15.12.png-28.2kB

注意:在采用感知机算法中,选取误分类点的顺序不同,解可以不同

4 证明算法是收敛的

pla_close.png-274kB

证明过程如下:
PLA_Check.jpg-6131.8kB