模型
定义
感知机是
其中输入 \(x\in \mathbf{R}^n\) 表示实例的特征向量,输出 \(y\in \{+1,-1\}\)表示实例的类别。模型参数 \(w\) 称为权值,参数 \(b\) 称为偏置。
几何模型
若 \(x\in \mathbf{R}^2\),
该形式满足平面中的直线方程:
其中 \(w=(i,j)^\mathrm{T}\) 为直线法向量。
类似地,当 \(x\in \mathbf{R}^3\) 时,感知机模型满足空间中的平面方程:
且 \(w=(i,j,k)^\mathrm{T}\) 为平面法向量。
因此,感知机在模型本质上是在特征空间 \(\mathbf{R}^n\) 中的一个超平面 \(S\),代表特征向量的点被超平面 \(S\) 分隔成两部分,其中参数 \(w\) 为超平面法向量。
超平面 \(S\) 也应符合 \(\mathbf{R}^n\) 空间中的几何关系,所以在 \(\mathbf{R}^n\) 空间中的任意一点 \(x_0\) 到超平面的距离为
\(||w||\) 是 \(w\) 的 \(L_2\) 范数:
即法向量长度。
点到超平面距离
以 \(x\in \mathbf{R}^2\) 为例,将超平面 \(S\) 方程转化为截距式:
超平面 \(S\) 在 \(x^{(2)}\) 轴上的截距就为 \(-\frac{b}{j}\)。过点 \(x_0\) 作平行于 \(S\) 的超平面 \(S_0\),同样得到截距式:
超平面 \(S_0\) 在 \(x^{(2)}\) 轴上的截距为 \(-\frac{b_0}{j}\)。
将 \(d\) 平移至蓝色三角形中,\(\boldsymbol{w}\) 是超平面的法向量,\(\boldsymbol{w}=w=(i,j)^\mathrm{T}\),根据向量夹角余弦公式
\(\boldsymbol{j}\) 为 \(x^{(2)}\) 方向的单位向量,因此有
在蓝色三角形中,
由 \(w\cdot x_0+b_0=0\) 得到 \(b_0=-w\cdot x_0\),代入就可以证得
策略
感知机的分类情况可以归为以下几类:
- \(w\cdot x_i+b\geqslant0\),\(\ y_i=+1\),分类正确;
- \(w\cdot x_i+b\geqslant0\),\(\ y_i=-1\),分类错误;
- \(w\cdot x_i+b<0\),\(\ y_i=-1\),分类正确;
- \(w\cdot x_i+b<0\),\(\ y_i=+1\),分类错误。
因此分类错误的数据点 \((x_i,y_i)\) 满足
若超平面 \(S\) 误分类的点的集合为 \(M\),那么误分类点到超平面的距离之和为
略去 \(\frac{1}{||w||}\)(见第七章),得到
感知机的学习策略就是在假设空间中选取 \(L(w,b)\) 最小的模型参数 \(w\) 和 \(b\)。
算法
感知机的学习算法就是求解以下最优化问题的算法:
随机梯度下降法
- 任意选取超平面 \(w_0\cdot x+b_0=0\);
- 随机选取误分类点使 \(L(w,b)\) 梯度下降;
- 不断更新 \(w\) 与 \(b\),直至 \(L(w,b)=0\)。
二元函数 \(f(x,y)\) 在 \((x_0,y_0)\) 处的梯度定义为
因此损失函数 \(L(w,b)\) 的梯度为
随机选择误分类点 \((x_i,y_i)\) 更新 \(w\) 与 \(b\),使 \(L(w,b)\) 沿梯度方向下降:
其中 \(\eta\ (0<\eta\leqslant1)\) 称为步长,不断迭代至 \(L(w,b)=0\)。
原始形式算法
算法2.1
输入:训练集 \(T\),学习率 \(\eta\)
输出:\(w\) 与 \(b\) ,感知机模型 \(f(x)=\mathrm{sign}(w\cdot x+b)\)
- 设定步长 \(\eta\),选取初值 \(w_0\) 与 \(b_0\),一般为 \(w_0=0\),\(b_0=0\);
- 选取点 \((x_i,y_i)\);
- 若 \(y_i(w\cdot x_i+b)\leqslant0\),$$w\leftarrow w+\eta y_ix_i$$$$b\leftarrow b+\eta y_i$$
- 重复步骤(2),直至没有误分类点,即 \(L(w,b)=0\)。
对偶形式算法
经过数次以下迭代步骤:
其中 \(\alpha_i=n_i\eta\),\(n_i\) 表示点 \((x_i,y_i)\) 被误分类的次数。也就是说,在迭代的每一次过程中,被误分类的点 \((x_i,y_i)\) 都不断向超平面靠近,直至位于超平面的另一侧。
最后得到的感知机模型应为
为了与 \(x=x_i\) 代入后的模型相区别,表示为
算法2.2
输入:训练集 \(T\),学习率 \(\eta\)
输出:\(\alpha\) 与 \(b\) ,感知机模型 \(f(x)=\mathrm{sign}\left(\sum_{j=1}^N\alpha_iy_jx_j\cdot x+b\right)\)
- 设定步长 \(\eta\),选取初值 \(\alpha\) 与 \(b_0\),一般为 \(\alpha=(\alpha_1,\alpha_2,\cdots,\alpha_N)^\mathrm{T}=0\),\(b_0=0\);
- 选取点 \((x_i,y_i)\);
- 若\(y_i\left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x_i+b\right)\leqslant0\),$$\alpha_i\leftarrow\alpha_i+\eta$$$$b\leftarrow b+\eta y_i$$
- 重复步骤 2,直至没有误分类点。
考虑迭代的判断条件
每次判断都需要计算
因此可以将内积以矩阵形式存放,即 Gram 矩阵:
由于内积的性质,Gram 矩阵实际上是一个对称矩阵。