定义
感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1值,感知机学习旨在求出将训练数据进行线性划分的分离超平面,是神经网络和支持向量机的基础。
感知机模型
f(x)=sign(w∗x+b)f(x)=sign(w*x+b)f(x)=sign(w∗x+b)
其中,xxx是样本点,www是权值向量,bbb是偏置,在几何上可分别解释为超平面的法向量和截距,signsignsign是符号函数。该函数即为感知机,感知机学习由训练集求得www和bbb,感知机预测则是通过学习得到的感知机模型,对于新输入的实例给出对应的输出类别。
感知机学习策略
- 数据集的线性可分性: 即对于该数据集,存在某个超平面可以将该数据集内的所有实例按照正负标签完全正确地划分到超平面两边,则此数据集为线性可分数据集,否则为线性不可分数据集。
- 感知机学习策略: 假设训练集是线性可分的。感知机学习的目标即是求得一个能够将训练集正负实例点完全正确划分的超平面,即确定www和bbb,为此,须确定一个学习策略,即定义损失函数并将其最小化。感知机的损失函数定义为:
L(w,b)=−∑xi∈Myi(w⋅xi+b)L(w,b)=-\sum_{x_i\in{M}}{y_i(w\cdot{x_i}+b)}L(w,b)=−xi∈M∑yi(w⋅xi+b)
其中,MMM为误分类点的集合,此函数实际上是对所有误分类点到超平面的的距离之和做了些许简化之后得到的函数。损失函数的值是非负的,如果没有误分类点,损失函数值为0,且误分类点越少,误分类点离超平面越近,损失函数值就越小。感知机的学习策略是在假设空间(定义在特征空间中的所有线性分类模型)中选取使得损失函数最小的模型参数www和bbb.
感知机学习算法
感知机的学习算法是在给定一个训练数据集的情况下,求得上述两参数使得损失函数最小。分原始形式和对偶形式。
-
原始形式: 感知机的学习算法是误分类驱动的,具体采用随机梯度下降法。过程如下:
输入:训练集 TTT 和学习率 η\etaη(0<η≤10<\eta\leq 10<η≤1,又称步长);
输出:www,bbb,感知机模型:f(x)=sign(w∗x+b)f(x)=sign(w*x+b)f(x)=sign(w∗x+b)
(1)选取初值 w0w_0w0 和 b0b_0b0;
(2)在训练集中随机选取一个数据 (xi,yi)(x_i,y_i)(xi,yi);
(3)若 yi(w⋅xi+b≤0)y_i(w\cdot{x_i}+b\leq0)yi(w⋅xi+b≤0)(即为误分类点,所以说感知机的学习算法是误分类驱动的),更新 www,bbb,如下:
w←w+ηyixiw\leftarrow w+\eta y_ix_iw←w+ηyixi b←b+ηyib\leftarrow b+\eta y_ib←b+ηyi
(4)转到(2),直到训练集中没有误分类点为止。
对于该学习算法的直接理解是:当一个分类点被误分类,即位于分离超平面的错误一侧时,调整 www,bbb 的值,使得分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类。对于线性可分数据集,感知机学习算法原始形式收敛,即经过有限次迭代可以得到一个将训练集完全划分的分离超平面。当训练集线性不可分时,感知机学习算法不收敛,迭代结果会发生震荡。 -
对偶形式: 基本思想是将 www 和 bbb 表示为实例 xix_ixi 和标记 yiy_iyi 的线性组合的形式,通求解其系数而求得 www 和 bbb
输入:线性可分数据集 TTT,学习率 η(0<η≤1)\eta (0<\eta \leq 1)η(0<η≤1);
输出:α\alphaα,bbb,感知机模型: f(x)=sign(∑j=1Nαjyjxj⋅x+b)f(x)=sign(\sum_{j=1}^{N}{\alpha_jy_jx_j\cdot x+b})f(x)=sign(∑j=1Nαjyjxj⋅x+b),NNN 是数据集样本点个数。
(1)α←0\alpha \leftarrow 0α←0, b←0b \leftarrow 0b←0 ;
(2)在训练集中选取数据(xi,yi)(x_i,y_i)(xi,yi) ;
(3)如果yi(∑j=1Nαjyjxj⋅xi+b)≤0y_i(\sum_{j=1}^{N}{\alpha_j}y_jx_j\cdot x_i+b)\leq0yi(∑j=1Nαjyjxj⋅xi+b)≤0
αi←αi+η\alpha_i \leftarrow \alpha_i+\etaαi←αi+η b←b+ηyib \leftarrow b+\eta y_ib←b+ηyi α\alphaα 是一个向量,每次会更新其一个维度的值 αi\alpha_iαi,直到更新完毕为止。
(4)转至(2)直到没有误分类数据 。
对偶形式中训练数据仅以内积的形式出现,因此可以预先将训练集间的内积计算出来并以矩阵形式存储,此矩阵即为Gram矩阵,形式如下:
G=[xi⋅xj]N×NG=[x_i\cdot x_j]_{N\times N}G=[xi⋅xj]N×N