本篇文章主要写感知机和SVM。
感知机(PLA)
如上图,假设我们可以用一条直线wx+b=0wx+b=0wx+b=0将数据均分为两类。一面为正,一面为负。在转动的过程中,我们的需求是使所有的点都分类正确,即是一个使错误分类点减少点过程。如果以错误分类点个数为目标函数,不容易优化目标函数。我们注意到对于任意的点有y(wx+b)>0y(wx+b)>0y(wx+b)>0。我们的目标可转为使−(wx+b)-(wx+b)−(wx+b)减小,直到为0。直线上某个点到超平面的距离为∣wx+b∣∣∣W∣∣ \frac{|wx+b|}{||W||}∣∣W∣∣∣wx+b∣
由于成倍的放大或者缩小并不能改变上式的大小。故我们可以令∣∣W∣∣=1||W||=1∣∣W∣∣=1,点到直线的距离转换为1∣∣W∣∣\frac{1}{||W||}∣∣W∣∣1
则损失函数可表示为
L(w,b)=1∣∣W∣∣∑yi(wxi+b)=−∑(wxi+b)L(w,b)=\frac{1}{||W||}\sum y_i(wx_i+b)=-\sum (wx_i+b) L(w,b)=∣∣W∣∣1∑yi(wxi+b)=−∑(wxi+b)
s.t.xi∈M,M为错误分类集s.t.x_i \in M,M为错误分类集s.t.xi∈M,M为错误分类集$
损失函数知道了,那我们如何让机器学习呢?思路是,遍历数据中的每一个点,当其为错误分类点时,我们就使线往错误的方向偏斜一点,一直重复,直到数据完全分类正确为止。那该倾斜多少呢?林轩田和李航分别介绍了两种方法。
- 林轩田:为方便叙述,把b纳入W里,即W=(W0,W1,....)W=(W_0,W_1,....)W=(W0,W1,....).对于一个点为正类,被误分为负类,则点在直线的下方(因为W为直线法线方向,角度=90+<线,x⃗\vec xx>),Wtxn<0,<x⃗,W⃗>>90°W_tx_n<0,<\vec x ,\vec W> >90°Wtxn<0,<x,W>>90°。我们需要使线向小于90°90°90°的方向偏转,通常的做法为W⃗=yX⃗+W⃗\vec W=y\vec X + \vec WW=yX+W。
如果一个点为负类,误分为正类,Wtxn>0,<x⃗,W⃗><90°W_tx_n>0,<\vec x ,\vec W> <90°Wtxn>0,<x,W><90°,则使线向大于90°90°90°的方向偏转,W⃗=yX⃗+W⃗\vec W=y\vec X + \vec WW=yX+W。
则W的最终更新方式为 W⃗=yX⃗+W⃗\vec W=y\vec X + \vec WW=yX+W - 李航:对于某个误分类点,他离线的距离为−(wxi+b)-(wx_i+b)−(wxi+b),是W,b的线性函数,连续可导。则L(W,b)L(W,b)L(W,b)连续可导。在某一个误分类点,使线向误分类点处的负梯度方向偏斜线时,能使−(wxi+b)-(wx_i+b)−(wxi+b)变小,即使线向误分类点靠近。则函数的梯度为
∇WL(W,b)=−∑yixi,xi∈M\nabla _WL(W,b)=-\sum y_ix_i,x_i\in M∇WL(W,b)=−∑yixi,xi∈M
∇bL(W,b)=−∑yi,xi∈M\nabla _bL(W,b)=-\sum y_i,x_i\in M∇bL(W,b)=−∑yi,xi∈M
故W的更新方式为
W=W+ηyixiW = W + \eta y_ix_iW=W+ηyixi
W=W+ηyiW = W + \eta y_iW=W+ηyi
两种方式的思路都是使线向错误分类的点偏斜,逐步纠正错误。不同点是偏斜的方向大小不一样。
上面只说了如何转动线使误分类点减少?但是能不能最终使分类完全正确?能不能使这个迭代过程停下来?
证明PLA能在有限步内将线性可分数据集完全分类正确
证明:因为线性可分,一定存在一条线使数据完全正确分类。取这个时候的单位法向量为wfw_fwf。对任意点有
yi(wfxi+b)≥γ>0,γ=min{yi(wxi+b)}y_i(w_fx_i+b)\geq \gamma>0,\gamma= min \{y_i(wx_i+b)\}yi(wfxi+b)≥γ>0,γ=min{yi(wxi+b)}
又每次更新错误的点时,都会W。如果更新要停下来,则wk趋近于wfw_k趋近于w_fwk趋近于wf,两者的內积增大,有wfwk=wf(wk−1+ηyixi)≥wfwk−1+γ≥kηγ  ①w_fw_k=w_f(w_{k-1}+\eta y_ix_i)\geq w_fw_{k-1}+\gamma\geq k\eta\gamma \;①wfwk=wf(wk−1+ηyixi)≥wfwk−1+γ≥kηγ①
对每一次更新www都是使用的公式都是wk+1=wk+ηyixiw_{k+1} = w_k + \eta y_ix_iwk+1=wk+ηyixi
则有∣∣wk∣∣2=∣∣wk−1+ηyixi∣∣2≤∣∣wk−1∣∣2+2ηyiwk−1+∣∣ηyixi∣∣2||w_{k}||^2 = ||w_{k-1} + \eta y_ix_i||^2 \leq||w_{k-1} ||^2+2\eta y_iw_{k-1} +||\eta y_ix_i||^2∣∣wk∣∣2=∣∣wk−1+ηyixi∣∣2≤∣∣wk−1∣∣2+2ηyiwk−1+∣∣ηyixi∣∣2
≤∣∣wk−1∣∣2+0+∣∣ηxi∣∣2\leq ||w_{k-1} ||^2+0+||\eta x_i||^2≤∣∣wk−1∣∣2+0+∣∣ηxi∣∣2
≤kη2∣∣xi∣∣2≤kη2R2,R=max∣∣xi∣∣  ②\leq k\eta^2||x_i||^2 \leq k\eta^2R^2,R= max||x_i||\;②≤kη2∣∣xi∣∣2≤kη2R2,R=max∣∣xi∣∣②
联立①②式,可得
kηγ≤wfwk<∣∣wf∣∣  ∣∣wk∣∣≤kηRk\eta\gamma \leq w_fw_k<||w_f||\;||w_k||\leq \sqrt k\eta Rkηγ≤wfwk<∣∣wf∣∣∣∣wk∣∣≤kηR
⟹k≤R2γ2\Longrightarrow k\leq \frac {R^2}{\gamma ^2}⟹k≤γ2R2
说明经过有限次偏转后总是能停止更新,达到完全分类的目的。
感知机的对偶形式
上面提到的成为原始形式。现在来介绍他的对偶形式。
每次更新的公式如下:
W=W+ηyixiW = W + \eta y_ix_iW=W+ηyixi
W=W+ηyiW = W + \eta y_iW=W+ηyi
如果把W初始化为0,则
W=∑niηyixiW = \sum n_i\eta y_ix_iW=∑niηyixi
W=∑niηyiW = \sum n_i\eta y_iW=∑niηyi
其中nin_ini为对应点更新的次数。这个时候完全转换为了只有样本点有关的表达式。如果一个点更新的次数越多,越不容易分类正确,则它离线越近。
对偶形式也是收敛的,从数学上看,只是更新了公式的形式而已。
上面提到的感知机中分类器都是使用的线,其实只有在二维空间中才能用线,在多维空间中,线对于的是超平面,也是成立的。
但是现实世界中的数据往往是线性不可分的。那我们该怎么做呢?我们可以引入松弛变量ξ,当L(w,b)<ξ,\xi,当L(w,b) <\xi,ξ,当L(w,b)<ξ,我们人为停止更新。讲人话就是我们允许出现错误,但是错误点的比例要小,错误点离超平面的距离要尽量近。
梯度下降
机器学习的很多一大任务就是最优化目标函数,使风险函数最小化。对于一个连续可导的函数,我们可以直接求出它的解析解。而对于一个非连续可导的函数,无法求出其解析解,往往通过数值逼近来求其近似解。
在函数的某个点,负梯度方向上升函数值下降最快的方向。故我们的思路是向着负梯度的方向更新数据。这样可以比较快的得到较小的函数值。
根据一阶泰勒展开有
Ein≈Ein(wk)+∇Ein(wt)η,  s.t.η=某个(x⃗−x⃗k)E_{in} \approx E_{in}(w_k) + \nabla E_{in}(w_t) \eta,\; s.t.\eta=某个(\vec x-\vec x_k)Ein≈Ein(wk)+∇Ein(wt)η,s.t.η=某个(x−xk)
如果每一次我们都选择一个较小的步长,向负梯度方向更新,则新的损失函数和旧的损失函数相近,不会离得太远。这样我们就可以摸着石头过河,一步一步尝试向前更新。因为函数的极值点处,梯度为0.故当梯度绝对值小于阈值时,我们停止更新。
可以把函数极小化的过程比作球从山上往下滚。在一座山上,球要想快速的往下滚动,他的方向需要为斜坡向下,这样摩擦力最小。经过一段时间后,球总能停留在某个低洼之地。这个位置一定是是一个极点,却不一定是整座山附近最低的点,甚至离最低的点也较远。
如上图,如果每次更新的幅度太小,则需要更新很多次;如果幅度太大,可能永远也得不到解。所以我们需要选择一个合适的大小的步长。
我们通常采用变步长,最开始的时候一般都离最低点较远,我们采取大步长,随着时间的进行,步长慢慢变小。例如设置步长η=1t\eta= \frac 1{\sqrt t}η=t1
SVM
对于PLA,我们获得的线往往并不惟一。如下图:
三条线都是可行解。但是点到直线的最近距离是依次增加的。测量误差是不可避免的,如点离线较近,更容易分错。通常线离数据点越远,越不容易分错,对未知数据也有更好的泛化能力。故我们希望找到这么一条线,不仅正确分类数据,且各个数据点都尽量离超平面较远。
函数间隔:数据集到分割超平面的函数间隔为γ^=min  yi(wxi+b)\hat \gamma =min \;y_i(wx_i+b)γ^=minyi(wxi+b)。
则目标函数变为
max  γ^∣∣W∣∣,  s.t.yi(wxi+b)>γ^max\;\frac {\hat \gamma}{||W||},\; s.t.y_i(wx_i+b)>\hat \gammamax∣∣W∣∣γ^,s.t.yi(wxi+b)>γ^
几何间隔:数据集到超平面的几何间隔定义为γ=min  yi(wxi+b)∣∣w∣∣\gamma =min \;\frac{y_i(wx_i+b)}{||w||}γ=min∣∣w∣∣yi(wxi+b)。当∣∣w∣∣=1||w||=1∣∣w∣∣=1时,几何间隔和函数间隔一致。另外成倍缩放w,b并不会改变几何间隔的大小,这是一个很好的性质。故取γ^=1\hat \gamma=1γ^=1,数据集到超平面的距离变为1∣∣W∣∣\frac {1}{||W||}∣∣W∣∣1,则目标函数变为
max  1∣∣W∣∣,  s.t.yi(wxi+b)−1>0max\;\frac {1}{||W||},\; s.t.y_i(wx_i+b)-1>0max∣∣W∣∣1,s.t.yi(wxi+b)−1>0。
通常我们都是求最小化,故我们需要做点转换:对目标函数求倒数,从求最大变为最小;范数||W||为平方根,求梯度较麻烦,对其平方;为了求梯度方便,对目标函数乘12\frac 1221。这一系列的操作并不改变解,故目标函数转换为
min  12WWT,  s.t.yi(wxi+b)−1>0min\;\frac 12WW^T,\; s.t.y_i(wx_i+b)-1>0min21WWT,s.t.yi(wxi+b)−1>0
这是一个凸二次规划问题。那该如何解它呢?如果有解,通常只需引入拉格朗日乘子就可以了。但是它是否有解呢?是否有多个解呢?
证明线性可分数据集上的SVM超平面有且只有一个
存在性:
由于数据线性可分,故存在可行解。由于最优化函数有下界,故一定存在最优解。
又数据集分正负两类,故w=0不是最优解。故存在∣∣w∣∣≠0w = 0不是最优解。故存在||w|| =\not 0w=0不是最优解。故存在∣∣w∣∣≠0的超平面。
唯一性:
若存在(w1,b1),(w2,b2)(w_1,b_1),(w_2,b_2)(w1,b1),(w2,b2)都是最优解,则Loss的值一样,∣∣w1∣∣=∣∣w1∣∣=cLoss的值一样,||w_1||=||w_1||=cLoss的值一样,∣∣w1∣∣=∣∣w1∣∣=c
记w=w1+w22,b=b1+b22w=\frac{w_1+w_2}2,b=\frac{b_1+b_2}2w=2w1+w2,b=2b1+b2,则w,b是可行解(因$y_i(wx_i+b)-1\geq0)。可得
c≤∣∣w∣∣≤12∣∣w1∣∣+12∣∣w2∣∣=cc\leq||w||\leq\frac12||w_1||+\frac12||w_2||=cc≤∣∣w∣∣≤21∣∣w1∣∣+21∣∣w2∣∣=c
(最左边是因为假设为可行解,故大于等于c,中间是范数三角不等式的性质)
⟹∣∣w∣∣=12∣∣w1∣∣+12∣∣w2∣∣\Longrightarrow ||w||=\frac12||w_1||+\frac12||w_2||⟹∣∣w∣∣=21∣∣w1∣∣+21∣∣w2∣∣
⟹w1=w2\Longrightarrow w_1= w_2⟹w1=w2
(由∣∣w∣∣=12∣∣w1∣∣+12∣∣w2∣∣=c,w1、w2等范数,可知w1=±w2||w||=\frac12||w_1||+\frac12||w_2||=c,w_1、w_2等范数,可知w_1=\pm w_2∣∣w∣∣=21∣∣w1∣∣+21∣∣w2∣∣=c,w1、w2等范数,可知w1=±w2,若反向,则w=0,矛盾)
再证b1=b2b_1=b_2b1=b2:
现在两个最优解变为(w,b1),(w,b2)(w,b_1),(w,b_2)(w,b1),(w,b2)。
设x1′、x2′∈{xi∣yi=1}分别对应(w,b1),(w,b2)使条件不等号成立x_1'、x_2'\in \{x_i|y_i=1\} 分别对应(w,b_1),(w,b_2)使条件不等号成立x1′、x2′∈{xi∣yi=1}分别对应(w,b1),(w,b2)使条件不等号成立
设x1′′、x2′′∈{xi∣yi=−1}分别对应(w,b1),(w,b2)使条件不等号成立x_1''、x_2''\in \{x_i|y_i=-1\} 分别对应(w,b_1),(w,b_2)使条件不等号成立x1′′、x2′′∈{xi∣yi=−1}分别对应(w,b1),(w,b2)使条件不等号成立
则有:
b1=12(wx1′+wx1′′)b_1=\frac 12(wx_1'+wx_1'')b1=21(wx1′+wx1′′)b1=12(wx2′+wx2′′)b_1=\frac 12(wx_2'+wx_2'')b1=21(wx2′+wx2′′)
b1−b2=12[w(x1′−x2′)+w(x1′′−x2′′)]b_1-b_2=\frac 12[w(x_1'-x_2')+w(x_1''-x_2'')]b1−b2=21[w(x1′−x2′)+w(x1′′−x2′′)]
又
wx1′+b2≥1=wx2′+b2wx_1'+b_2\geq1=wx_2'+b_2wx1′+b2≥1=wx2′+b2wx2′+b1≥1=wx1′+b1wx_2'+b_1\geq1=wx_1'+b_1wx2′+b1≥1=wx1′+b1
⟹w(x1′−x2′)=0\Longrightarrow w(x_1'-x_2')=0⟹w(x1′−x2′)=0
同理可得w(x1′′−x2′′)=0w(x_1''-x_2'')=0w(x1′′−x2′′)=0
⟹b1=b2\Longrightarrow b_1=b_2⟹b1=b2
拉格朗日乘子和引出KKT条件
上面介绍了解是存在的且唯一,上面也提到了一般可以用拉格朗日乘子来辅助解。具体怎样做呢?
原始问题
minx∈Rn  f(x)\min_{x\in R^n} \;f(x)x∈Rnminf(x) s.t.  ci(x)≤0,i=1,2,..,ks.t.\;c_i(x)\leq 0, i=1,2,..,ks.t.ci(x)≤0,i=1,2,..,k hj(x)≤0,j=1,2,..,lh_j(x)\leq 0, j=1,2,..,lhj(x)≤0,j=1,2,..,l
引入拉格朗日乘子L(x,α,β)=f(x)+∑iαici(x)+∑jβjhj(x),  αi≥0,βj≥0L(x,\alpha,\beta)=f(x)+\sum_i\alpha_ic_i(x)+\sum_j\beta_jh_j(x),\;\alpha_i\geq0,\beta_j\geq0L(x,α,β)=f(x)+i∑αici(x)+j∑βjhj(x),αi≥0,βj≥0
记θP=maxL(x,α,β)\theta_P=\max L(x,\alpha,\beta)θP=maxL(x,α,β),当x满足约束条件时,θP=f(x)\theta_P=f(x)θP=f(x)
(因为ci(x),hj(x)均小于0,θP的上界就是f(x)c_i(x),h_j(x)均小于0,\theta_P的上界就是f(x)ci(x),hj(x)均小于0,θP的上界就是f(x))
这时原始问题等价于minxf(x)=minxmaxα,β;α≥0L(x,α,β)\min_x f(x)=\min_x \max_{\alpha,\beta;\alpha\geq0} L(x,\alpha,\beta)xminf(x)=xminα,β;α≥0maxL(x,α,β)
这个时候就把条件引入了目标函数中,有利于求解。
对偶问题:
和感知机一样,还有一个对偶形式。
定义
θD(α,β)=minxL(x,α,β)\theta_D(\alpha,\beta)=\min_x L(x,\alpha,\beta)θD(α,β)=xminL(x,α,β)
极大化问题
maxα,β;α≥0θD(α,β)=maxα,β;α≥0minxL(x,α,β)\max_{\alpha,\beta;\alpha\geq0} \theta_D(\alpha,\beta)=\max_{\alpha,\beta;\alpha\geq0}\min_x L(x,\alpha,\beta)α,β;α≥0maxθD(α,β)=α,β;α≥0maxxminL(x,α,β)
称之为原始问题的最优化问题。
KKT条件——原始问题等价于对偶问题的条件
假设f(x)和ci(x)是凸函数,hj(x)是仿射函数,且ci(x)假设f(x)和c_i(x)是凸函数,h_j(x)是仿射函数,且c_i(x)假设f(x)和ci(x)是凸函数,hj(x)是仿射函数,且ci(x)严格满足约束条件,则两个问题等价的充要条件是他们的解满足:
∇xL(x,α,β)=0\nabla_x L(x,\alpha,\beta)=0∇xL(x,α,β)=0 ∇αL(x,α,β)=0\nabla_\alpha L(x,\alpha,\beta)=0∇αL(x,α,β)=0 ∇βL(x,α,β)=0\nabla_\beta L(x,\alpha,\beta)=0∇βL(x,α,β)=0 αici(x)=0,  KKT的对偶互补条件\alpha_ic_i(x)=0,\;KKT的对偶互补条件αici(x)=0,KKT的对偶互补条件 ci(x)≤0c_i(x)\leq0ci(x)≤0 αi≤0\alpha_i\leq0αi≤0 hj(x)=0h_j(x)=0hj(x)=0
SVM的对偶形式
引入拉个朗日乘子,有L(x,α,β)=12∣∣w∣∣2−∑i=0N−1αiyi(wxi+b)+∑i=0N−1αi  ①L(x,\alpha,\beta)=\frac12||w||^2-\sum_{i=0}^{N-1}\alpha_iy_i(wx_i+b)+\sum_{i=0}^{N-1}\alpha_i\;①L(x,α,β)=21∣∣w∣∣2−i=0∑N−1αiyi(wxi+b)+i=0∑N−1αi①
求该问题的极大极小问题,有
∇w=w−∑i=0N−1αiyixi=0\nabla_w=w-\sum_{i=0}^{N-1}\alpha_iy_ix_i=0∇w=w−i=0∑N−1αiyixi=0∇b=−∑i=0N−1αiyi=0\nabla_b=-\sum_{i=0}^{N-1}\alpha_iy_i=0∇b=−i=0∑N−1αiyi=0
有w=∑i=0N−1αiyixiw=\sum_{i=0}^{N-1}\alpha_iy_ix_iw=i=0∑N−1αiyixi∑i=0N−1αiyi=0\sum_{i=0}^{N-1}\alpha_iy_i=0i=0∑N−1αiyi=0
带入①式可得minw,bL(x,α,β)=−12∑i∑jαiαjβiβj(xi⋅xj)+∑iαi,  ②\min_{w,b}L(x,\alpha,\beta)=-\frac12\sum_i\sum_j\alpha_i\alpha_j\beta_i\beta_j(x_i\cdot x_j)+\sum_i\alpha_i,\;②w,bminL(x,α,β)=−21i∑j∑αiαjβiβj(xi⋅xj)+i∑αi,②
即可得到对偶形式的最优化问题
maxx12∑i∑jαiαjβiβj(xi⋅xj)−∑iαi\max_x \frac12\sum_i\sum_j\alpha_i\alpha_j\beta_i\beta_j(x_i\cdot x_j)-\sum_i\alpha_ixmax21i∑j∑αiαjβiβj(xi⋅xj)−i∑αi s.t.  ∑iαiyi=0s.t. \;\sum_i\alpha_iy_i=0s.t.i∑αiyi=0 αi≥0\alpha_i\geq0αi≥0
如果原始问题的最优解存在,则根据kkt条件有w=∑i=0N−1αiyixiw=\sum_{i=0}^{N-1}\alpha_iy_ix_iw=i=0∑N−1αiyixi
又∃αj>0(否则w=0,矛盾),αj(yj(wxj+b)−1)=0,yj2=1\exist \alpha_j>0(否则w=0,矛盾),\alpha_j(y_j(wx_j+b)-1)=0,y_j^2=1∃αj>0(否则w=0,矛盾),αj(yj(wxj+b)−1)=0,yj2=1,把w带入有b=yi−∑αiyi(xi⋅ xj)b=y_i-\sum\alpha_iy_i(x_i\cdot\ x_j)b=yi−∑αiyi(xi⋅ xj)
为何叫支撑向量机?
根据KKT对偶互补条件αici(x)=0\alpha_ic_i(x)=0αici(x)=0可知。
- 当αi=0时,对于的样本点与目标函数无关当\alpha_i=0时,对于的样本点与目标函数无关当αi=0时,对于的样本点与目标函数无关
- 当αi>0时,ci(x)=0。即yi(wxi+b)−1=0当\alpha_i>0时,c_i(x)=0。即y_i(wx_i+b)-1=0当αi>0时,ci(x)=0。即yi(wxi+b)−1=0。目标函数只有满足这些条件的样本点有关。这些点称为支撑向量。
- 支撑向量都在间隔边界上。
处理线性不可分时的情形
上面提到的SVM或者感知机都能很完美的分类线性可分的数据集,然而现实世界中的数据集往往是线性不可分的。对于线性不可分的数据集,我们通常引入一个松弛变量ξ\xiξ,使数据集的约束条件成立。即yi(wxi+b)−1+ξi≥0y_i(wx_i+b)-1+\xi_i\geq0yi(wxi+b)−1+ξi≥0
背后的意义就是,我们允许数据中存在outlier,允许分类出错,不追求完美,只要能达到我们想要的精度即可。
则目标函数为min12wwT+C∑ξi,  C>0\min\frac12ww^T+C\sum\xi_i,\;C>0min21wwT+C∑ξi,C>0
C是惩罚参数,代表对误分类的容忍程度。目标函数表达了两个含义:①前半部分使间隔尽量大,即泛化误差EoutE_{out}Eout尽量小;②后半部分使误分类个数尽量少,即误差EinE_{in}Ein尽量小。C用来调节二者之间的平衡。
原始形式
上述方式得到的间隔称为软间隔。通过上述思路,我们可以像训练线性可分时一样训练线性不可分的数据集。即得线性不可分时的SVM原始形式:
minw,b,ξ  12wwT+C∑ξi\min_{w,b,\xi}\;\frac12ww^T+C\sum\xi_iw,b,ξmin21wwT+C∑ξi s.t.  yi(wxi+b)−1+ξi≥0s.t.\;y_i(wx_i+b)-1+\xi_i\geq0s.t.yi(wxi+b)−1+ξi≥0ξi≥0\xi_i\geq0ξi≥0
非线性的SVM原始形式仍然是一个凸二次规划问题,故解是存在的。可以像线性可分时一样证明w是唯一的,但是不能证明b唯一的.(其实b的解是一个区间)
对偶形式
对偶形式如下:
minα  12∑i∑jαiαjyiyj(xi⋅xj)−∑iαi\min_\alpha\;\frac12\sum_i\sum_j\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_i\alpha_iαmin21i∑j∑αiαjyiyj(xi⋅xj)−i∑αi s.t.∑iαiyi=0s.t.\sum_i\alpha_iy_i=0s.t.i∑αiyi=00≤αi≤C0\leq\alpha_i\leq C0≤αi≤C
推导过程和线性可分时一致:
引入拉格朗日乘子L(w,b,ξ,α,μ)=12wwT+C∑iξi−∑iαi(yi(wxi+b)−1+ξi)−∑iμiξiL(w,b,\xi,\alpha,\mu)=\frac12ww^T+C\sum_i\xi_i-\sum_i\alpha_i(y_i(wx_i+b)-1+\xi_i)-\sum_i\mu_i\xi_iL(w,b,ξ,α,μ)=21wwT+Ci∑ξi−i∑αi(yi(wxi+b)−1+ξi)−i∑μiξis.t.  ξi≥0,μi≥0s.t.\;\xi_i\geq0,\mu_i\geq0s.t.ξi≥0,μi≥0
对偶问题是一个极大极小问题。则先求极小后极大。对w,b,ξiw,b,\xi_iw,b,ξi求偏导数有∇w=w−∑iyixi=0\nabla_w=w-\sum_iy_ix_i=0∇w=w−i∑yixi=0 ∇b=−∑iαiyi=0\nabla_b=-\sum_i\alpha_iy_i=0∇b=−i∑αiyi=0 ∇ξi=C−αi−μi=0\nabla_{\xi_i}=C-\alpha_i-\mu_i=0∇ξi=C−αi−μi=0
有w=∑iyixiw=\sum_iy_ix_iw=i∑yixi ∑iαiyi=0\sum_i\alpha_iy_i=0i∑αiyi=0 C−αi−μi=0C-\alpha_i-\mu_i=0C−αi−μi=0
反带入并对α\alphaα,求极大再消去μi\mu_iμi,即可得对偶形式。
KKT条件在线性不可分时仍然适用。可求得解w=∑iαiyixiw=\sum_i\alpha_iy_ix_iw=i∑αiyixib=yj−∑iyiαi(xi⋅xj)b=y_j-\sum_iy_i\alpha_i(x_i\cdot x_j)b=yj−i∑yiαi(xi⋅xj)
软间隔的支撑向量?
数据线性不可分时,把αi>0\alpha_i>0αi>0的点称为支撑向量。此时他们与线性可分时稍有不同。
- 若α<C,则ξ=0,支撑向量SV恰好落在间隔边界线上若\alpha<C,则\xi=0,支撑向量SV恰好落在间隔边界线上若α<C,则ξ=0,支撑向量SV恰好落在间隔边界线上
- 若α=C,0<ξi<1若\alpha=C,0<\xi_i<1若α=C,0<ξi<1,则分类正确,sv落在分离超平面和间隔边界之间
- 若α=C,ξi=1若\alpha=C,\xi_i=1若α=C,ξi=1,则sv在分离超平面上
- 若α=C,ξi>1若\alpha=C,\xi_i>1若α=C,ξi>1,则sv在分离超平面误分类的一侧
当数据线性可分时,支撑向量都在间隔边界上。这个毕竟容易理解。
当数据线性不可分时
非线性时的处理技巧——kernel
上面提到的算法只能解决线性的,然而现实世界中经常遇到非线性的数据集。
如果存在真模型,则一定存在一个真决策函数f(x),根据泰勒展开,则f(x)顶多可以展开为无限维的。则展开式是一个xnx^nxn的线性组合。也即我们通过对原来的空间做转换后,可以在一个更高维的空间里使线性方法来处理非线性问题。
需要解决几个问题
- 转换后,数据量增加,存储和计算成本都增加
- 空间转换的映射函数有无要求
- 空间维度增加后vc dimension增加,容易过拟合
kernel可以降低计算成本
假设我们已经做了特征变换zn=ϕ(xn)z_n=\phi(x_n)zn=ϕ(xn),由②式可知目标函数为
minw,bL(z,α,β)=−12∑i∑jαiαjβiβj(zi⋅zj)+∑iαi,  ③\min_{w,b}L(z,\alpha,\beta)=-\frac12\sum_i\sum_j\alpha_i\alpha_j\beta_i\beta_j(z_i\cdot z_j)+\sum_i\alpha_i,\;③w,bminL(z,α,β)=−21i∑j∑αiαjβiβj(zi⋅zj)+i∑αi,③
可知计算量主要在于zi⋅zjz_i\cdot z_jzi⋅zj。它可以分为两步:①做特征转;②做內积。
假设特征转换后的维度为d^\widehat dd,原始特征维度为ddd。则特征转换导致空间维度增大,增加了计算成本。但在某些情况下将这两步结合,能大大减少运算量。
以二阶多项式的內积为例。二阶多项式如下:
转换后作內积有:
时间复杂度从两步分开做时的O(d2)变为了O(d)两步分开做时的O(d^2)变为了O(d)两步分开做时的O(d2)变为了O(d),大大降低了运算量。另外与d^\widehat dd没有任何关系,进一步降低了运算量。
我们把合并特征转换和內积运算称为Kernel Function。林轩田老师把这种技巧称为“偷吃步”。记为K(x,y)=ϕ(x)⋅ϕ(y)K(x,y)=\phi(x)\cdot\phi(y)K(x,y)=ϕ(x)⋅ϕ(y)
kernel函数的要求
如果我们能找到Kernel Function,将会大大的降低运算量。那Kernel Function需要满足什么条件呢?
Mercer 定理:
一个函数是核函数的充要条件是:
- K的gram矩阵是是半正定的
- K是对称函数
选择合适的kernel
通常一个kernel是比较难构造的,我们往往使用现有的kernel
①多项式kernel:KQ(x,y)=(ξ+γx⋅y)QK_Q(x,y)=(\xi+\gamma x \cdot y)^QKQ(x,y)=(ξ+γx⋅y)Q
通常用于特征多、样本多的情形。
线性核:当Q=1时,就是线性可分的情况。特点:
- 计算简单、快速,易于理解(特别是2、3维空间可以直接从视觉来帮助理解)
- 对于线性不可分时束手无策
多项式核特点:
- 阶数可以自由选择,通常更贴近真实分布。
- Q很大时,K的数值范围波动很大,且参数个数相较多,不容易选择。
②高斯核(高斯径向基函数):KQ(x,y)=e−γ∣x−y∣K_Q(x,y)=e^{-\gamma |x-y|}KQ(x,y)=e−γ∣x−y∣
是把有限空间映射到无穷维空间。适用于特征少,样本多的情形。(这种情形也可以做特征工程来使用①)
特点:
- 边界更加复杂多样,更容易使使EinE_{in}Ein更小,K的数值波动小,只有一个参数,容易选择
- 把有限空间映射到无穷维空间,未计算出w,计算速度相对线性低。且更容易过拟合。
③字符串核,李航的书里提到,暂时无接触。