1. 简介

感知机是二类分类的线性分类模型,属于监督学习中的判别模型:

  • 输入:实例的特征向量;
  • 输出:实例的类别,取 +1+11-1 值。

感知机本质可以看作是输入空间(特征空间)中将实例划分为正负两类的分离超平面。其基于误分类的损失函数,并利用梯度下降法对损失函数进行极小化进行求解。

2. 模型

  • 定义:假设输入空间(特征空间)是 XRn\mathcal{X} \subseteq \mathbf{R}^n,输出空间是要 Y={+1,1}\mathcal{Y} = \{+1, -1\}。输入 xX\boldsymbol{x} \in \mathcal{X} 表示实例的特征向量,对应于输入空间的点;输出 yYy \in \mathcal{Y} 表示实例的类别。由输入空间到输出空间的如下函数

    f(x)=sign(wx+b)(1)f(\boldsymbol{x}) = \mathrm{sign}(\boldsymbol{w}^\top \boldsymbol{x} + b) \tag{1}

    称为感知机。其中,w\boldsymbol{w}bb 称为感知机模型参数,wRn\boldsymbol{w} \in \mathbf{R}^n 叫作权值,bRb \in \mathbf{R} 叫作偏置,sign\mathrm{sign} 为符号函数:

    sign(x)={+1x01x<0\mathrm{sign}(x) = \begin{cases} +1 & x \geq 0 \\ -1 & x \lt 0 \end{cases}

感知机模型是一种线性分类模型,其假设空间是定义在输入空间中的所有线性分类模型,即函数集合 {ff(x)=wx+b}\{f | f(\boldsymbol{x}) = \boldsymbol{w}^\top \boldsymbol{x} + b\}

  • 训练数据集: T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(\boldsymbol{x}_{1}, y_{1}),(\boldsymbol{x}_{2}, y_{2}), \cdots,(\boldsymbol{x}_{N}, y_{N})\},其中 xiX=Rn\boldsymbol{x}_i \in \mathcal{X} = \mathbf{R}^nyiY={+1,1},i=1,2,,Ny_i \in \mathcal{Y} = \{+1, -1\}, i=1,2,\cdots,N

感知机学习由训练数据集求得模型参数 w\boldsymbol{w}bb;感知机预测则根据学习到的模型对新的输入实例给出其对应的输出类别。

3. 策略

给出了感知机模型的定义后,下一步便是探究这个模型是否能够有效地实现分类目标。为此,我们先给出一个条件假设:数据集的线性可分性,然后基于此此假设验证感知机的有效性。

3.1 数据集的线性可分性

  • 定义:给定一个数据集 T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(\boldsymbol{x}_{1}, y_{1}),(\boldsymbol{x}_{2}, y_{2}), \cdots,(\boldsymbol{x}_{N}, y_{N})\},其中 xiX=Rn\boldsymbol{x}_i \in \mathcal{X} = \mathbf{R}^nyiY={+1,1},i=1,2,,Ny_i \in \mathcal{Y} = \{+1, -1\}, i=1,2,\cdots,N。 如果存在某个超平面 S:wx+b=0S: \boldsymbol{w}^\top \boldsymbol{x} + b = 0 能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有 yi=+1y_i = +1 的实例 ii,有 wxi+b>0\boldsymbol{w}^\top \boldsymbol{x}_i + b > 0,对所有 yi=1y_i = -1 的实例 ii,有 wxi+b<0\boldsymbol{w}^\top \boldsymbol{x}_i + b < 0;则称数据集 TT线性可分数据集,否则称数据集 TT线性不可分数据集

3.2 感知机的学习策略

假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面 SS,即确定感知机模型参数 w\boldsymbol{w}bb。那如何确定这些参数就成为了我们需要解决的问题。为此,下面引出基于损失函数极小化的学习策略:

为了采用梯度下降算法来优化损失函数,我们需要保证给出的损失函数是关于优化参数 w\boldsymbol{w}bb 的可微函数。

  • 损失函数:选择误分类点到超平面 SS 的总距离作为损失函数。输入空间中任一点 x0\boldsymbol{x}_0 到超平面 SS 的距离为:

    wx0+bw2\frac{\lvert \boldsymbol{w}^\top \boldsymbol{x}_0 + b \rvert}{\lVert \boldsymbol{w} \rVert_2}

    而对于误分类的数据 (xi,yi)(\boldsymbol{x}_i, y_i)yi(wx+b)>0-y_i(\boldsymbol{w}^\top \boldsymbol{x} + b) > 0 总成立。

    因为当 wx+b>0\boldsymbol{w}^\top \boldsymbol{x} + b > 0 时,yi=1y_i = -1;当 wx+b<0\boldsymbol{w}^\top \boldsymbol{x} + b < 0 时,yi=+1y_i = +1

    故误分类点 xi\boldsymbol{x}_i 到超平面 SS 的距离为

    yi(wxi+b)w2-\frac{y_i (\boldsymbol{w}^\top \boldsymbol{x}_i + b)}{\lVert \boldsymbol{w} \rVert_2}

    这样,假设超平面 SS 的误分类点集合为 MM,那么所有误分类点到超平面 SS 的总距离为

    xiMyi(wxi+b)w2-\frac{\sum_{\boldsymbol{x}_i \in M} y_i (\boldsymbol{w}^\top \boldsymbol{x}_i + b)}{\lVert \boldsymbol{w} \rVert_2}

    不考虑相同的分母 1w\frac{1}{\lVert \boldsymbol{w} \rVert},即得到感知机学习的损失函数:

    L(w,b)=xiMyi(wxi+b)(2)L(\boldsymbol{w}, b) = - \sum_{\boldsymbol{x}_i \in M} y_i(\boldsymbol{w}^\top \boldsymbol{x}_i + b) \tag{2}

    (2)(2) 即为感知机学习的经验风险函数

    显然,该损失函数是非负的,且关于参数 w,b\boldsymbol{w}, b 连续可微。

4. 算法

上述学习策略验证了感知机在线性可分数据集上的有效性,下面就是要给出如何在训练数据集上具体实现感知机学习过程。感知机学习问题有两种形式,一种是最直观的原始形式,一种是原始形式的对偶形式。

4.1 原始形式

感知机学习算法是针对以下最优化问题的算法:

  • 给定一个训练数据集 T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(\boldsymbol{x}_{1}, y_{1}),(\boldsymbol{x}_{2}, y_{2}), \cdots,(\boldsymbol{x}_{N}, y_{N})\},其中 xiX=Rn\boldsymbol{x}_i \in \mathcal{X} = \mathbf{R}^nyiY={+1,1},i=1,2,,Ny_i \in \mathcal{Y} = \{+1, -1\}, i=1,2,\cdots,N。求参数 w\boldsymbol{w}bb,使其为以下损失函数极小化问题的解:

    minw,bL(w,b)=xiMyi(wxi+b)(3)\min_{\boldsymbol{w}, b} L(\boldsymbol{w}, b) = -\sum_{\boldsymbol{x}_i \in M} y_i (\boldsymbol{w}^\top \boldsymbol{x}_i + b) \tag{3}

    其中 MM 为误分类点的集合。

感知机学习算法是误分类驱动的,具体采用随机梯度下降法:首先,任意选取一个超平面参数 w0,b0\boldsymbol{w}_0, b_0;然后使用梯度下降法不降地极小化目标函数 (3)(3)。极小化过程不是一次使 MM 中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。假设误分类点集合 MM 是固定的,那么损失函数 L(w,b)L(\boldsymbol{w}, b) 的梯度由:

wL(w,b)=xiMyixibL(w,b)=xiMyi(4)\nabla_{\boldsymbol{w}} L(\boldsymbol{w}, b) = -\sum_{\boldsymbol{x}_i \in M} y_i \boldsymbol{x}_i \\ \nabla_{b} L(\boldsymbol{w}, b) = -\sum_{\boldsymbol{x}_i \in M} y_i \tag{4}

设学习率为 η(0<η1)\eta(0 < \eta \leq 1),则梯度下降法更新参数的方式为(即每次迭都加上负梯度):

ww+ηyixibb+ηyi5)(()\boldsymbol{w} \leftarrow \boldsymbol{w} + \eta y_i \boldsymbol{x}_i \\ b \leftarrow b + \eta y_i \tag(5)

综上所述,可以总结为如下算法:

算法:感知机学习算法的原始形式

输入:训练数据集 T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(\boldsymbol{x}_{1}, y_{1}),(\boldsymbol{x}_{2}, y_{2}), \cdots,(\boldsymbol{x}_{N}, y_{N})\},其中 xiX=Rn\boldsymbol{x}_i \in \mathcal{X} = \mathbf{R}^nyiY={+1,1},i=1,2,,Ny_i \in \mathcal{Y} = \{+1, -1\}, i=1,2,\cdots,N;学习率 η(0<η1)\eta(0 < \eta \leq 1)

输出:w,b\boldsymbol{w}, b;感知机模型 f(x)=sign(wx+b)f(x) = \mathrm{sign}(\boldsymbol{w}^\top \boldsymbol{x} + b)

  1. 选取初值 w0,b\boldsymbol{w}_0, b

  2. 在训练数据集中选取数据 (xi,yi)(\boldsymbol{x}_i, y_i)

  3. 如果 yi(wxi+b)0y_i(\boldsymbol{w}^\top \boldsymbol{x}_i + b) \leq 0(即为误分类样本),更新参数

    ww+ηyixibb+ηyi\boldsymbol{w} \leftarrow \boldsymbol{w} + \eta y_i \boldsymbol{x}_i \\ b \leftarrow b + \eta y_i

  4. 转至 2.,直至训练集中没有误分类点。

给出了感知机的算法后,还需要验证该算法是否能收敛到最优值。为了便于叙述,将偏置并入权值向量,记作 w^=(w,b)\hat{\boldsymbol{w}} = (\boldsymbol{w}^\top, b)^\top;同样也将输入向量加以扩充,加进常数 11,记作 x^=(x,1)\hat{\boldsymbol{x}} = (\boldsymbol{x}^\top, 1),从而有 w^x^=wx+b\hat{\boldsymbol{w}}^\top \hat{\boldsymbol{x}} = \boldsymbol{w}^\top \boldsymbol{x} + b。以下定理确保了感知机的算法能够准确收敛:

定理:设训练数据集 T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(\boldsymbol{x}_{1}, y_{1}),(\boldsymbol{x}_{2}, y_{2}), \cdots,(\boldsymbol{x}_{N}, y_{N})\} 是线性可分的,其中 xiX=Rn\boldsymbol{x}_i \in \mathcal{X} = \mathbf{R}^nyiY={+1,1},i=1,2,,Ny_i \in \mathcal{Y} = \{+1, -1\}, i=1,2,\cdots,N;则有

  1. 存在满足条件 w^opt2=1\lVert \hat{\boldsymbol{w}}_{\mathrm{opt}} \rVert_2 = 1 的超平面 w^optx^=woptx+bopt=0\hat{\boldsymbol{w}}_{\mathrm{opt}}^\top \hat{\boldsymbol{x}} = \boldsymbol{w}_{\mathrm{opt}}^\top \boldsymbol{x} + b_{\mathrm{opt}} = 0 将训练数据集完全正确分开;且存在 γ>0\gamma > 0,对所有 i=1,2,,Ni = 1,2,\cdots,N,有

    yi(w^optx^i)=y(woptxi+bopt)γ(6)y_i(\hat{\boldsymbol{w}}_{\mathrm{opt}}^\top \hat{\boldsymbol{x}}_i) = y(\boldsymbol{w}_{\mathrm{opt}}^\top \boldsymbol{x}_i + b_{\mathrm{opt}}) \geq \gamma \tag{6}

  2. R=max1iNx^iR = \max_{1 \leq i \leq N} \lVert \hat{\boldsymbol{x}}_i \rVert,则上述感知机算法在训练数据集上的误分类次数 kk 满足不等式

    k(Rγ)2(7)k \leq \left(\frac{R}{\gamma}\right)^2 \tag{7}

该定理的具体证明可见《统计学习方法》P. 47,这里就不展开了。

4.2 对偶形式

除了使用原始形式来求解感知机模型外,也可以使用其对偶形式来求解,二者在求解最优参数时是等价的。原始形式下,我们将参数 w,b\boldsymbol{w}, b 看作是超平面 wx+b\boldsymbol{w}^\top \boldsymbol{x} + b 的系数进行优化;而在对偶问题中,我们将参数 w,b\boldsymbol{w}, b 看作是 x,y\boldsymbol{x}, y 的函数。根据上文给出的算法,不失一般性,我们可以假定初始参数值 w0,b0\boldsymbol{w}_0, b_0 均为 00,误分类点 (xi,yi)(\boldsymbol{x}_i, y_i) 对参数 w,b\boldsymbol{w}, b 的更新一共作用了 nin_i 次,则最后学习到的参数为

w=i=1Nαiyixib=i=1Nαiyi(8)\boldsymbol{w} = \sum_{i=1}^N \alpha_i y_i \boldsymbol{x}_i \\ b = \sum_{i=1}^N \alpha_i y_i \tag{8}

其中,αi=niη\alpha_i = n_i \eta

算法:感知机学习算法的对偶形式

输入:训练数据集 T={(x1,y1),(x2,y2),,(xN,yN)}T=\{(\boldsymbol{x}_{1}, y_{1}),(\boldsymbol{x}_{2}, y_{2}), \cdots,(\boldsymbol{x}_{N}, y_{N})\},其中 xiX=Rn\boldsymbol{x}_i \in \mathcal{X} = \mathbf{R}^nyiY={+1,1},i=1,2,,Ny_i \in \mathcal{Y} = \{+1, -1\}, i=1,2,\cdots,N;学习率 η(0<η1)\eta(0 < \eta \leq 1)

输出:α\boldsymbol{\alpha};感知机模型 f(x)=sign(i=1Nαiyixix+i=1Nαiyi)f(x) = \mathrm{sign}(\sum_{i=1}^N \alpha_i y_i \boldsymbol{x}_i^\top \boldsymbol{x} + \sum_{i=1}^N \alpha_i y_i)

  1. α0\boldsymbol{\alpha} \leftarrow 0

  2. 在训练集中选取数据 (xj,yj)(\boldsymbol{x}_j, y_j)

  3. 如果 yj(i=1Nαiyixixj+i=1Nαiyi)0y_j(\sum_{i=1}^N \alpha_i y_i \boldsymbol{x}_i^\top \boldsymbol{x}_j + \sum_{i=1}^N \alpha_i y_i) \leq 0,则

    αiαi+η\alpha_i \leftarrow \alpha_i + \eta

  4. 转至 2.,直至训练集中没有误分类点。

对偶形式中的训练实例 xi\boldsymbol{x}_i 仅以内积形式出现,因此为了方便可以事先计算出所有实例间的内积,即 Gram 矩阵:

G=[xixj]N×NG = \left[ \boldsymbol{x}_i^\top \boldsymbol{x}_j \right]_{N \times N}

与原始形式一样,感知机学习算法的对偶形式也是收敛的,存在多个解。

附录

  • 《统计学习方法》by 李航