机器学习之感知机与SVM详细推导

感知机与SVM


1. 超平面

在介绍感知机与SVM之前,我们有必要补充一下超平面的概念。
超平面是具有下面形式的点的集合:
{ x ∣ a T x = b } (1) \{x|a^Tx=b\} \tag{1} {xaTx=b}(1)
其中 a ∈ R n , a ≠ 0 a\in R^n, a \neq 0 aRn,a=0 b ∈ R b\in R bR
解析意义:超平面是关于 x x x的非齐次线性方程组的解空间(是一个仿射集合)。
几何意义:超平面是与给定向量 a a a的内积为常数的点的集合;也可以看成法线方向 a a a的超平面,常数 b ∈ R b\in R bR决定了这个平面相对原点的偏移,每个轴上偏移了 b a i \frac{b}{a_i} aib
超平面外任意一点 y y y到超平面的距离计算过程:
在超平面上任取一点 x x x,则 y y y到超平面的距离可表示为:
d = ∣ a T ( y − x ) ∣ ∣ ∣ a ∣ ∣ = ∣ a T y − b ∣ ∣ ∣ a ∣ ∣ (2) d=\frac{|a^T(y-x)|}{||a||}=\frac{|a^Ty-b|}{||a||} \tag{2} d=aaT(yx)=aaTyb(2)
在感知机与SVM的相关理论推导中,我们一般将超平面写成如下形式:
{ x ∣ w T x + b = 0 } (3) \{x|w^Tx+b=0\} \tag{3} {xwTx+b=0}(3)

2. 感知机(perception)

感知机 是二类分类问题的线性分类模型。其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机学习旨在求出将训练数据进行线性划分的分离超平面。
假设对所有 y ( i ) = + 1 y^{(i)}=+1 y(i)=+1的点,有 w T x ( i ) + b > 0 w^Tx^{(i)}+b>0 wTx(i)+b>0;对所有 y ( i ) = − 1 y^{(i)}=-1 y(i)=1的点,有 w T x i + b < 0 w^Tx_i+b<0 wTxi+b<0。则对于给定数据集
T = ( x ( 1 ) , y ( 1 ) ) , ⋯   , ( x ( N ) , y ( N ) ) (4) T={(x^{(1)},y^{(1)}),\cdots,(x^{(N)},y^{(N)})}\tag{4} T=(x(1),y(1)),,(x(N),y(N))(4)
线性可分的定义是: ∃ \exists 某个超平面 { x ∣ w T x + b = 0 } \{x|w^Tx+b=0\} {xwTx+b=0}使得 ∀ ( x ( i ) , y ( i ) ) \forall(x^{(i)},y^{(i)}) (x(i),y(i)) y ( i ) ( w T x ( i ) + b ) > 0 y^{(i)}(w^Tx^{(i)}+b)>0 y(i)(wTx(i)+b)>0
也即对误分类的点有:
− y ( i ) ( w T x ( i ) + b ) > 0 (5) -y^{(i)}(w^Tx^{(i)}+b)>0\tag{5} y(i)(wTx(i)+b)>0(5)
我们假设感知机的训练数据都是线性可分的。
误分类点到超平面的总距离为:
− 1 ∥ w ∥ ∑ x ( i ) ∈ M y ( i ) ( w T x + b ) (6) -\frac{1}{\left \|w \right \|}\sum_{x^{(i)}\in M}y^{(i)}(w^Tx+b) \tag{6} w1x(i)My(i)(wTx+b)(6)
M M M为误分类点的集合。可以将 ( 6 ) (6) (6)作为优化的损失函数。
我们可以 把 1 ∥ w ∥ \frac{1}{\left \|w \right \|} w1扔掉而不影响优化结果,因为我们假设数据集是线性可分的,因此最后损失函数必然为零,即无误分类点。去掉后,我们得到的loss function如下:
− ∑ x ( i ) ∈ M y ( i ) ( w T x ( i ) + b ) (7) -\sum_{x^{(i)}\in M}y^{(i)}(w^Tx^{(i)}+b) \tag{7} x(i)My(i)(wTx(i)+b)(7)
( 7 ) (7) (7)是关于 w , b w,b w,b的连续可导线性函数,梯度为:
∇ w L ( w , b ) = − ∑ x ( i ) ∈ M y ( i ) x ( i ) (8) \nabla_wL(w,b)=-\sum_{x^{(i)}\in M}y^{(i)}x^{(i)} \tag{8} wL(w,b)=x(i)My(i)x(i)(8)
∇ b L ( w , b ) = − ∑ x ( i ) ∈ M y ( i ) (9) \nabla_bL(w,b)=-\sum_{x^{(i)}\in M}y^{(i)} \tag{9} bL(w,b)=x(i)My(i)(9)
可以利用随机梯度下降法轻松地进行优化:
(1) 选取初值 w 0 , b 0 w_0,b_0 w0,b0
(2) 在训练集中选取数据 x ( i ) , y ( i ) x^{(i)},y^{(i)} x(i),y(i)
(3) i f if if − y ( i ) ( w T x + b ) ≥ 0 -y^{(i)}(w^Tx+b)\geq 0 y(i)(wTx+b)0
w ← w + η y ( i ) x ( i ) (10) w\leftarrow w+\eta y^{(i)}x^{(i)} \tag{10} ww+ηy(i)x(i)(10)
b ← b + η y ( i ) (11) b\leftarrow b+\eta y^{(i)} \tag{11} bb+ηy(i)(11)
e l s e else else 算法停止
(4) 转至(2),直至训练集中没有误分类点。

3. 支持向量机(SVM)

感知机模型得到的分离超平面不是唯一的,会随着初值不同而不同。而SVM试图寻找一个最佳的超平面来划分数据。所谓“最优的超平面”,就是指“最中间的”的超平面,也即“与数据点间隔最大”的超平面。
定义样本点 ( x i , y i ) (x^{i},y^{i}) (xi,yi)与超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0几何间隔为:
γ ( i ) = y ( i ) ( w T x ( i ) + b ) ∥ w ∥ (12) \gamma^{(i)}=\frac{y^{(i)}(w^Tx^{(i)}+b)}{\left \|w \right \|} \tag{12} γ(i)=wy(i)(wTx(i)+b)(12)
几何间隔其实就是 ( 1 ) (1) (1)中的距离。
定义超平面与整个数据集的几何间隔为:
γ = min ⁡ i = 1 , ⋯   , N γ ( i ) (13) \gamma=\min \limits_{i=1,\cdots,N}\gamma^{(i)} \tag{13} γ=i=1,,Nminγ(i)(13)
物理含义为离超平面最近的点到超平面的几何距离。

定义样本点 ( x i , y i ) (x^{i},y^{i}) (xi,yi)与超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0函数间隔为:
γ ^ ( i ) = y ( i ) ( w T x ( i ) + b ) (14) {\hat \gamma}^{(i)}={y^{(i)}(w^Tx^{(i)}+b)}\tag{14} γ^(i)=y(i)(wTx(i)+b)(14)
函数间隔可以相对地表示点 x x x与超平面 w T x ( i ) + b ) w^Tx^{(i)}+b) wTx(i)+b)的远近程度(在超平面确定的情况下)
定义超平面与整个数据集的函数间隔为:
γ ^ = min ⁡ i = 1 , ⋯   , N γ ^ ( i ) (15) \hat\gamma=\min \limits_{i=1,\cdots,N}\hat\gamma^{(i)} \tag{15} γ^=i=1,,Nminγ^(i)(15)
注意,当 w w w b b b同比例变化时,函数间隔也会同比例变化,但是超平面不变,这点性质对后面的推导很重要!!!
根据上面的铺垫,SVM模型可表示为:
max ⁡ w , b γ s . t . γ ( i ) ≥ γ , i = 1 , ⋯   , N (16) \begin{aligned} \max\limits_{w,b}\quad & \gamma \\ s.t.\quad & \gamma^{(i)}\geq \gamma,\quad i=1,\cdots,N \\ \tag{16} \end{aligned} w,bmaxs.t.γγ(i)γ,i=1,,N(16)
考虑到几何间隔与函数间隔的比例关系, ( 16 ) (16) (16)可以写成:
max ⁡ w , b γ ^ ∥ w ∥ s . t . γ ^ ( i ) ≥ γ ^ , i = 1 , ⋯   , N (17) \begin{aligned} \max\limits_{w,b}\quad & \frac{\hat\gamma}{\left \|w \right \|} \\ s.t.\quad & \hat\gamma^{(i)}\geq \hat\gamma,\quad i=1,\cdots,N \\ \tag{17} \end{aligned} w,bmaxs.t.wγ^γ^(i)γ^,i=1,,N(17)
而根据前面的分析我们可以知道,我们总可以同比例缩放 ( w , b ) (w,b) (w,b)使得
γ ^ = 1 \hat\gamma=1 γ^=1,而超平面不变。因此 ( 17 ) (17) (17)可以进一步写成:
max ⁡ w , b 1 ∥ w ∥ s . t . γ ^ ( i ) ≥ 1 , i = 1 , ⋯   , N (18) \begin{aligned} \max\limits_{w,b}\quad & \frac{1}{\left \|w \right \|} \\ s.t.\quad & \hat\gamma^{(i)}\geq 1,\quad i=1,\cdots,N \\ \tag{18} \end{aligned} w,bmaxs.t.w1γ^(i)1,i=1,,N(18)
( 18 ) (18) (18)可以再进一步写成:
min ⁡ w , b 1 2 ∥ w ∥ 2 s . t . y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , ⋯   , N (19) \begin{aligned} \min\limits_{w,b}\quad & \frac{1}{2}{\left \|w \right \|}^2 \\ s.t.\quad & {y^{(i)}(w^Tx^{(i)}+b)}\geq 1,\quad i=1,\cdots,N \\ \tag{19} \end{aligned} w,bmins.t.21w2y(i)(wTx(i)+b)1,i=1,,N(19)
这样SVM就转化为了一个凸二次规划问题,可以用一些软件包方便得求解。但是这种问题的直接求解比较低效,为此可以使用Lagrange乘子法得到其对偶问题,这样不仅能简化计算,还可以为后面引入kernel的概念做铺垫。

3. SVM的Lagrange对偶问题

( 19 ) (19) (19)的每一个不等式约束引进拉格朗日乘子(Lagrange multiplier) α i ≥ 0 , i = 1 , ⋯   , N \alpha_i\geq0,i=1,\cdots,N αi0,i=1,,N,定义拉格朗日函数:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i y ( i ) ( w T x ( i ) + b ) + ∑ i = 1 N α i (20) L(w,b,\alpha)=\frac{1}{2}{\left \|w \right \|}^2-\sum_{i=1}^{N}\alpha_iy^{(i)}(w^Tx^{(i)}+b)+\sum_{i=1}^{N}\alpha_i \tag{20} L(w,b,α)=21w2i=1Nαiy(i)(wTx(i)+b)+i=1Nαi(20)
( 19 ) (19) (19)的原问题(primer problem)是如下所示的极小极大问题:
min ⁡ α max ⁡ w , b L ( w , b , α ) (21) \min\limits_{\alpha}\max\limits_{w,b}L(w,b,\alpha) \tag{21} αminw,bmaxL(w,b,α)(21)
( 19 ) (19) (19)的对偶问题(dual problem)是如下所示的极大极小问题:
max ⁡ α min ⁡ w , b L ( w , b , α ) (22) \max\limits_{\alpha}\min\limits_{w,b}L(w,b,\alpha) \tag{22} αmaxw,bminL(w,b,α)(22)
先求 min ⁡ w , b L ( w , b , α ) \min\limits_{w,b}L(w,b,\alpha) w,bminL(w,b,α)。将 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)分别对 w , b w,b w,b求导并令其等于0:
∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y ( i ) x ( i ) = 0 ∇ b L ( w , b , α ) = − ∑ i = 1 N α i y ( i ) = 0 (23) \begin{aligned} \nabla_wL(w,b,\alpha)&=w-\sum_{i=1}^N\alpha_iy^{(i)}x^{(i)}=0\\ \nabla_bL(w,b,\alpha)&=-\sum_{i=1}^N\alpha_iy^{(i)}=0\\ \tag{23} \end{aligned} wL(w,b,α)bL(w,b,α)=wi=1Nαiy(i)x(i)=0=i=1Nαiy(i)=0(23)
可得:
min ⁡ w , b L ( w , b , α ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x ( i ) T x ( i ) + ∑ i = 1 N α i (24) \min\limits_{w,b}L(w,b,\alpha)=-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j{x^{(i)}}^Tx^{(i)}+\sum_{i=1}^{N}\alpha_i \tag{24} w,bminL(w,b,α)=21i=1Nj=1Nαiαjyiyjx(i)Tx(i)+i=1Nαi(24)
因此 ( 22 ) (22) (22)可转化为:
max ⁡ α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x ( i ) T x ( i ) + ∑ i = 1 N α i s . t . α i ≥ 0 , i = 1 , ⋯   , N ∑ i = 1 N α i y ( i ) = 0 (25) \begin{aligned} \max\limits_{\alpha}\quad & -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j{x^{(i)}}^Tx^{(i)}+\sum_{i=1}^{N}\alpha_i \\ s.t.\quad &\alpha_i\geq0,i=1,\cdots,N\\ & \sum_{i=1}^N\alpha_iy^{(i)}=0\\ \tag{25} \end{aligned} αmaxs.t.21i=1Nj=1Nαiαjyiyjx(i)Tx(i)+i=1Nαiαi0,i=1,,Ni=1Nαiy(i)=0(25)
易证强对偶性成立。(原问题是凸问题且Slater条件成立)
求解出最优的 α i ∗ \alpha_i^* αi后,就可以根据 ( 23 ) (23) (23)进一步求出 w ∗ w^* w(也可以根据下面的KKT条件得到 w ∗ w^* w的公式)。那怎么求 b ∗ b^* b呢?
根据KKT条件:
y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , ⋯   , N α i ≥ 0 , i = 1 , ⋯   , N α ( y ( i ) ( w T x ( i ) + b ) − 1 ) = 0 , i = 1 , ⋯   , N ∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y ( i ) x ( i ) = 0 , i = 1 , ⋯   , N ∇ b L ( w , b , α ) = − ∑ i = 1 N α i y ( i ) = 0 , i = 1 , ⋯   , N (25) \begin{aligned} {y^{(i)}(w^Tx^{(i)}+b)} &\geq 1,\quad i=1,\cdots,N\\ \alpha_i &\geq 0,\quad i=1,\cdots,N\\ \alpha\Big({y^{(i)}(w^Tx^{(i)}+b)-1}\Big) &= 0,\quad i=1,\cdots,N\\ \nabla_wL(w,b,\alpha)=w-\sum_{i=1}^N\alpha_iy^{(i)}x^{(i)}&=0,\quad i=1,\cdots,N\\ \nabla_bL(w,b,\alpha)=-\sum_{i=1}^N\alpha_iy^{(i)}&=0,\quad i=1,\cdots,N\\ \tag{25} \end{aligned} y(i)(wTx(i)+b)αiα(y(i)(wTx(i)+b)1)wL(w,b,α)=wi=1Nαiy(i)x(i)bL(w,b,α)=i=1Nαiy(i)1,i=1,,N0,i=1,,N=0,i=1,,N=0,i=1,,N=0,i=1,,N(25)
可以进一步求出 b b b
我们可以断定, ∃ α j ∗ > 0 \exists \alpha_j^*>0 αj>0(否则可推出 w = 0 w=0 w=0,违背超平面的定义)。注意到,当 α j ∗ > 0 \alpha_j^*>0 αj>0时,意味着 y ( i ) ( w T x ( i ) + b ) − 1 = 0 {y^{(i)}(w^Tx^{(i)}+b)-1}=0 y(i)(wTx(i)+b)1=0,也即这时候样本点在最大间隔边界上(称为支持向量)。

这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
w ∗ w^* w的表达式为:
w ∗ = ∑ i ∈ S α i y ( i ) x ( i ) (26) w^*=\sum_{i\in S}\alpha_iy^{(i)}x^{(i)}\tag{26} w=iSαiy(i)x(i)(26)
其中 S S S表示支持向量的下标集合。
b ∗ b^* b的表达式为:
b ∗ = y j − ∑ i ∈ S α i y ( i ) x ( i ) x ( j ) (27) b^*=y_j-\sum_{i\in S}\alpha_iy^{(i)}x^{(i)}x^{(j)}\tag{27} b=yjiSαiy(i)x(i)x(j)(27)
于是,理论上可以选取任意支持向量求解 b ∗ b^* b。注意到对任意支持向量 ( x ( s ) , y ( s ) ) (x^{(s)},y^{(s)}) (x(s),y(s)),都有:
y ( s ) ( w T x ( s ) + b ) − 1 = 0 (28) {y^{(s)}(w^Tx^{(s)}+b)-1}=0\tag{28} y(s)(wTx(s)+b)1=0(28)
通过 ( 26 ) (26) (26)即可求出 b ∗ b^* b。实际上可以采用一种更鲁棒的做法:使用所有支持向量求解的结果的平均值:
b ∗ = 1 ∥ S ∥ ∑ s ∈ S ( y ( s ) − w T x ( s ) ) (29) b^*=\frac{1}{\left \| S\right \|}\sum_{s\in S}({y^{(s)}-w^Tx^{(s)}})\tag{29} b=S1sS(y(s)wTx(s))(29)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值