感知机
感知机
[TOC]
感知机是二分类的线性分类模型。输入为实例的特征向量,输出为实例的类别,取+1和-1二值。
采用基于误分类的损失函数,算法采用梯度下降法对损失函数进行极小化。
感知机模型
感知机模型的假设空间是定义在特征空间中的所有线性分类函数或者线性分类器。
几何解释:线性方程$w*x+b=0$对应于特征空间$R^$中得分一个超平面S,其中w是超平面的法向量,b是超平面的截距。
感知机学习策略
损失函数采用误分类点到超平面S的总距离。空间中一个点 \(x_{0}\) 到超平面 S:\(w*x+b=0\) 的距离为
而对于误分类的数据$(x_,y_)$来说,
比如,假设输入向量 \(x_{i}\) 实际分类 \(y_{i}=1\) 为正例,若 \(x_{i}\) 被误分类,那么其预测值 \(f_(x_{i})=w*x_{i}+b = -1\),那么
因此,对于所有误分类的输入向量 \(x_{i}\in X_{w}\),它们到分离超平面 S 的总距离为
不考虑$|w|$,就得到感知机学习的损失函数。
为什么这里可以不考虑$|w|$?
因为$-\frac{1}{|w|}\sum_{x_\in X_}y_(wx_+b)$ 表示误分类点到分离超平面的几何距离,去掉$\frac{1}{|w|}$ 后的$-\sum_{x_\in X_}y_(wx_+b)$实际上表示样本点的函数距离或者函数间隔。
感知机能够工作的一个必要条件是数据集是线性可分的,也就是说,一定存在某个分离超平面 S 能够满足 所有误分类点到该平面的距离为 0 (不存在误分类点)。容易知道,当误分类点到 S 总的几何距离为 0 或者 总的函数距离为 0 时,都可以说明无误分类点。 因此为了简化计算,我们选择 使用函数间隔或者说函数距离作为感知机的学习的损失函数。
理论上来说,不论选择几何距离还是函数距离都可以得到这个超平面。不过两种方法得到的超平面不一定一样。
因此,我们得到感知机$sign(w*x+b)$学习的损失函数定义为:
显然,损失函数是非负的,如果没有损误分类点,那么损失函数值是 0.
感知机学习算法
到此,感知机学习问题转化为求解损失函数的最优化问题。
采用随机梯度下降法求解 w 和 b。
对于误分类点集合$X_$中的某一个点 \(x_{i}\) 来说,损失函数$L(w,b)$的梯度为:
每次 选取一个误分类点,使其梯度下降。
η 被称为学习律。这样通过迭代可以期待损失函数L(w,b)不断减小,直到到达一个最小值。
###随机梯度下降法的一点理解:
梯度作为一个向量,其方向指向方向导数最大的方向,其模等于该方向上方向导数的值。方向导数是有正负的,当某个方向上的方向导数为正时,函数沿着该方向移动函数值会增加。
而梯度方向上方向导数最大,且该方向导数一定 > 0(梯度的模等于该方向导数),所以梯度的方向实际上是函数值增加最快的方向。而随机梯度下降方法中,我们每次都让未知参数向着梯度相反的方向移动,那么这样每次都可以让损失函数减小,多次迭代之后损失函数值就会达到最小值。
并且对于可微函数来说,梯度相反的方向就是函数值下降最快的方向。
损失函数本质上是模型中未知参数的函数。以感知机学习算法中的损失函数
来说,自变量 w 和 b 的梯度就是损失函数对其的偏导数组成的向量。只不过和高数中不同的一点在于,其偏导数是样本值的函数,而不是 w 和 b 的函数。因此对于不同的样本值,我们可以计算一个 w 和 b 的梯度,按照这个梯度的方向移动自变量 w 和 b 就得到损失函数 L 的一个最小值。
感知机学习算法的原始形式
输入:训练数据集 \(T=\{(x_{i},y_{i}),...,(x_{n},y_{n})\}\),学习率 η;
输入:w,b。感知机模型 \(f(x)=sign(w*x+b)\)
- 选取初值$w_{0},b_{0}$
- 在训练集中选取数据$(x_,y_)$;
- 如果 \(y_{i}(w*x_{i}+b)\leq 0\),则更新w,b:
- 转至2,直至训练集中没有误分类点。
算法收敛性
对于线性可分数据集感知机学习算法原始形式一定收敛,即经过有限次迭代一定可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型。
当训练集线性可分时,感知机学习算法存在无穷多个解,其解由于不同的初值或不同的迭代顺序而可能有所不同。