感知机模型

学一个模型最重要是要知道这个模型的:

    1)适用条件。

    2)它能够解决的问题。

    3)对应的统计学习方法的三要素,即假设空间,策略和求解算法。

 

感知机的假设空间

适用条件:感知机是一种线性分类模型,也就是说输入的数据必须是线性可分的。线性可分是说可以用一个线性函数把两类样本分开,

比如二维空间中的直线、三维空间中的平面以及高维空间中的线性函数。所谓可分指可以没有误差地分开;线性不可分指有部分样本用

线性分类面划分时会产生分类误差的情况。

定义:输入为实例的特征向量,输出为实例的类别,取 $+1$ 和 $-1$ 二值。感知机对应于输入空间(特征空间)中将实例划分为正负

两类的分离超平面,属于判别模型,解决的问题是分类问题。

那它模型函数的一般形式应该长啥样呢?

介绍一个符号函数:

$$sign(x) = \left\{\begin{matrix}
+1, & x \geq 0 \\
-1, & x < 0
\end{matrix}\right.$$

我们想要得到的是一个超平面,然后判断样本是位于这个超平面的正面还是反面,所以模型函数应该包含超平面方程,于是很自然

到下面的函数:

$$f(x) = sign(w^{T} \cdot x + b)$$

当样本点在超平面的正面时,代入超平面值会大于 $0$,位于反面则值会小于 $0$。上面这个函数就是感知机模型的一般形式,它可以

表征假设空间中的模型全体,或代表这个假设空间。

知道模型的一般形式后,我们需要确定模型的参数,从而得到一个具体模型。

注:如果超平面相关还不明白,可先去阅读博客

 

感知机的学习策略

对假设空间内的任意一个备选模型,怎么衡量这个模型的好坏呢?首先需要定义一个损失函数。

最容易想到的就是 $0-1$ 损失函数,如果结果的类别错误,那就是 $1$,否则就是 $0$,经验风险为错误率。

$$L(Y,F(X)) = \left\{\begin{matrix}
1, & Y \neq f(X) \\
0, & Y = f(X)
\end{matrix}\right. \\
R(f) = \frac{1}{N}\sum_{i=1}^{N}L(y_{i},f(x_{i}))$$

但是这样的经验风险函数是一个针对统计结果的常数,是不连续的,没办法进行求导分析并优化。

介绍另外一种更好的目标函数:误分类点到超平面距离的总和,可见这个函数只考虑误分类点。

一个样本点 $x_{i}$ 到超平面的距离为:

$$d_{i} = \frac{|w^{T}x_{i} + b|}{||w||}$$

设超平面 $S$ 的误分类点的集合为 $M$,所以全体误分类点到超平面距离总和为

$$\sum_{x_{i} \in M}^{}\frac{|w^{T}x_{i} + b|}{||w||}$$

但是这个函数含有绝对值,也没办法求导,考虑将绝对值去掉,由于误分类点是分类错误的,它代入超平面方程的结果符号与代入

模型的输出符号必然相反,即

$$y_{i} \cdot (w^{T}x_{i}+b) \leq 0$$

其中 $y_{i}$ 为该样本点正确的输出结果,取 ${+1,-1}$,所以全体误分类点到超平面距离的总和可以改成

$$\sum_{x_{i} \in M}^{}\frac{-y_{i}(w^{T}x_{i} + b)}{||w||}$$

观察这个函数可以发现,如果将分类正确的点代入,其结果就是负的。

这个函数能不能作为寻找超平面的衡量手段呢?

由下文可知,寻找参数 $w,b$ 采用的是随机梯度下降法,每次只代入一个误分类点,然后沿着梯度反方向迭代 $w,b$,使这个函数的

函数值,即样本点到超平面的距离越来越小,渐渐的,这个距离会变成 $0$,即样本点位于超平面上,但此时迭代仍然需要继续,因为

函数值为负才是意味着该点被分类正确。

按上面这个过程,这个目标函数完全胜任,我们无法认为每一次的迭代找到的 $w,b$ 所构成的超平面会比前一次更好,但这本身是一个

最优化问题,即无需考虑过程,只需要考虑优化到最终,能否产生正确的分类。

因为只考虑最值,所以当模型都能够正确分类样本点的时候,就没办法判断哪个模型更好了,这一点就不太行。

思考另外一个问题:上面的目标函数中分母 $||w||$ 能不能去掉?

分析:可以去掉,因为优化到最后,两个函数是同解的。如果没去掉分母,对一个误分类点采用梯度下降法,当找到参数 $w,b$ 使 $L(w,b)$ 为负时,

就可以认为迭代终止,而分母 $||w||$ 不会影响函数的符号,即使去掉,这组参数也能使函数值为负。 

最终我们得到了如下的目标函数:

$$L(w,b) = \sum_{x_{i} \in M}^{}-y_{i}(w^{T}x_{i} + b)$$

其中 $w$ 是一个列向量,$b$ 是一个数,$x_{i}$ 是一个与 $w$ 同维的列向量,$y_{i}$ 取值 ${1,-1}$。

 

感知机的学习算法

感知机学习算法是误分类驱动的,具体采用随机梯度下降算法

我们希望采用梯度下降法来求出目标函数的最优解,先来看看怎么对其求偏导。

假设超平面所处的空间为 $n$ 维,那么向量 $w$ 也是 $n$ 维的,所以 $L(w,b)$ 是 $n+1$ 元函数,将目标函数写成如下形式:

$$L(w,b) = -\sum_{x_{i} \in M}^{}y_{i}(w_{1}x_{i}^{(1)} + w_{2}x_{i}^{(2)} + w_{3}x_{i}^{(3)} + \cdots +w_{n}x_{i}^{(n)} + b)$$

其中 $x$ 的上标表示坐标分量,下表表示第 $i$ 个输入,$x_{i}$ 和 $y_{i}$ 都是已知的,于是求偏导有

$$\frac{\partial L}{\partial w_{j}} = -\sum_{x_{i} \in M}^{}y_{i}x_{i}^{(j)} \\
\frac{\partial L}{\partial b} = -\sum_{x_{i} \in M}^{}y_{i}$$

进一步得,可以将 $L$ 对 $w$ 的偏导数写在一起

$$\frac{\partial L}{\partial w} = -\sum_{x_{i} \in M}^{}y_{i}x_{i}^{}$$

则梯度的反方向,即函数下降最快的方向应该是

$$l = \left ( \sum_{x_{i} \in M}^{}y_{i}x_{i}, \sum_{x_{i} \in M}^{}y_{i} \right )$$

梯度下降的做法应该是将所有的误分类点代入向量 $l_{0}$ 得到一个具体的向量,并对 $w,b$ 确定一个初值 $w_{0},b_{0}$,然后确定一个学习率 $\eta$。

按如下方式逐渐找到最优值:

$$w = w + \eta \sum_{x_{i} \in M}^{}y_{i}x_{i} \\
b = b + \eta \sum_{x_{i} \in M}^{}y_{i}$$

但事实上,感知机并不是这样做的。

极小化过程中不是一次使 $M$ 中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。参数更新方法如下:

$$w = w + \eta \cdot y_{i}x_{i} \\
b = b + \eta \cdot y_{i}$$

其中 $x_{i},y_{i}$ 来自训练集实例,一开始就全部知道。

为啥不一次性进行梯度下降呢?这很好理解,因为误分类点集合并不是不变的,每调整一次参数,集合 $M$ 都可能会发生变化,

所以只能每次取一个误分类点,将它分类正确后,再取另外一个,直到所有的误分类点都被正确分类。

其中参数 $w$ 控制的是超平面的旋转,参数 $b$ 控制的是超平面的平移,每一次的梯度下降能使超平面以最小代价,最快速度

使误分类点被分类正确。

如何判断一个样本点未能被正确分类?

$$y_{i}(w^{T}x_{i} + b) \leq 0$$

小于 $0$ 自不必说,正确的结果 $y_{i}$ 与模型的输出两者异号,等于 $0$ 意味着该点在超平面上,也认为是不正确分类的,当迭代到使误分类点出现在

超平面上时,还需要再迭代,使函数值继续减少直到出现负值,这样就代表这个点被分类正确了。

下面总结一下算法过程:

    输入:训练集 $T$,学习率 $\eta \in (0,1)$

    输出:$w,b$;

    (1) 选取初值 $w_{0},b_{0}$

    (2) 在训练集中选取 $(x_{i},y_{i})$

    (3) 如果 $y_{i}(w \cdot x_{i} + b) \leq 0$

$$w = w + \eta \cdot y_{i}x_{i} \\
b = b + \eta \cdot y_{i}$$

关于算法的两点说明:

    1)参数 $w,b$ 的初值可以均选择 $0$,虽然它不代表任何超平面,也没有意义,但从算法角度来讲,经过一次迭代之后,参数就会非 $0$,从

       而出现一个超平面,之后便调整这个超平面,所以选择 $0$ 并不影响算法的正常迭代。选取不同的初值或者误分类点,解是不同的。

    2)目标函数的最小值并不是 $0$,它可以小于 $0$,使用梯度下降的时候,最终应该找到使函数值小于 $0$ 的 $w,b$,才代表样本点被分类正确。

 

学习算法原始形式收敛性证明($Novikoff$ 定理)

接下来要证明对于一个线性可分数据集,利用随机梯度下降法,经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面和

感知机模型。先来看下定理的内容:

设训练数据集 $T = {(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})}$ 是线性可分的,其中向量 $x_{i}$ 属于 $R^{n}$ 空间,$y_{i} \in \left \{ -1,+1 \right \}$

    1)存在一个超平面可以将训练数据集完全正确分开,这个超平面的法向量设为 $w_{opt}$,其中法向量 $w_{opt}$ 模长为 $1$,即 $||w_{opt}|| = 1$,且存在 $\gamma > 0$

       对所有的 $i=1,2,...,N$ 均有

$$y_{i}(w^{T}_{opt}x_{i} + b) \geq \gamma$$

       这个不等式就是说,将所有样本都分类正确后,$|w^{T}_{opt}x_{i} + b|$ 会有一个下界,这个下界就是 $\gamma$。为了方便叙述,记

$$\hat{w} = \begin{bmatrix}
w\\
b
\end{bmatrix} ,\;
\hat{x}_{i} = \begin{bmatrix}
x_{i}\\
1
\end{bmatrix}$$

       于是有 $w^{T}_{opt}x_{i} + b = \hat{w}^{T}_{opt}\hat{x}_{i}$,所以

$$y_{i}\left ( \hat{w}^{T}_{opt} \cdot \hat{x}_{i} \right ) \geq \gamma$$

       这里再说明一下,$w_{opt}$ 代表能正确分类的超平面的法向量。

    2)令 $R = \max_{1 \leq i \leq N}||\hat{x}_{i}||$,即输入特征向量的长度上界为 $R$,则原始算法在训练集上的误分类次数 $k$ 满足

$$k \leq (\frac{R}{\gamma})^{2}$$

       这个就是说,误分类次数 $k$ 是有限的,即经过有限次的迭代一定可以找到一个分离超平面。

证明:

    初看这个定理,就感觉很神奇,大牛们怎么就得到这么一个上下界呢?可能是结果很多实验后发现迭代次数总是有限的,而且和一些变量有关,

    于是就开始去推公式。下面来看下这个是如何证明的。

    1)对于第一个下界的证明比较容易,当所有样本点都被正确分类的时候,对于任一个输入 $x_{i}$ 必有

$$y_{i}\left ( w^{T}_{opt}x_{i} + b \right ) > 0$$

       所以取 $\gamma$ 为如下值即可

$$\gamma = \min_{i}\left \{ y_{i}\left ( w^{T}_{opt}x_{i} + b \right ) \right \}$$

    2)第二个 $k$ 的上界证明是个关键。

       来观察一下迭代的过程,如果某个样本点或实例被误分类,则要更新 $w,b$,设第 $k-1$ 次更新后,参数为

$$\hat{w}_{k-1} = \begin{bmatrix}
w_{k-1} \\
b_{k-1}
\end{bmatrix}$$

       设学习率为 $\eta$,则

$$w_{k} = w_{k-1} + \eta y_{i}x_{i}  \\
b_{k} = b_{k-1} + \eta y_{i}$$

       即

$$\hat{w}_{k} = \hat{w}_{k-1} + \eta y_{i} \hat{x}_{i}$$

       考虑将第 $k$ 次迭代得到的超平面法向量与正确的分离超平面法向量做点积,有

$$\hat{w}_{k}^{T} \cdot \hat{w}_{opt} = \left ( \hat{w}_{k-1} + \eta y_{i} \hat{x}_{i} \right )^{T} \cdot \hat{w}_{opt} \\
= \hat{w}_{k-1}^{T} \cdot \hat{w}_{opt} + \eta y_{i} \hat{x}_{i}^{T} \cdot \hat{w}_{opt} \\
\geq \hat{w}_{k-1}^{T} \cdot \hat{w}_{opt} + \eta \gamma \\
\geq \hat{w}_{k-2}^{T} \cdot \hat{w}_{opt} + 2 \eta \gamma \\
... \\
\geq k \eta \gamma$$

       其中 $x_{i}$ 对于超平面 $w_{k}^{T}x_{i} + b = 0$ 是误分类点,对于超平面 $w_{opt}^{T}x_{i} + b = 0$ 是正确分类的,这便得到了不等式

$$\hat{w}_{k}^{T} \cdot \hat{w}_{opt} \geq k \eta \gamma $$

       虽然我看明白了这个过程,但我并不理解为什么会想到将两个超平面的法向量做点积。

       继续,考虑如下式子

$$||\hat{w}_{k}||^{2} = ||\hat{w}_{k-1} + \eta y_{i} \hat{x}_{i}||^{2} \\
= ||\hat{w}_{k-1}||^{2} + 2 \eta y_{i} \hat{w}_{k-1}^{T} \cdot \hat{x}_{i} + \eta^{2}||\hat{x}_{i}||^{2} \\
\leq ||\hat{w}_{k-1}||^{2} + \eta^{2}R^{2} \\
\leq ||\hat{w}_{k-2}||^{2} + 2\eta^{2}R^{2} \\
... \\
\leq k \eta^{2}R^{2}$$

       因为是误分类点,所以交叉项 $2 \eta y_{i} \hat{w}_{k-1}^{T} \cdot \hat{x}_{i} < 0$,所以去掉值更大。这便得到不等式

$$||\hat{w}_{k}||^{2} \leq k \eta^{2}R^{2}$$

       于是有

$$k \eta \gamma \leq \hat{w}_{k}^{T} \cdot \hat{w}_{opt} \leq ||\hat{w}_{k}^{T}|| \cdot ||\hat{w}_{opt}|| \leq \sqrt{k} \eta R$$

       所以

$$k \leq (\frac{R}{\gamma})^{2}$$

证毕

 

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

目标函数中 $w^{T}x_{i}$ 是两组向量之间的乘法,计算机中矩阵之间的运算的复杂度是远远高于一般性四则运算的。而对偶感知机优化的点

也就是这个地方。接下来看一下具体的实现过程。

先回顾一下 $w,b$ 每一次是怎么变化的:

$$w = w + \eta \cdot y_{i}x_{i} \\
b = b + \eta \cdot y_{i}$$

每一个误分类点都会使 $w,b$ 发生调整,设 $n_{i}$ 是表示第 $i$ 个点被误分类的次数,如果没有被误分类,这个值就是 $0$,$N$ 为样本点总数,于是有

$$w = w + \sum_{i=1}^{N}n_{i} \cdot \eta \cdot y_{i}x_{i} \\
b = b + \sum_{i=1}^{N}n_{i} \cdot \eta \cdot y_{i}$$

一共有 $N$ 个样本点,每个样本点调整 $n_{i}$ 次达到正确分类,$x_{i},y_{i}$ 都来自训练集实例,一开始就全部知道,不会改变。

令 $\alpha_{i} = n_{i} \cdot \eta$,且 $w,b$ 的初值均设为 $0$,于是有

$$w = \sum_{i=1}^{N}\alpha_{i} \cdot y_{i}x_{i} \\
b = \sum_{i=1}^{N}\alpha_{i} \cdot y_{i}$$

可以这么理解:每个样本点都对得到正确的 $w,b$ 做出了贡献,这个贡献累加后就得到最终结果。

新形式的目标函数包含的未知参数为向量$\alpha = \left \{ \alpha_{1},\alpha_{2},...,\alpha_{N} \right \}$ 和 $b$,和之前相比,只是 $w$ 的形式变了,将新形式的 $w$ 代入目标函数中:

$$L(w,b) = -\sum_{x_{j} \in M}^{}y_{j}\left ( \sum_{i=1}^{N}(\alpha_{i}y_{i}x_{i}^{T} \cdot x_{j}) + b \right )$$

观察可知,全部的 $x_{i}^{T}x_{j}$ 都可以在算法运行前算好,这样在算法的更新过程中我们只涉及到常量的四则运算。

那迭代过程参数怎么更新呢?

$$\alpha_{j} = \alpha_{j} + \eta \\
b = b + \eta y_{j}$$

只是这个误分类样本点对应的 $\alpha_{j}$ 多加一个 $\eta$,其余样本点对 $w$ 的贡献是没有变化的。

对偶形式的参数更新只更新对应的 $\alpha_{j}$ 和 $b$ 两个数,而原来的算法则需要更新一整个向量 $w$ 和 $b$。

 

posted @ 2020-09-05 08:11  _yanghh  阅读(603)  评论(0编辑  收藏  举报