感知机模型是一个非常基础的模型,是神经网络的根基。
感知机模型
感知机模型是一个二分类的线性分类模型,输入是样本的特征向量,输出是样本的类别,取值+1和-1。
模型定义
假设输入空间(特征空间)是X⊆Rn\mathcal{X} \subseteq \mathrm{R}^nX⊆Rn,输出空间是Y={+1,−1}\mathcal{Y} = \{ +1, -1 \}Y={+1,−1}。输入x∈Xx \in \mathcal{X}x∈X表示样本的特征向量,对应于输入空间(特征空间)的点,输出y∈Yy \in \mathcal{Y}y∈Y对应样本的类别。有输入空间到输出空间的映射函数如下:
f(x)=sign(w⋅x+b) f(x) = sign(w \cdot x + b) f(x)=sign(w⋅x+b)
就是感知机的形式。其中www和 bbb是感知机的模型参数,w∈Rnw \in \mathrm{R}^nw∈Rn是系数或叫权重、权值,b∈Rb \in \mathrm{R}b∈R叫偏置, w⋅xw \cdot xw⋅x表示www 和 xxx的内积。signsignsign是符号函数:
sign(x)={+1, x≥0−1, x<0 sign(x) =
\begin{cases}
+1, \ \ \ x \geq 0 \\
-1, \ \ \ x < 0
\end{cases}
sign(x)={+1, x≥0−1, x<0
感知机是一种线性分类模型,感知机模型的假设空间是定义在特征空间中所有的线性分类模型或线性分类器。函数的集合{f∣f(x)=w⋅x+b}\{ f \mid f(x) = w \cdot x + b\}{f∣f(x)=w⋅x+b}。
感知机的几何解释
线性方程:w⋅x+b=0w \cdot x + b = 0w⋅x+b=0对应特征空间Rn\mathrm{R}^nRn的一个超平面SSS,其中www是超平面的法向量,bbb 是超平面的截距。这个超平面把特征空间划分成两个部分,位于两个部分的点(特征向量)被划分为正、负两类。超平面SSS被称作分离超平面。
如上图所示,假设在二维特征空间,w⋅x+b=0w \cdot x + b = 0w⋅x+b=0表示分离超平面,∘\circ∘ 表示正类取值+1,即w⋅xi+b>0w \cdot x_i + b > 0w⋅xi+b>0。×\times× 表示负类取值-1,即w⋅xi+b<0w \cdot x_i + b < 0w⋅xi+b<0。
总结一句话:感知机需要找到一个能够将训练数据集的正样本和负样本完全正确分开的分离超平面。
学习策略
感知机学习的前提是数据集线性可分,也就是说存在一个分离超平面SSS能够正确将正类和负类划分到超平面的两侧,即对所有的yi=+1y_i = +1yi=+1的样本,有w⋅xi+b>0w \cdot x_i +b > 0w⋅xi+b>0;对所有yi=−1y_i = -1yi=−1的样本,有w⋅xi+b<0w \cdot x_i + b < 0w⋅xi+b<0。说明数据集线性可分。
感知机想要找到这个分离超平面,就需要确定模型的参数 w和b,需要制定一个学习的策略,即定义损失函数并最小化损失函数。
由于直接定义样本分类错误的个数,这个函数不是连续可导函数不易于优化求最优值。另一个想法是计算分类错误点到分离超平面的距离和,这就是感知机所采用的损失函数。
一个点到超平面的距离公式:1∣∣w∣∣∣w∗x+b∣{1 \over ||w||} | w*x+b |∣∣w∣∣1∣w∗x+b∣,∣∣w∣∣||w||∣∣w∣∣是w的L2L_2L2范数。
其中
- L0L_0L0范数,指的是向量中非零元素的个数。向量{1,0,-3,0,1,2}的L0L_0L0范数为4。
- L1L_1L1范数,指的是向量中元素绝对值之和。向量{1,0,-3,0,1,2}的L1L_1L1范数为∣1∣+∣0∣+∣−3∣+∣0∣+∣1∣+∣2∣=7|1| + |0| + |-3| + |0| + |1| + |2| = 7∣1∣+∣0∣+∣−3∣+∣0∣+∣1∣+∣2∣=7。
- L2L_2L2范数,指的是向量中元素平方和的正平方根。向量{1,0,-3,0,1,2}的L1L_1L1范数为12+02+(−3)2+02+12+22=15\sqrt{ 1^2 + 0^2 + (-3)^2 + 0^2 + 1^2 + 2^2 } = \sqrt{15}12+02+(−3)2+02+12+22=15。
其中对误分类点(xi,yi)(x_i, y_i)(xi,yi)来说 −yi(w⋅xi+b)>0-y_i(w \cdot x_i + b)>0−yi(w⋅xi+b)>0成立。因为如果 yi=−1y_i=-1yi=−1,那么w⋅xi+b>0w \cdot x_i + b > 0w⋅xi+b>0,如果yi=+1y_i=+1yi=+1,那么w⋅xi+b<0w \cdot x_i + b < 0w⋅xi+b<0,所以分类错误的点到分离超平面的距离 −1∣∣w∣∣yi(w⋅xi+b)- { 1 \over ||w|| } y_i (w \cdot x_i + b)−∣∣w∣∣1yi(w⋅xi+b)。
假设误分类点的集合为M,所有误分类的点到分离超平面距离的和为−1∣∣w∣∣∑xi∈Myi(w⋅xi+b)-{1 \over ||w||} \sum_{x_i \in M} y_i(w \cdot x_i + b)−∣∣w∣∣1∑xi∈Myi(w⋅xi+b),对于一个固定的w来说,1∣∣w∣∣1 \over ||w||∣∣w∣∣1是常数值可以不考虑。
所以感知机的损失函数,对于给定的数据集
T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T=\{ (x_1,y_1),(x_2,y_2), \cdots, (x_N,y_N) \}T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中xi∈X=Rn, yi∈Y={−1,+1}, i=1,2,3,⋯ ,Nx_i \in \mathcal{X} = \mathrm{R}^n, \ \ \ y_i \in \mathcal{Y} = \{-1, +1\}, \ \ \ i = 1,2,3, \cdots, Nxi∈X=Rn, yi∈Y={−1,+1}, i=1,2,3,⋯,N。感知机的损失函数定义为:
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)
其中M是误分类点的集合,这是感知机的经验风险函数。
算法
确定了感知机的损失函数,之后就要最小化损失函数,即:
minw,bL(w,b)=−∑xi∈Myi(w⋅xi+b) \min_{w,b} L(w, b) = - \sum_{x_i \in M} y_i(w \cdot x_i + b)w,bminL(w,b)=−xi∈M∑yi(w⋅xi+b)
最优化的求解使用随机梯度下降法。先随机选一个初始参数w0,b0w_0, b_0w0,b0,确定一个分离超平面,然后使用随机梯度下降法,从误分类的集合点中随机选一个点优化损失函数。
损失函数L(w,b)L(w, b)L(w,b)的梯度:
∇wL(w,b)=−∑xi∈Myixi \nabla_w L(w, b) = - \sum_{x_i \in M} y_i x_i∇wL(w,b)=−xi∈M∑yixi
∇bL(w,b)=−∑xi∈Myi \nabla_b L(w, b) = - \sum_{x_i \in M} y_i ∇bL(w,b)=−xi∈M∑yi
随机选一个误分类的点对w和b更新:
w←w+ηyixi w \leftarrow w +\eta y_i x_i w←w+ηyixi
b←b+ηyi b \leftarrow b +\eta y_i b←b+ηyi
公式中的η\etaη表示步长,又称作学习率,表示在梯度方向一次前进多少。在不断优化的过程中L(w,b)L(w, b)L(w,b)不断减少,一直到0。
对偶形式
对应SVM的对偶形式。
是将参数表示成xix_ixi和yiy_iyi的线性组合。通过求解其系数从而求w和b。
假设w和b的初始值为0,通过使用误分类点更新w和b:w←w+ηxiyi w \leftarrow w + \eta x_i y_iw←w+ηxiyi b←b+ηyi b \leftarrow b + \eta y_ib←b+ηyi
逐步修改w和b,设修改n次,则w和b关于(xi,yi)(x_i, y_i)(xi,yi)的增量分别是aiyixia_i y_i x_iaiyixi 和 aiyia_i y_iaiyi,ai=niηa_i = n_i \etaai=niη,最后的w和b可以表示为:w=∑i=1Naiyixi w = \sum_{i=1}^N a_i y_i x_iw=i=1∑Naiyixi b=∑i=1Naiyib = \sum_{i=1}^N a_i y_ib=i=1∑Naiyi
ai≥0,i=1,2,⋯ ,Na_i \geq 0, i=1,2,\cdots ,Nai≥0,i=1,2,⋯,N 参考P33,算法2.2
总结
训练数据集 T=(x1,y1),(x2,y2),⋯ ,(xN,yN)T = {(x_1, y_1), (x_2, y_2), \cdots ,(x_N, y_N)}T=(x1,y1),(x2,y2),⋯,(xN,yN),其中xi∈X=Rn, yi∈Y={+1,−1}, i=1,2,⋯ ,Nx_i \in \mathcal{X} = \mathrm{R}^n, \ \ \ y_i \in \mathcal{Y} = \{+1, -1\}, \ \ \ i = 1, 2, \cdots,Nxi∈X=Rn, yi∈Y={+1,−1}, i=1,2,⋯,N;学习率 η(0≤η≤1)\eta (0 \leq \eta \leq 1 )η(0≤η≤1);
感知机的模型:f(x)=sign(w⋅x+b)f(x) = sign(w \cdot x + b)f(x)=sign(w⋅x+b)
随机选一个值w0,b0w_0, b_0w0,b0,然后在训练数据集中选出 yi(w⋅xi+b)≤0y_i (w \cdot x_i + b) \leq 0yi(w⋅xi+b)≤0的点,用(xi,yi)(x_i, y_i)(xi,yi)更新w和b:
w←w+ηyixi w \leftarrow w +\eta y_i x_i w←w+ηyixi
b←b+ηyi b \leftarrow b +\eta y_i b←b+ηyi
然后再用新的w和b在训练数据集中选出 yi(w⋅xi+b)≤0y_i (w \cdot x_i + b) \leq 0yi(w⋅xi+b)≤0的点,直到找不到这样的点。
直观的理解:当选择的分离超平面存在错误的时候,使用错误的点调整分离超平面,使错误变正确。不断调整分离超平面,直至所有的点都正确。