这篇文章将介绍感知器、逻辑回归的求解和SVM的部分求解,包含部分的证明。本文章涉及的一些基础知识,已经在《梯度下降、牛顿法和拉格朗日对偶性》中指出,而这里要解决的问题,来自《从感知器到SVM》 、《从线性回归到逻辑回归》两篇文章。
感知器:
前面的文章已经讲到,感知器的目标函数如下:
$min \ L(w,b)$
其中,$L(w,b)=-\sum_{i=1}^{n}[y_i*(w*x_i+b)]$
对于上面这种无约束的最优化问题,一般采用的是梯度下降的办法,但是,考虑到梯度下降速度比较慢,实际使用中,采用是随机梯度下降。
其基本的思想是:一次选取一个误分点使其梯度下降,而不是像梯度下降一样,一次性使用所有的误分点,这样,可以极大的减少计算量,提高运算效率。
不过,需要注意的一点是,随机梯度下降有可能不能收敛到极小值点,而是在极小值点附近徘徊。
下面,对目标函数进行求解。首先是分别对w和b求偏导:
$\triangledown_wL(w,b)=-\sum \limits_{x_i \in M}y_ix_i$
$\triangledown_bL(w,b)=-\sum \limits_{x_i \in M}y_i$
随机选取一个误分点,对w和b进行更新:
$w \gets w+\eta y_ix_i$
$b \gets b+\eta y_i$
直到训练集中没有误分点,算法结束。
逻辑回归:
目标函数:
$min \ L(w)$
$L(w)=-\sum_{i=1}^{n}[y_i*(w*x_i)-ln(1+exp(w*x_i))]$
使用梯度下降:
$\triangledown_wL(w)=-$ $\sum_{i=1}^{n}(y_i*x_i-\frac{exp(w*x_i)}{1+exp(w*x_i)}*x_i)$
$w \gets w+\eta \triangledown_wL(w)$
直到没有误分点为止。
SVM:
SVM和感知器和逻辑回归的不同点在于,SVM是一个约束最优化问题。我们的目标是在约束条件下,最大化目标函数。一般的处理办法是先通过拉格朗日对偶性将目标函数化简,然后使用SMO(序列最小最优化)算法解决。
首先是拉格朗日对偶性化简目标函数。
在处理不同的目标函数之前,先解释一下,为什么拉格朗日对偶性能够化简目标函数:
假设拉格朗日函数满足KKT条件:
$L(x,a,b)=f(x)+\sum_{i=1}^{k}a_ic_i(x)+\sum_{j=1}^{l}b_jh_j(x)$
记:$\theta_p(x)=\max \limits_{a,b:a_i\geq 0} \ L(x,a,b)$
$\theta_D(a,b)=\min \limits_{x\in R^{n}} \ L(x,a,b)$
证明:
$\because \theta_D(a,b)=\min \limits_{x\in R^{n}} \ L(x,a,b) \leq L(x,a,b) \leq \max \limits_{a,b:a_i\geq 0} \ L(x,a,b)=\theta_p(x)$
$\therefore \theta_D(a,b) \leq \theta_p(x)$
$\therefore \max \limits_{a,b:a_i\geq 0} \theta_D(a,b) \leq \min \limits_{x\in R^{n}} \theta_p(x)$
由于$L(x,a,b)$满足KKT条件,因此,存在解$x^*,a^*,b^*$使得上面的等号成立。
至于为什么KKT条件是上面等号成立的条件,我暂时还没有找到证明。不过这已经被前人证明过了,就按照一个结论记住吧。
因此,一旦满足KKT条件,原始问题直接就能转化成对偶问题,而且根据KKT条件,可以直接将问题简化。下面各个例子将会细说:
根据SVM处理不同的数据,我们逐个击破。首先是线性可分支持向量机:
$min \ \ \frac{1}{2}||w||^2$
$1-y_i * (w * x_i + b) \leq0$ $ \ \ \ $ $i=1,2,3......n$
首先写出广义拉格朗日函数:
$L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^{n}a_i(1-y_i * (w * x_i + b))$
$a_i \geq 0 , \ i=0,1,...,n$
原始问题是:$\min \limits_{w,b} \max \limits_{a:a_i\geq 0} \ L(w,b,a)$
对偶问题是:$\max \limits_{a:a_i\geq 0} \min \limits_{w,b} \ L(w,b,a)$
我们对对偶问题进行化简,根据KKT条件可得(KKT条件的相关细节可以看介绍拉格朗日对偶性的文章):
$\triangledown_wL(w,b,a)=w-\sum_{i=1}^{n}a_iy_ix_i=0$
$\triangledown_bL(w,b,a)=-\sum_{i=1}^{n}a_iy_i=0$
因此,可以得到:
$w=\sum_{i=1}^{n}a_iy_ix_i$
$\sum_{i=1}^{n}a_iy_i=0$
将上面两个等式代入广义拉格朗日函数,化简可以得到:
$\min \limits_{w,b} \ L(w,b,a)=-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$
而:$\max \limits_{a} \ \min \limits_{w,b} \ L(w,b,a)=\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$
因此,原始问题,转化成了下面的对偶问题:
$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$
$s.t. \ \sum_{i=1}^{n}a_iy_i=0$
$a_i \geq 0, \ i=1,2,....,n$
为了保证思路上的连续性,这里先不对上面的对偶问题进行求解,而是先分析剩下情况的问题如何转化。
线性支持向量机的目标函数:
$min \ \ \frac{1}{2}||w||^2 + C\sum_{i=1}^{n}\zeta_i$
$s.t. \ y_i*(w*x_i + b) \geq 1 - \zeta_i, \ \ \ i=1,2,3......n$
$\zeta_i \geq 0, \ \ i=1,2,3......n$
先写出广义拉格朗日函数:
$L(w,b,\zeta,a,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^{n}\zeta_i+\sum_{i=1}^{n}a_i(1-\zeta_i-y_i * (w * x_i + b))+\sum_{i=1}^{n}\mu_i\zeta_i$
其中:$a_i \geq 0,\mu_i \geq 0$
其中原始问题是:$\min \limits_{w,b,\zeta} \ \max \limits_{a,\mu} \ \ L(w,b,\zeta,a,\mu)$
对偶问题是:$\max \limits_{a,\mu} \ \min \limits_{w,b,\zeta} \ \ L(w,b,\zeta,a,\mu)$
根据KKT条件,对对偶问题进行化简:
$\triangledown_wL(w,b,\zeta,a,\mu)=w-\sum_{i=1}^{n}a_iy_ix_i=0$
$\triangledown_bL(w,b,\zeta,a,\mu)=-\sum_{i=1}^{n}a_iy_i=0$
$\triangledown_{\zeta}L(w,b,\zeta,a,\mu)=C-a_i-\mu_i=0$
得到:
$w=\sum_{i=1}^{n}a_iy_ix_i$
$\sum_{i=1}^{n}a_iy_i=0$
$C-a_i-\mu_i=0$
因此,$\max \limits_{a} \ \min \limits_{w,b,\zeta} \ L(w,b,\zeta,a,\mu)=\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$
其中,$\mu_i$可以根据等式$C-a_i-\mu_i=0$消去。即$\mu_i=C-a_i$,由$\mu_i\geq 0$得到$a_i\leq C$。
于是,可以得到下面的对偶问题:
$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(x_i \centerdot x_j)+\sum_{i=1}^{n}a_i$
$s.t. \ \sum_{i=1}^{n}a_iy_i=0$
$0\leq a_i\leq C, \ i=1,2,....,n$
非线性支持向量机:
我们已经知道,非线性支持向量机和线性支持向量机最大的区别是:非线性支持向量机通过一个映射函数将非线性问题转化成线性的问题。因此,其对偶问题的差别也就一个映射函数的差别:
$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_j(\phi(x_i) \centerdot \phi(x_j))+\sum_{i=1}^{n}a_i$
$s.t. \ \sum_{i=1}^{n}a_iy_i=0$
$0\leq a_i\leq C, \ i=1,2,....,n$
不过,在实际的计算中,前人发现,$\phi(x_i)\centerdot\phi(x_j)$的计算比较困难,但是,这一步又必不可少,通过研究后,前人找到了一个办法,这就是核技巧:
核技巧的想法是:在学习和预测中,只定义核函数,而不显式地定义映射函数。也就是说:只定义:$K(x_i,x_j)=\phi(x_i)\centerdot\phi(x_j)$。
因此,我们得到核函数的定义:$K(x,z)=\phi(x)\centerdot\phi(z)$
这样定义的原因主要是:通过$K(x,z)$计算$\phi(x)\centerdot\phi(z)$比较容易,而通过$\phi(x)\centerdot\phi(z)$计算$K(x,z)$比较困难。因此,上面化简后的对偶函数变成:
$\max \limits_{a} \ -\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}a_ia_jy_iy_jK(x_i,x_j)+\sum_{i=1}^{n}a_i$
$s.t. \ \sum_{i=1}^{n}a_iy_i=0$
$0\leq a_i\leq C, \ i=1,2,....,n$
One Class SVM:
目标函数:
$\min \ R^2+C\sum_{i}\zeta_i$
$s.t \ (x_i-a)^T(x_i-a)\leq R^2+\zeta_i$
$\zeta_i\geq 0, \ \ \ i=1,2,...,n$
先写出广义拉格朗日函数:
$L(R,a,\zeta,b,\mu)=R^2+C\sum_{i}\zeta_i+\sum_{i=1}^{n}b_i(x_i^2-2ax_i+a^2-R^2-\zeta_i)+\sum_{i=1}^{n}\mu_{i}\zeta_i$
$b_i\geq 0,\mu_i\geq 0, \ \ i=1,2,3...,n$
其中原始问题是:$\min \limits_{R,a,\zeta} \ \max \limits_{b,\mu} \ \ L(w,a,\zeta,b,\mu)$
对偶问题是:$\max \limits_{b,\mu} \ \min \limits_{w,a,\zeta} \ \ L(w,a,\zeta,b,\mu)$
由KKT条件得到:
$\triangledown_RL(R,a,\zeta,b,\mu)=2R-\sum_{i=1}^{n}2b_iR=0 \ \ (1)$
$\triangledown_aL(w,a,\zeta,b,\mu)=\sum_{i=1}^{n}(2ab_i-2b_ix_i)=0 \ \ (2)$
$\triangledown_{\zeta}L(w,a,\zeta,b,\mu)=C-b_i-\mu_i=0 \ \ (3)$
(3)式是对每一个$\zeta_i$求偏导。
由(1)式可得,$\sum_{i=1}^{n}b_i=1$
由(2)式得:$\sum_{i=1}^{n}(2ab_i-2b_ix_i)=0$,由于不能保证$2ab_i-2b_ix_i=0$,因此,将公式拆开得:
$2a\sum_{i=1}^{n}b_i-2\sum_{i=1}^{n}b_ix_i=0$
因此,$a=\frac{\sum_{i=1}^{n}b_ix_i}{\sum_{i=1}^{n}b_i}=\sum_{i=1}^{n}b_ix_i$
,从(1)式的结果中可以知道分母等于1
由(3)式可得:$C-b_i-\mu_i=0,\ \ \ i=1,2,...,n$
由(3)式消去$\mu_i$可以得到:$0\leq b_i \leq C$
将(1)(3)代入拉格朗日函数,刚好消去包含R和的项:
$L(R,a,\zeta,b,\mu)=\sum_{i=1}^{n}b_i(x_i^2-2ax_i+a^2)$
将(2)式的推导结果:$a=\sum_{i=1}^{n}b_ix_i$代入上式可得:
$\min \limits_{R,a,\zeta} \ L(R,a,\zeta,b,\mu)=\sum_{i=1}^{n}b_i(x_i*x_i)-\sum_{i=1}^{n}\sum_{j=1}^{n}b_ib_j(x_i*x_j)$
如果采用了核技巧,也可以写成下面的表达式:
$\min \limits_{R,a,\zeta} \ L(R,a,\zeta,b,\mu)=\sum_{i=1}^{n}b_iK(x_i,x_i)-\sum_{i=1}^{n}\sum_{j=1}^{n}b_ib_jK(x_i,x_j)$
所以,原问题的对偶问题可以写成下面的形式:
$\max \limits_{b_j} \ \sum_{i=1}^{n}b_iK(x_i,x_i)-\sum_{i=1}^{n}\sum_{j=1}^{n}b_ib_jK(x_i,x_j)$
$s.t. \ \sum_{i=1}^{n}b_i=1$
$0\leq b_i\leq C, \ i=1,2,...,n$
从前面的总结的4个情况来看,所有情况的对偶问题最终都会变成类似下面的形式:(以非线性支持向量机为例子)
$\max \limits_{a_i} \ L(a,x,y)$
$s.t. \ \sum_{i=1}^{n}a_iy_j=K$
$0\leq a_i\leq C, \ i=1,2,...,n$
其中,第一个式子是目标函数,一般是最大化或者最小化目标函数,能够控制的变量只有一个,如a;
第二个式子是一个等式,将从i=1到n的所有情况全部求和等于一个常数。
第三个式子是关于变量(如a)的范围的控制。
类似的形式,一般是可以用同样的办法进行求解的。
关于这类问题的求解,如果继续在本文中写,篇幅就太长了,影响阅读效果,因此,最后一步的求解,将会在下一篇文章中叙述,敬请期待。