支持向量机(二)——数值优化

廉价感情. 提交于 2019-12-25 12:56:30

       在上一篇博客中,较为详细的介绍了在数据完全线性可分的情况下,构建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的点(有的情况下还需要求出边界点的值),然后比较这些点的函数值,最后找出最大值或最小值。这个过程中有两个问题需要注意,一个是当存在多个极值点时,计算量会比较大;另外一个问题就是鞍点(比较常见的是

函数在

处)的问题。所以,如果优化问题能够在附加一些限制条件时能到简化,那将非常利于最大值或最小值的求解,凸优化问题正是这样一种简化后的优化问题。

       1.1  凸集

       对于 

 维空间中点的集合

,如果对集合中任意两个点

,以及实数

,都有

                                                                         

则集合

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

                                             

 

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

  •  维实向量空间中,

    ,对任意实数

    ,显然有

                                                                    

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

  •  维实仿射子空间

                                                                                     

       中,假设 

,对任意实数

,有

                                                           

       即

,这一结论表明:若优化问题中的约束是一组等式约束,那么它们确定的可行域是凸集。
  •  维实向量空间中,多面体空间

    定义为

                                                                             

        在多面体空间

中,假设 

,对任意实数

,有

                                                             

        即

,这一结论表明:若优化问题中的约束是一组线性不等式约束,那么它们确定的可行域是凸集。

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

       1.2  凸函数

       对于函数

,如果其定义域内的任意两个点 

满足

                                                           

       则函数

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

                                                                      

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

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

                                                     目标:

                                                     约束:

                                                                

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

2.拉格朗日乘子法

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

       2.1  等式约束    

       现假设有函数

,带约束的优化目标为

                                                                                    

                                                                                            

函数

投影在

平面上的等值线

如下图所示

                                                     

 

 图中带箭头的线条表示曲线在该点处的梯度方向。从上图中可以看到,只有约束曲线

与等值线

相切的地方,目标函数

才有局部极值,因为在

曲线与等值线不相切处(即交点处),变量

沿

曲线移动时

会增大或者减小,

无法得到局部极值。因此,在计算

最小值时,首先应该计算出所有满足约束的极值点,然后在这些极值点中找出最小值。

        现在观察一下等值线

曲线相切时的特征,在二维空间中,梯度与切线方向垂直(在多维空间中,梯度与切点处切超平面垂直),也就是说

在切点处的梯度共线(这里不能说反向,尽管上图中显示的是反向),因此在切点处有

                                                                       

                                         (1)

为梯度,

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

                                                                       

                                            (2)

                                                                       

                                            (3)

为偏导数计算符号,这样在求解极值点时,联立式(2)、式(3)和

计算即可。为了方便,构造函数

                                                                   

                                                                                 

求极值时直接求

的偏导数,并令其为0即可,结果和上面过程一样,这种方法就是等式约束下的拉格朗日乘子法。

        在多个等式约束情况下,也是一样的做法,构造函数

,然后求解

 的偏导数并令其为0

                                                           

                                                                         

        2.2 不等式约束

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

                                                                                 

                                                                                     

                                                                                           

        在带不等式约束的优化问题中,我们还是要采用先找出局部极值,然后通过比较极值的方式找出最小值,如果局部极值存在,那么只可能有两种情况,一种情况是局部极值点在

的边界上,另外一种是时局部极值点在

的区域内。我们先将函数

投影到

平面上,点

为曲线

与等值线

的切点。

        第一种情况如下图所示

                           

此时不等式约束成为了等式约束,在2.1节中的约束问题中,因为等式约束的原因无法施加更多的约束,只能要求目标函数

与约束函数

在切点处的梯度共线,而在不等式约束中,尽管切点位于约束区域的边界上,但仍能将约束条件加强,我们知道梯度是数值增大最快的方向,函数

在切点

处的梯度肯定不是指向可行域

的,因为这会使

的值减小,而我们的目标是极小值优化问题,切点

处是一个极小值点,因此在可行域内越靠近切点

的值越小,所以函数

在切点

处的梯度方向应该是指向

区域的,因此函数

在切点

处的梯度方向相反,这样我们可以利用拉格朗日乘子法构建函数

                                                        

极值点一定满足如下条件

                                                       

                                                                             

                                                                             

                                                                                   

 

        第二种情况,切点

 不在

区域的边界上,满足

                                           

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

                                                      

极值点一定满足如下条件

                                                       

                                                                         

                                                                          

                                                                                  

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

                                 

该函数的极值点满足

                                                    

                                                                           

                                                                           

                                                                                   

                                                                     

3.KKT条件与对偶问题

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

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

                                                     

                                                                        

                                                                               

                                                                                        

                                                                            

我们先来看一下

,约束范围内的点满足

,所以可以得到

                                                                        

不在约束范围内的点,可以调整 

 和 

 的值使用

取到无穷大

                                                                         

此时求解

是没什么意义的。现在我们只考虑满足约束的点,那么原优化问题

可以表达成

                                                                          

                                              (4)

该问题的对偶问题即为

                                                                         

                                               (5)

我们有

                                                  

                       

在很多文章中都说 “ 最大值中的最小值比最小值中的最大值大是很显然 ”,这样的理解在多变量函数中理解起来有点费劲,不过也暂时只能先这样理解了。求解公式(5)得到的解并不一定是公式(4)中的最优解,那么我们自然就会问,在什么条件下,公式(5)与公式(4)表示的问题是等价的呢?在上面说到的满足KKT条件所需的一些规范性条件中,有一个条件称为 

条件,满足 

条件的约束问题具有强对偶性质,公式(5)与公式(4)中的解是等价的。 

条件表述为:如果优化问题是个凸优化问题,且至少存在一个点满足

和 

,则极值一定满足 KKT 条件,并且满足强对偶性质。

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

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

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

                                                               

      

   我们将其转化为

                                                                                 

   

                                                                                   

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

                                                           

                                                                           

                                                                               

                                                                                               

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

                                                                 

                                        

                                                                                  

                                                                               

                                                                                               

其对偶问题为

                                                                 

                       (6)                                                       

                                                                

                                                                               

                                                                                               

很明显,支持向量上的点满足

,因此优化问题满足 

条件,因此其对偶问题的解等价于原问题的解,这样我们可以直接求解其对偶问题的最优解。

 求取

的偏导数,并令其为0,得到

                                                      

      

                                                      

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

                                                                 

利用一些数值计算软件,在训练数据集上就可以计算出结果满足最优结果的

值了,继而求解出

。也有一些算法能快速计算出结果,这个我们后面再介绍,完全线性可分情况下的支持向量机构建到这里也就完成了。事实上,并不是所有的

值均非0,只有支持向量机上的点其对应的

值才非0,这和不等式约束中的第一种情况一致。

5.小结

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

   

 

     

                                     

       

 

          

       

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!