zoukankan      html  css  js  c++  java
  • 支持向量机(二)——数值优化

           在上一篇博客中,较为详细的介绍了在数据完全线性可分的情况下,构建SVM模型的目标,并将构建目标转化为最大化几何距离的优化过程,本篇就将介绍具体优化时的计算过程。还是一样的,先推荐几篇不错的博文,大家也可以参考链接中的文章学习。

    • 关于凸优化问题

            http://www.360doc.com/content/18/0522/09/32196507_756021531.shtml

    • 关于拉格朗日乘子法及对偶优化问题

              https://www.cnblogs.com/xinchen1111/p/8804858.html

              https://www.cnblogs.com/ooon/p/5721119.html

              https://www.cnblogs.com/mashiqi/p/3719101.html

    1.凸优化问题

           在一般的优化问题中求最大值或最小值,通常的做法是找出那些梯度为0的点(有的情况下还需要求出边界点的值),然后比较这些点的函数值,最后找出最大值或最小值。这个过程中有两个问题需要注意,一个是当存在多个极值点时,计算量会比较大;另外一个问题就是鞍点(比较常见的是f(x)=x^{3}函数在x=0处)的问题。所以,如果优化问题能够在附加一些限制条件时能到简化,那将非常利于最大值或最小值的求解,凸优化问题正是这样一种简化后的优化问题。

           1.1  凸集

           对于 n 维空间中点的集合C,如果对集合中任意两个点xy,以及实数	heta0leqslant	hetaleqslant 1,都有

                                                                             	heta x+(1-	heta )yin C

    则集合C称为凸集,在二维空间中,可以用一张简单的图来描述一下凸集和非凸集的区别

                                                 

           在一些特定的情况下,我们来考虑一下凸集 

    • n 维实向量空间中,xyin R^{n},对任意实数	heta0leqslant	hetaleqslant 1,显然有

                                                                        	heta x+(1-	heta )yin R^{n}

            这一结论表明,如果一个优化问题不带约束,那么该优化问题的变量可行域是凸集。

    • n 维实仿射子空间R^{n}

                                                                                         left { xin R^{n}|Ax=b 
ight }

           中,假设 xyin R^{n},对任意实数	heta0leqslant	hetaleqslant 1,有

                                                               A(	heta x+(1-	heta )y)=	heta b+(1-	heta )b=b

           即	heta x+(1-	heta )yin R^{n},这一结论表明:若优化问题中的约束是一组等式约束,那么它们确定的可行域是凸集。

    • n 维实向量空间中,多面体空间R^{n}定义为

                                                                                 left { xin R^{n}|Axleqslant b 
ight }

            在多面体空间R^{n}中,假设 xyin R^{n},对任意实数	heta0leqslant	hetaleqslant 1,有

                                                                  A(	heta x+(1-	heta )y)leq 	heta b+(1-	heta )b=b

            即	heta x+(1-	heta )yin R^{n},这一结论表明:若优化问题中的约束是一组线性不等式约束,那么它们确定的可行域是凸集。

       最后,还有一个重要的结论是,多个凸集的交集仍然是凸集。​​​​​​                            

           1.2  凸函数

           对于函数f(x),如果其定义域内的任意两个点 xy满足

                                                               f(	heta x+(1-	heta )y)leqslant 	heta f(x)+(1-	heta )f(y)

           则函数f(x)成为凸函数,在二维空间中我们映像最深的凸函数就是下面这种情况了   

                                                                          

          在多维空间中,如何判断一个函数是否为凸函数,需要依据其Hessian矩阵判断。

          在一个优化问题中,若目标函数是凸函数,变量可行域是凸集,那么该优化问题就称为凸优化问题。通过以上对凸集及凸函数的定义,我们可以将单变量的凸优化问题用以下表达式描述,多变量的凸优化问题也类似

                                                         目标:min : : f(x)

                                                         约束:g_{i}(x)leqslant 0,i=1,2,...,m

                                                                    h_{i}(x)= 0,i=1,2,...,p

        在凸优化问题中,局部最优值即是全局最优值。

    2.拉格朗日乘子法

           拉格朗日乘子法用于求解带约束的优化问题,我们先从带等式约束的情况着手,一步步分析到带不等式约束的情况。

           2.1  等式约束    

           现假设有函数f(x,y),带约束的优化目标为

                                                                                        min : : f(x,y)

                                                                                                s.t. h(x,y)=0

    函数f(x,y)h(x,y)投影在XOY平面上的等值线f(x)h(x)如下图所示

                                                         

     图中带箭头的线条表示曲线在该点处的梯度方向。从上图中可以看到,只有约束曲线h(x)与等值线f(x)相切的地方,目标函数f(x,y)才有局部极值,因为在h(x)曲线与等值线不相切处(即交点处),变量x沿h(x)曲线移动时f(x)会增大或者减小,f(x,y)无法得到局部极值。因此,在计算f(x,y)最小值时,首先应该计算出所有满足约束的极值点,然后在这些极值点中找出最小值。

            现在观察一下等值线f(x)h(x)曲线相切时的特征,在二维空间中,梯度与切线方向垂直(在多维空间中,梯度与切点处切超平面垂直),也就是说f(x)h(x)在切点处的梯度共线(这里不能说反向,尽管上图中显示的是反向),因此在切点处有

                                                                           igtriangledown f(x,y)=uigtriangledown h(x,y)                                         (1)

    igtriangledown为梯度,u为任意实数,依据梯度的计算方式,式(1)等价于

                                                                           frac{partial f(x,y)}{partial x}=u frac{partial h(x,y)}{partial x}                                            (2)

                                                                           frac{ partial f(x,y) }{partial y}=u frac{ partial h(x,y) }{ partial y}                                            (3)

    partial为偏导数计算符号,这样在求解极值点时,联立式(2)、式(3)和h(x,y)=0计算即可。为了方便,构造函数F(x,y,u)

                                                                       F(x,y,u)=f(x,y)+uh(x,y)

                                                                                     s.t. \, \, h(x,y)=0

    求极值时直接求F(x,y,u)xyu的偏导数,并令其为0即可,结果和上面过程一样,这种方法就是等式约束下的拉格朗日乘子法。

            在多个等式约束情况下,也是一样的做法,构造函数F(x,y,u_{1},...,u_{k}),然后求解F(x,y,u_{1},...,u_{k})xyu_{i} 的偏导数并令其为0

                                                               F(x,y,u_{1},...,u_{k})=f(x,y)+sum_{i=1}^{k}u_{i}h_{i}(x,y)

                                                                              s.t. \, \, h_{i}(x,y)=0\, \, ,i=1,...,k

            2.2 不等式约束

            针对2.1节中的优化问题,现增加一个不等式约束                                                  

                                                                                     min : : f(x,y)

                                                                                         s.t. \, \, h(x,y)=0

                                                                                                g(x,y)leq 0

            在带不等式约束的优化问题中,我们还是要采用先找出局部极值,然后通过比较极值的方式找出最小值,如果局部极值存在,那么只可能有两种情况,一种情况是局部极值点在g(x,y)= 0的边界上,另外一种是时局部极值点在g(x,y)< 0的区域内。我们先将函数f(x,y)h(x,y)g(x,y)投影到XOY平面上,点x^{*}为曲线h(x)与等值线f(x)的切点。

            第一种情况如下图所示

                               

    此时不等式约束成为了等式约束,在2.1节中的约束问题中,因为等式约束的原因无法施加更多的约束,只能要求目标函数f(x,y)与约束函数h(x,y)在切点处的梯度共线,而在不等式约束中,尽管切点位于约束区域的边界上,但仍能将约束条件加强,我们知道梯度是数值增大最快的方向,函数g(x)在切点x^{*}处的梯度肯定不是指向可行域g(x)<0的,因为这会使g(x)的值减小,而我们的目标是极小值优化问题,切点x^{*}处是一个极小值点,因此在可行域内越靠近切点x^{*}f(x)的值越小,所以函数f(x)在切点x^{*}处的梯度方向应该是指向g(x)<0区域的,因此函数f(x)g(x)在切点x^{*}处的梯度方向相反,这样我们可以利用拉格朗日乘子法构建函数F(x,y,u,lambda )

                                                            F(x,y,u,lambda )=f(x,y)+uh(x,y)+lambda g(x,y)

    极值点一定满足如下条件

                                                           igtriangledown f(x,y)+uigtriangledown h(x,y)+lambda igtriangledown g(x,y)=0

                                                                                 h(x,y)=0

                                                                                 g(x,y)=0

                                                                                       lambda >0

            第二种情况,切点x^{*} 不在g(x)leq 0区域的边界上,满足g(x^{*})<0

                                               

    这种情况下在切点处的不等式约束相当于不存在,我们可以构建函数F(x,y,u,lambda )

                                                          F(x,y,u,lambda )=f(x,y)+uh(x,y)+lambda g(x,y)

    极值点一定满足如下条件

                                                           igtriangledown f(x,y)+uigtriangledown h(x,y)+lambda igtriangledown g(x,y)=0

                                                                             h(x,y)=0

                                                                              g(x,y)<0

                                                                                      lambda =0

    结合以上两种情况,我们可以利用拉格朗日乘子法构造如下函数

                                     F(x,y,u_{1},...,u_{m},lambda_{1},...,lambda_{n} )=f(x,y)+sum_{i=1}^{m}u_{i}h_{i}(x,y)+sum_{j=1}^{n}lambda _{j}g_{j}(x,y)

    该函数的极值点满足

                                                        s.t. \, \, igtriangledown f(x,y)+uigtriangledown h(x,y)+lambda igtriangledown g(x,y)=0

                                                                               h_{i}(x,y)=0\, \, ,i=1,...,m

                                                                               g_{j}(x,y)leq 0\, \, ,i=1,...,n

                                                                                       lambda_{j}geq 0 \, \, ,i=1,...,n

                                                                          lambda _{j}g_{j}(x,y)= 0\, \, ,i=1,...,n

    3.KKT条件与对偶问题

           第2节中最终总结出了极值点需满足的条件,这样一组约束条件即称为KKT条件,它是优化问题中获取极值点的必要条件。当然,在实际中并不是所有情况下极值点一定满足KKT条件,解出的极值点还是要代入目标函数中检查,要想一个优化问题的极值点满足KKT条件还需要一些规范性条件,我这里不在此列出这些规范性条件了(可以在文章推荐的文章中学习)。依据以上KKT条件,我们就可以求解优化问题了,但一般直接求解这组方程是比较困难的,为了更好的解决这个优化问题,数学家还找到了它的对偶问题,当对偶问题比较容易求解时,我们可以通过求解对偶问题来间接的求解原优化问题,我们还是以单个等式约束、不等式约束问题为例来说明其对偶问题。

           利用拉格朗日乘子法构建以下函数及约束条件

                                                         F(x,y,u,lambda )=f(x,y)+uh(x,y)+lambda g(x,y)

                                                                            s.t. \, \, h(x,y)=0

                                                                                   g(x,y)leq 0

                                                                                            lambdageq 0

                                                                                lambda g(x,y)= 0

    我们先来看一下max\, \, F(x,y,u,lambda ),约束范围内的点满足h(x,y)=0lambda g(x,y)= 0,所以可以得到

                                                                            max\, \, F(x,y,u,lambda )=f(x,y)

    不在约束范围内的点,可以调整 lambda 和 u 的值使用F(x,y,u,lambda )取到无穷大

                                                                             max\, \, F(x,y,u,lambda )=infty

    此时求解max\, \, F(x,y,u,lambda )是没什么意义的。现在我们只考虑满足约束的点,那么原优化问题min : : f(x,y)可以表达成

                                                                              underset{x,y}{min} \, \,underset{lambda ,u}{max}\, \, F(x,y,u,lambda )                                              (4)

    该问题的对偶问题即为

                                                                             underset{lambda ,u}{max} \, \,underset{x,y}{min}\, \, F(x,y,u,lambda )                                               (5)

    我们有

                                                      underset{x,y}{min} \, \,underset{lambda ,u}{max}\, \, F(x,y,u,lambda )geq underset{lambda ,u}{max} \, \,underset{x,y}{min}\, \, F(x,y,u,lambda )                       

    在很多文章中都说 “ 最大值中的最小值比最小值中的最大值大是很显然 ”,这样的理解在多变量函数中理解起来有点费劲,不过也暂时只能先这样理解了。求解公式(5)得到的解并不一定是公式(4)中的最优解,那么我们自然就会问,在什么条件下,公式(5)与公式(4)表示的问题是等价的呢?在上面说到的满足KKT条件所需的一些规范性条件中,有一个条件称为 Slater条件,满足 Slater条件的约束问题具有强对偶性质,公式(5)与公式(4)中的解是等价的。 Slater条件表述为:如果优化问题是个凸优化问题,且至少存在一个点满足h(x,y)=0 和 g(x,y)=0,则极值一定满足 KKT 条件,并且满足强对偶性质。

           本篇文章到这里为止,已经将准备知识说完了,接下来我们着手处理一下上一篇遗留的优化问题。

    4.构建SVM超平面时的优化问题

       上一篇中最后的优化问题为

                                                                   max frac{1}{left | w 
ight |},: s.t. : : y_{i}(w^{T}x_{i}+b)geq 1,i=1,...,k      

       我们将其转化为

                                                                                     min \, \, frac{1}{2}w^{2}   

                                                                                       s.t. : : 1-y_{i}(w^{T}x_{i}+b)leq 0,i=1,...,k

    这是等价的,目标函数显然是一个我们熟知凸函数,约束条件定义的可行域也是上文中所说的凸集,所以这是一个凸优化问题。先利用拉格朗日乘子法构建如下函数

                                                               F(w,b,lambda _{1},...,lambda _{k})=frac{1}{2}w^{2}+sum_{i=1}^{k}lambda _{i}left [ 1-y_{i}(w^{T}x_{i}+b) 
ight ]

                                                                               s.t. : : 1-y_{i}(w^{T}x_{i}+b)leq 0,i=1,...,n                                                                               

                                                                                                   lambda _{i}geq 0\, \, ,i=1,...,k

    我们的优化目标可以表达如下

                                                                     underset{w,b}{min}\, \, underset{lambda_{i} }{max}\, \, frac{1}{2}w^{2}+sum_{i=1}^{k}lambda _{i}left [ 1-y_{i}(w^{T}x_{i}+b) 
ight ]                                        

                                                                                      s.t. : : 1-y_{i}(w^{T}x_{i}+b)leq 0,i=1,...,n                                                                               

                                                                                                   lambda _{i}geq 0\, \, ,i=1,...,k

    其对偶问题为

                                                                     underset{lambda _{i}}{max}\, \, underset{w,b }{min}\, \, frac{1}{2}w^{2}+sum_{i=1}^{k}lambda _{i}left [ 1-y_{i}(w^{T}x_{i}+b) 
ight ]                       (6)                                                       

                                                                    s.t. : : 1-y_{i}(w^{T}x_{i}+b)leq 0,i=1,...,n                                                                               

                                                                                                   lambda _{i}geq 0\, \, ,i=1,...,k

    很明显,支持向量上的点满足1-y(w^{T}x+b)= 0,因此优化问题满足 Slater条件,因此其对偶问题的解等价于原问题的解,这样我们可以直接求解其对偶问题的最优解。

     求取F(w,b,lambda _{1},...,lambda _{k})wb的偏导数,并令其为0,得到

                                                          frac{partial F(w,b,lambda _{1},...,lambda _{k})}{partial w}=w-sum_{i=1}^{k}lambda _{i}x_{i}y_{i}=0       

                                                          frac{partial F(w,b,lambda _{1},...,lambda _{k})}{partial b}=sum_{i=1}^{k}lambda _{i}y_{i}=0

    将计算的结果代入公式(6)中,得到

                                                                     underset{lambda _{i}}{max}\, \, sum_{i=1}^{k}lambda _{i}-frac{1}{2}sum_{i=1}^{k}lambda _{i}lambda _{j}y_{i}y_{j}x_{i}x_{j}

    利用一些数值计算软件,在训练数据集上就可以计算出结果满足最优结果的lambda _{1},...,lambda _{k}值了,继而求解出wb。也有一些算法能快速计算出结果,这个我们后面再介绍,完全线性可分情况下的支持向量机构建到这里也就完成了。事实上,并不是所有的lambda值均非0,只有支持向量机上的点其对应的lambda值才非0,这和不等式约束中的第一种情况一致。

    5.小结

          本篇博客中首先介绍了构建SVM时涉及的数值优化计算过程的背景知识,但是我没有很详细的介绍,只是介绍了一些必须的部分,感兴趣的同学可以自己再去多了解一些。本系列的前两篇介绍的是在数据完全线性可分情况下SVM的构建,但数据完全线性可分的情况毕竟很少,因此这样构建的SVM模型分类效果并不好,下一篇开始将进一步介绍数据不完全线性可分情况下SVM的构建。

       

         

                                         

           

              

           

  • 相关阅读:
    微信小程序开发教程
    微信小程序的动画效果
    关于PHP中的全局变量global和$GLOBALS的不同区分
    爱心背景特效
    jQuery常用语法总结笔记
    微信HTML5页面设计建议
    学习Javascript闭包(Closure)
    转: web 页面加载速度优化实战100% 的飞跃提升
    javascript中slice() splice() concat()操作数组的方法
    Web前端开发规范文档你需要知道的事
  • 原文地址:https://www.cnblogs.com/hgz-dm/p/10886207.html
Copyright © 2011-2022 走看看