上一篇,讲了线性支持向量机SVM,将其构造成约束最优化问题,求出最优解作为分类决策函数。我们将其定义为原始最优化问题(primal)

为了给支持向量机引入更高级的特性,比如核函数,我们首先将应用拉格朗日对偶性,通过求解对偶问题(dual),来得到原始问题的最优解。

关于拉格朗日对偶性 及 KKT条件的详细解答,可以看之前的文章《广义拉格朗日函数 及其 对偶算法》

上节课的约束最优化问题,也就是原始最优化问题如下:

$$ \begin{aligned} min_w \quad & f(w)& \\ s.t. \quad & g_i(w) \le 0,\quad i=1,...,k\\ & h_i(w) =0,\quad i=1,...,l\\ \end{aligned} $$

广义拉格朗日函数(generalized Lagrangian function)的定义如下:

$$ L(w,\alpha,\beta)=f(w)+\sum^k_{i=1}\alpha_ig_i(w)+\sum^l_{i=1}\beta_ih_i(w) $$

广义拉格朗日函数和其对偶形式的关系如下:

$$ d^\ast = \max_{\alpha,\beta:\alpha_i\geq 0}\min_w L(w,\alpha,\beta) \leq \min_w \max_{\alpha,\beta:\alpha_i\geq 0}L(w,\alpha,\beta) =p^\ast $$

也就是说,对偶问题是原始问题的下限。想让他们相等,需要满足下面的KKT条件:

$$ \begin{aligned} \frac{\partial}{\partial w}L(w^\ast,\alpha^\ast,\beta^\ast) &= 0,\quad i=1,...,n & \text(K1)\\ \frac{\partial}{\partial \alpha}L(w^\ast,\alpha^\ast,\beta^\ast) &= 0,\quad i=1,...,n & \text(K2)\\ \frac{\partial}{\partial \beta}L(w^\ast,\alpha^\ast,\beta^\ast)&= 0 ,\quad i=1,...,l & \text(K3)\\ \alpha_i^\ast g_i(w^\ast)&= 0,\quad i=1,...,k & \text(K4)\\ g_i(w^\ast)&\leq 0,\quad i=1,...,k & \text(K5)\\ \alpha_i^\ast &\geq 0,\quad i=1,...,k &\text(K6)\\ h_j(x^*)&=0,\quad j=1,...,l&\text(K7) \end{aligned} $$

原始问题是这样的:

$$ \begin{aligned} min_{\gamma,w,b} \quad & \frac12 \parallel w\parallel ^2\\ &\\ s.t. \quad &y^{(i)}(w^Tx^{(i)}+b)\geq 1,\quad i=1,...,m\\ \end{aligned} $$

我们可以将原始问题定义为广义拉格朗日函数,用$g$来代替约束条件,也就是:

$$ g_i(w)=-y^{(i)}(w^Tx^{(i)}+b)+1\leq 0 $$

原始问题的拉格朗日函数形式如下

$$ L(w,b,\alpha )=\frac{1}{2}\parallel w\parallel ^2 - \sum^N_{i=1}\alpha_i [y^{(i)}(w^Tx^{(i)}+b)-1] $$

根据KKT条件(K1)($b$也算在拉格朗日函数的$w$中),可知满足KKT条件的$w$与$b$,必满足下面公式:

$$ \begin{aligned} \frac{\partial}{\partial w} L(w,b,\alpha)&=w-\sum^N_{i=1}\alpha_i y^{(i)}x^{(i)} =0\\ \frac{\partial}{\partial b}L(w,b,\alpha)&=\sum^N_{i=1}\alpha_i y^{(i)}=0 \end{aligned} $$

从中,可以得出:

$$ \begin{aligned} &w=\sum^N_{i=1}\alpha_i y^{(i)}x^{(i)}\\ &\sum^N_{i=1}\alpha_i y^{(i)}=0 \end{aligned} $$

满足KKT条件必须满足这两个公式,所以可以将它们带入公式中,可得:

$$ \begin{aligned} L(w,b,\alpha)&=\frac{1}{2}\parallel w\parallel ^2 - \sum^N_{i=1}\alpha_i [y^{(i)}(w^Tx^{(i)}+b)-1]\\ &=\sum^N_{i=1}\alpha_i-\frac12 \sum^N_{i,j=1} y^{(i)}y^{(j)}\alpha_i\alpha_j(x^{(i)})^Tx^{(j)}-b\sum^N_{i=1}\alpha_i y^{(i)} \end{aligned} $$

其中,最后一项$b\sum^N_{i=1}\alpha_i y^{(i)}​$恒等于0,于是得出:

$$ L(w,b,\alpha)=\sum^N_{i=1}\alpha_i-\frac12 \sum^N_{i,j=1} y^{(i)}y^{(j)}\alpha_i\alpha_j\langle x^{(i)}x^{(j)}\rangle $$

最终,结合原始问题,得出如下对偶优化问题:

$$ \begin{aligned} \max_\alpha \quad & W(\alpha) =\sum^N_{i=1}\alpha_i-\frac12\sum^N_{i,j=1}y^{(i)}y^{(j)}\alpha_i\alpha_j\langle x^{(i)} x^{(j)} \rangle\\ s.t. \quad & \alpha_i \geq 0,\quad i=1,...,N\\ & \sum^N_{i=1} \alpha_iy^{(i)}=0 \end{aligned} $$

可以证明,这个优化问题是满足 和 KKT 条件的,也就是 $p^\ast = d^\ast​$。这样,就可以使用对偶问题来解决原始问题。只要求出$\alpha​$,使$W(\alpha)​$最大化,就可以利用$w=\sum^N_{i=1}\alpha_i y^{(i)}x^{(i)}\\​$来求出$w^\ast​$的值,根据$w^\ast​$ 就可以找到最优的$b^*​$:

$$ b^\ast =y_j-\sum\limits_{i=1}^{N}\alpha^\ast_iy_i\langle x^{(i)}x^{(j)}\rangle $$

注意一点,根据KKT条件的(K4)条件,可知:

$$ \alpha_i^\ast g_i(w^\ast)= \alpha_i(1-y^{(n)}(w^T x^{(i)}+b))=0 $$

可以知道:当$1-y^{(n)}(w^T x^{(i)}+b)​$不等于0,也就是$y^{(n)}(w^T x^{(i)}+b)\ne1​$时,$\alpha_i​$必等于0。

也就可以推出,当$\alpha_i\ne0$,$y^{(i)}(w^T x^{(i)}+b)=1=\hat\gamma$($\hat\gamma$的定义详见上一篇文章),也就是说,$a_i\ne0$可以推出$(x^{i},y^{i})$是离分类超平面最近的点,刚好在两条线上的点。

而$w=\sum^N_{i=1}\alpha_i y^{(i)}x^{(i)}​$,可以看出,$w​$完全是这些离分离超平面最近的样本点的线性组合,这些点也被称为支持向量(support vectors),这就是支持向量机名字的由来。

当我们要用这个分类器预测一个新的点$x$时,可以使用如下公式

$$ \begin{aligned} w^Tx+b&= (\sum^N_{i=1}\alpha_i y^{(i)}x^{(i)})^Tx+b & \text{(12)}\\ &= \sum^N_{i=1}\alpha_i y^{(i)}\langle x^{(i)},x \rangle+b & \text{(13)}\\ \end{aligned} $$

上面式子,很多的$\alpha_i​$都等于0,只有支持向量对应的$\alpha_i​$才不会等于0,所以计算量其实并不大。

算法

线性可分SVM的对偶算法如下:

输入:$T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}​$,其中,$x_i\in R^n​$,$y_i\in{-1,+1}​$

输出:最大间隔分类超平面$(w,b)$和分类决策函数$f(x)$

(1)构造并求解约束最优化问题:

$$ \min\limits_{\alpha}\frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_j\langle x^{(i)},x^{(j)} \rangle-\sum\limits_{i=1}^{N}\alpha_i\\ \begin{eqnarray} s.t.\ \ &\sum\limits_{i=1}^{N}\alpha_iy_i=0\\ &\alpha_i\ge0,\ \ i=1,2,...N \end{eqnarray} $$

求出最优解决$\alpha^\ast=(\alpha^\ast_1,\alpha^\ast_2,...,\alpha^\ast_N)^T​$。

(2)计算:

$$ w^\ast=\sum^N_{i=1}\alpha_i y^{(i)}x^{(i)}\\ $$

选择一个$\alpha_i>0$的样本,得出:

$$ b^\ast =y_j-\sum\limits_{i=1}^{N}\alpha^\ast_iy_i(x_i\cdot x_j) $$

(3)求得分类超平面

$$ (w^\ast)^Tx+b=0 $$

分类决策函数:

$$ f(x)=sgn((w^\ast)^Tx+b=0) $$

这一篇,我们更深入的了解了支持向量机的内在结构,并将其转换为对偶形式,并使用内积形式来编写整个算法。

后面将会将软间隔、核技巧等概念引入SVM中,让SVM更加强大。

最后修改:2021 年 06 月 01 日 01 : 54 PM
如果觉得我的文章对你有用,请随意赞赏