李航-统计学习方法-笔记-2:感知机

感知机

基本模型:感知机1957年由Rosenblatt提出,是神经网络与SVM的基础。它是一个二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。

\[f(x)=sign(w \cdot x+b) \\ sign(x)= \left\{\begin{matrix} +1, & x \geqslant 0\\ -1, & x < 0 \end{matrix}\right.\]

线性方程\(w \cdot x + b = 0\)对应于特征空间\(R^n\)中的一个超平面S,其中\(w\)是超平面的法向量,\(b\)是超平面的截距。超平面将特征空间划分为两个部分。位于两个部分的点(特征向量)分别被分为正负两类。

数据集的线性可分性:如果存在某个超平面\(w \cdot x + b = 0\)能将数据集的正实例点和负实例点完全正确地划分到超平面两侧,称数据集\(T\)为线性可分数据集。

损失函数的选择:损失函数的一个自然选择是误分类点的总数,但是这样的损失函数不是参数w,b的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面S的总距离,这是感知机所采用的。

点到超平面S的距离:首先,输入空间\(R^n\)中任一点\(x_0\)到超平面的距离如下式所示,这里\(||w||\)表示L2范数。

\[\frac{1}{||w||}|w \cdot x_0 + b| \]

误分类点到超平面S的距离:其次,对于误分类数据\((x_i, y_i)\)来说,\(-y_i(w \cdot x_i + b) > 0\),因此,误分类点到超平面S的距离为

\[- \frac{1}{||w||} y_i (w \cdot x_i + b) \]

假设超平面S的误分类点集合为\(M\),那么所有误分类点到超平面S的总距离为

\[- \frac{1}{||w||} \sum_{x_i \in M}y_i (w \cdot x_i + b) \]

损失函数:不考虑\(\frac{1}{||w||}\),就得到了感知机学习的损失函数,如下式所示。
这里去掉\(\frac{1}{||w||}\)并不影响优化结果,
因为我们想做的是使\(y_i(w \cdot x + b)\)由负变正,
加不加\(\frac{1}{||w||}\)无所谓。

\[L(w,b) = - \sum_{x_i \in M}y_i (w \cdot x_i + b) \]

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

随机梯度下降:首先,任意选取一个超平面\(w_0 \cdot x + b_0 = 0\)(参数初始化)。然后用梯度下降法不断极小化损失函数,极小化的过程中,一次随机选取一个误分类点做梯度下降。对\(w,b\)求梯度:

\[\triangledown _ wL(w,b)=-\sum_{x_i \in M}y_i x_i \\ \triangledown _b L(w,b)=-\sum_{x_i \in M}y_i\]

随机选取一个误分类点\((x_i, y_i)\),对\(w,b\)进行更新:

\[w\leftarrow w + \eta y_i x_i \\ b\leftarrow b + \eta y_i\]

式中\(\eta(0 < \eta \leqslant 1)\)是步长,在统计学习中又称为学习率。这样,通过迭代可以期待损失函数\(L(w,b)\)不断减小,直到为0。

算法2.1 (感知机学习算法的原始形式)

输入:训练数据集\(T=\{(x_1, y_1),(x_2, y_2), ..., (x_N, y_N)\}\),其中\(x_i \in \mathcal{X} = R^n\)\(y_i \in \mathcal{Y} = \{-1, +1\}\)\(i = 1,2,...,,N\); 学习率\(\eta(0<\eta \leqslant 1)\)
输出:\(w, b\);感知机模型\(f(x) = sign(w \cdot x + b).\)
(1)选取初值\(w_0, b_0\)
(2)在训练集中选取数据\((x_i, y_i)\)
(3)如果\(y_i (w \cdot x_i + b) \leqslant 0\)

\[w\leftarrow w + \eta y_i x_i \\ b\leftarrow b + \eta y_i\]

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

这种学习算法直观上有如下解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整\(w,b\)的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类。

收敛性证明

收敛性证明
现在证明,对于线性可分数据集,感知机学习算法的收敛性,即经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面。为了便于叙述与推导,将偏置\(b\)并入权重向量\(w\),记作\(w \leftarrow (w, b)\),同时将输入向量加以扩充,加进常数1,记作\(x \leftarrow (x, 1)\)。此时\(w \cdot x \leftarrow (w \cdot x + b)\)
这样就可以用 $ w \cdot x \(代替 \)w \cdot x + b$ 来进行表示。

特殊说明:下面的阐述并没有采用《统计学习方法》中的证明,而是参考台湾大学林轩田老师《机器学习基石》课程中的证明。

线性可分:线性可分告诉我们,一定存在一个超平面能分开数据,假设这个超平面为\(w_f\),它使得式子\(y_n = sign(w_f^T x_n)\)成立,此时有:

\[y_n w_f^T x_n \geqslant \min_n y_n w_f^T x_n > 0\tag{2.1} \]

考虑\(w_f\)\(w_t\)的内积变化,结合式(2.1),可得下式,其中\(t\)表示迭代次数的序号,\(n(t)\)表示第\(t\)次迭代时的点。

\[\begin{split}w_f^T w_{t+1} &= w_f^T(w_t + y_{n(t)} x_{n(t)}) \\ &= w_f^T w_t + y_{n(t)} w_f^T x_{n(t)} \\ &\geqslant w_f^T w_t + \min_n y_n w_f^T x_n \\ & > w_f^T w_t + 0 \end{split} \tag{2.2} \]

出错时才更新:感知机的学习算法告诉我们,只更新误分类点,所以有:

\[y_{n(t)} w_t^T x_{n(t)} \leqslant 0 \tag{2.3} \]

考虑\(w_t\)的长度变化,结合式(2.3),可以得到下式。

\[\begin{split}|| w_{t+1} ||^2 &= || w_t + y_{n(t)} x_{n(t)} ||^2 \\ &= ||w_t||^2 + 2 y_{n(t)} w_t^T x_{n(t)} + ||y_n(t) x_n(t)||^2 \\ &\leqslant ||w_t||^2 + 0 + ||y_n(t) x_n(t)||^2 \\ & \leqslant ||w_t||^2 + \max_n ||x_{n}||^2 \end{split} \tag{2.4} \]

列项相消
考虑\(w_0\)迭代到\(w_T\),对式(2.2)列项相消,可以得到下式,其中T表示第T轮迭代后

\[w_f^T w_{T} \geqslant T \cdot \min_n y_n w_f^T x_n \tag{2.5} \]

考虑\(w_0\)迭代到\(w_T\),对式(2.4)列项相消,可以得到下式

\[|| w_{T} ||^2 \leqslant T \cdot \max_n ||x_{n}||^2 \tag{2.6} \]

处理一下式(2.5)和式(2.6),可以得到以下两式

\[\frac{w_f^T w_{T}}{||w_f^T||} \geqslant T \cdot \min_n \frac{y_n w_f^T x_n}{||w_f^T||} \tag{2.7} \]

\[\frac{1}{||w_T|| } \geqslant \frac{1}{\sqrt{T} \max_n ||x_n||}, \tag{2.8} \]

两式相乘,得到下式。

\[\frac{w_f^T w_{T}}{||w_f^T|| \ ||w_T||}\geqslant \sqrt{T} \cdot \frac{\min_n \frac{y_n w_f^T x_n}{||w_f^T||}}{ \max_n ||x_n||}, \tag{2.9} \]

\(\min_n \frac{y_n w_f^T x_n}{||w_f^T||}\)\(P\),令\(\max_n ||x_n||\)\(R\),则

\[\frac{w_f^T w_{T}}{||w_f^T|| \ ||w_T||}\geqslant \sqrt{T} \cdot \frac{P}{R}, \\ \frac{P}{R} = constant \tag{2.10} \]

可以看到,随着迭代次数\(T\)的增加,\(w_f^T\)\(w_T\)的余弦夹角会越来越大,但是不会无止境大下去,因为余弦夹角的最大值为1,由此可得

\[T \leqslant \frac{R^2}{P^2} \]

所以,当T增大到\(\frac{R^2}{P^2}\)(常量)时,\(w_T\)\(w_f\)同向,此时\(w_T\)可以将数据点成功分开,是我们要求解的法向量。得证感知机算法的收敛性。

好处和坏处

好处
简单,容易实现。

坏处
(1)假设了线性可分(实际上我们并不知道数据是否线性可分)
(2)就算是线性可分,我们也不确定要迭代多少轮才停,因为\(T \leqslant \frac{R^2}{P^2}\)\(P\)取决于最终的法向量\(w_f\),但是我们并不知道这个\(w_f\),所以无法确定到迭代多少轮。

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

基本思想:在感知机原始形式的学习算法中,可假设初始值\(w_0\)\(b_0\)均为0,对误分类点进行逐步修改

\[w\leftarrow w + \eta y_i x_i \\ b\leftarrow b + \eta y_i\]

设修改\(n\)次,则\(w, b\)关于\((x_i, y_i)\)的增量分别是\(\alpha_iy_ix_i\)\(\alpha_iy_i\),其中\(\alpha_i = n_i\eta\),当\(\eta=1\)时,\(\alpha_i\)表示第i个实例点由误分而进行更新的次数。最后学习到的\(w, b\)可以表示为

\[w = \sum_{i=1}^{N} \alpha_iy_ix_i \\ b = \sum_{i=1}^{N} \alpha_iy_i \]

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

输入:训练数据集\(T=\{(x_1, y_1),(x_2, y_2), ..., (x_N, y_N)\}\),其中\(x_i \in \mathcal{X} = R^n\)\(y_i \in \mathcal{Y} = \{-1, +1\}\)\(i = 1,2,...,,N\); 学习率\(\eta(0<\eta \leqslant 1)\)
输出:\(\alpha,b\);感知机模型\(f(x) = sign(\sum_{j=1}^{N} \alpha_jy_jx_j \cdot x + b)\)
(1)\(\alpha \leftarrow 0, b \leftarrow 0\)
(2)在训练集中选取数据\((x_i, y_i)\)
(3)如果\(y_i (\sum_{j=1}^{N} \alpha_jy_jx_j \cdot x + b) \leqslant 0\)

\[\alpha_i \leftarrow \alpha_i + \eta \\ b\leftarrow b + \eta y_i\]

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

对偶形式中,训练实例仅以内积的形式出现。为了方便,可以预先将训练实例间的内积计算出来并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵

\[G = [x_i \cdot x_j]_{N \times N} \]

posted @ 2019-06-05 14:56  PilgrimHui  阅读(1566)  评论(0编辑  收藏  举报