二次规划问题

Posted holy_black_cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二次规划问题相关的知识,希望对你有一定的参考价值。

解决最优化问题 :min_{(w,b)}<w,w>

                                                        s.t. y_i(<w,x_i>+b) \\geq 1 Y4@5Q4NTE0HVJ6QBBH2YQ`E

稍微对它做一下改动,如下:

                                       min{ \\limits_{(w,b)}}\\frac{1}{2}||w||^2

                                       s.t.  y_i(<w,x_i>+b) \\geq 1  (i=1,2,...n)

这是一个约束优化问题,更进一步说是一个二次规划问题,复习一下约束优化问题:

     定义1:约束非线性问题是,

                                            YV~WEBZ@I[H1AO_BP%N6SR8

                                            1MB23TGM~N]@QG]$JQFSR94

                                                   DK0CSF{~9Z80@60V0VNIYVK

其中$7Z1IF`E5MVS0LO}F96UPG6都是定义在U78{H~34PLS$LXA}A55}S19上的实值连续函数,且至少有一个是非线性的(反之为线性约束优化问题),m是一个正整数,叫做目标函数,$7Z1IF`E5MVS0LO}F96UPG6叫做约束函数,如果目标函数是二次函数则叫做二次规划问题,由同时满足所有约束方程的点组成的集合叫做可行域,这些点叫可行点。

      定义2:Farkas引理,对于给定的n维向量a_i(i=1,2,...m)与b,对于任意满足a_i^TP \\geq 0  i=1,2...m的向量P,必有P^Tb \\geq 0的充要条件是:b在向量a_i(i=1,2,...m)所形成的凸锥内,即成立:b=\\sum\\limits_{i=1}^m{\\lambda_ia_i}\\lambda \\geq 0  (i=1,2,...m)

怎么理解“某个向量在若干其它向量形成的凸锥内”这个描述呢?可以看下图,image

利用平行四边形法则,可以看到向量b处于由 a_i形成的凸多边形内,发挥一下想象力,在空间中这不就像是一个凸的锥状体嘛。

       定义3:对于约束问题,如果有一个可行点 x^*,存在Y9S5Y76(4UCZ2MT{DG9A%FV且满足

                                                 _8_M`_`A)`B(12%{$%`W32A

                                                ]PK7Z`6[)WV@U2ST{LUG[1A 这里c_i(x)都是有效约束。

 x^*叫做K-T点。

      K-T点的几何意义可以从下图看出:

image

      显然x1是K-T点而x2则不是。在一般非线性规划中,K-T条件是最优解的必要条件但不是它的充分条件,此时K-T点不一定是最优点,但对于凸规划问题,K-T条件是最优解的充要条件;顺便说下,凸规划是个好同志,它的局部最优解就是全局最优解,所以它的K-T点就是全局最优点。

      定理1:设x^*是约束问题的局部极小点,x^*点处的线性化可行方向的集合等于其序列可行化方向的集合,则必存在\\lambda^*_i (i=1,2,...n)使得:

                            _8_M_AB12W32A

                            PK7Z6WVU2STLUG1A 这里c_i(x)都是有效约束。

x^*点处的线性化可行方向的集合等于其序列可行化方向的集合”这个条件怎么满足呢?只要所有有效约束都是线性函数即可,此时x^*必是一个K-T点。

      定理2:一阶最优性条件:对于可行点x^*,如果目标函数和所有有效约束在x^*处可微,且任意、非零的,在x^*处的序列可行化方向向量d满足:3F]U}OD)V8RK1AA4]_[{AKL,则x^*为严格局部极小点。这意味着,当向某一点处的任意方向移动都将导致目标函数值上升,那么这个点不就是一个局部极小点嘛。

      定理3:二阶最优性条件:设x^*为K-T点,\\lambda^*是相应的拉格朗日乘子,如果~352I[L$GSH84K1XQ9OS](1,其中d为非零的、x^*处的线性化零约束方向,则x^*为严格的局部极小点。

      推论1:设x^*为K-T点,\\lambda^*是相应的拉格朗日乘子,如果对一切满足Q]VY@C7VUTILM2DN@PB[TG0的非零向量d都有~352I[L$GSH84K1XQ9OS](1,则x^*为严格的局部极小点。                                     

      对于前面的约束非线性规划问题,如果f(x)是二次函数且所有约束是线性函数的时候就变成了二次规划问题,这一写成以下形式:

                              (6G858[M5R3WIJCX)}0UJXG

                              3ZGY}_SZ1O$D`)QO`C%1WRO

                                   8}C[AEP~)~][%})([98VC55

       定理4:如果x^*是二次规划问题的可行点,则x^*是局部极小点的充要条件是:当且仅当存在拉格朗日乘子\\lambda^*,使得:     

                              g+Hx^*=\\sum\\limits_{i=1}^{m}{\\lambda_i^*a_i}

                             \\lambda^*_i[a_i^Tx^*-b_i]=0,   i=m_e+1,...m

                             \\lambda^*_i \\geq 0i=m_e+1,...m

成立,(即x^*是K-T点)且对于一切满足

                            XN@W]V0(FX)[6~S0]BF`~6M

                            9904SI34K9M7JHN`E(U4GAX

                           F(YNGMII@Q9Y(E}C6{1@KC5(其中E为等式的有效约束,I(x^*)为不等式的有效约束)

的向量d都有:d^THd>0

        定理5:设H为半正定矩阵(所有特征值大于等于0),则x^*二次规划问题的全局极小点当且仅当它是一个局部极小点或者K-T点。

      当H为半正定矩阵,目标函数为凸函数时,该二次规划被叫做凸二次规划,它的任何K-T点都是极小点。回想我们开篇要解决的那个问题,目标函数显然是一个凸函数,所以它是一个凸二次规划问题,所以一定存在全局极小点(真好!)。

      到此,我们就可以开始解决开篇的那个问题:

                                       min{ \\limits_{(w,b)}}\\frac{1}{2}||w||^2

                                               s.t.  y_i(<w,x_i>+b) \\geq 1

已经确定它是一个凸二次规划问题了,那么可以利用其拉格朗日函数:L(w,b,\\alph)=\\frac{1}{2}||w||^2-\\sum\\limits_{i=1}^n\\alph_i(y_i(<w,x_i>+b)-1)

通过对wb求偏导数后得到:

                                           w=\\sum\\limits_{i=1}^{n}{\\alph_iy_ix_i}

                                           \\sum\\limits_{i=1}^{n}{\\alph_iy_i}=0 

带入原始拉格朗日函数,转化为对偶问题:

                             L(w,b,\\alph)=\\frac{1}{2}||w||^2-\\sum\\limits_{i=1}^n\\alph_i(y_i(<w,x_i>+b)-1)

                                           =\\frac{1}{2}(\\sum\\limits_{i,j=1}^n{y_iy_j\\alph_i\\alph_j<x_i,x_j>})-(\\sum\\limits_{i,j=1}^n{y_iy_j\\alph_i\\alph_j<x_i,x_j>})+(\\sum\\limits_{i=1}^n{\\alph_i})

                                           =\\sum\\limits_{i=1}^n{\\alph_i}-\\frac{1}{2}(\\sum\\limits_{i,j=1}^n{y_iy_j\\alph_i\\alph_j<x_i,x_j>})

这样就把带不等式约束的优化问题通过其对偶形式转化为只带等式约束的优化问题,即下面的最优化问题W:????

                            max \\quad\\quad\\quad\\quad W(\\alph)=\\sum\\limits_{i=1}^{n}{\\alph_i}-\\frac{1}{2}\\sum\\limits_{i,j=1}^{n}{y_iy_j\\alph_i\\alph_j<x_i,x_j>}

                             s.t.\\quad\\quad\\quad\\quad \\sum\\limits_{i=1}^{n}{\\alph_iy_i}=0

                                    \\alph_i \\geq 0 \\quad\\quad\\quad\\quad i=1...n

求得\\alph_i后就得到了w^*=\\sum\\limits_{i=1}^{n}\\alph_i^*y_ix_i,它使得几何间隔\\gamma=\\frac{1}{||w||}取最大值,从而得到最优分类超平面。

      K-T点要满足的条件还有一个是:\\alph^*_i(y_i(<w^*_i,x_i>+b^*)-1) =0,这个式子说明了什么问题呢?

      1、显然,函数间隔不等于1的那些输入点的拉格朗日系数必为0(这些点是非积极因素),而函数间隔恰好为1的输入点的拉格朗日系数则不为0(这些点是积极因素),这说明确定最终分类超平面的就是这些函数间隔为1的边界点,所以这些输入点就是支持向量(Support Vector)。从这里也能看出支持向量机的抗干扰能力比较强,对非积极因素的扰动对于最优化解没有影响;

      2、y_i(<w^*,x_i>+b^*)-1=0,其中i为支持向量,因为:y(<w^*,x_i>+b^*)=y(\\sum\\limits_{i \\in support \\quad vector}y_i\\alph_i^*<x_i,x>+b^*)=1

,我们的目标函数<w^*,w^*>=\\sum\\limits_{i,j \\in support \\quad vector}{y_iy_j\\alph_i^*\\alph_j^*<x_i,x_j>

                                     =\\sum\\limits_{j \\in support \\quad vector}{\\alph_j^*y_j}\\sum\\limits_{i \\in support \\quad vector}{y_i\\alph_i^*<x_i,x_j>}

                                     =\\sum\\limits_{j \\in support \\quad vector}{\\alph_j^*y_j}(\\frac {1} {y_j}-b^*)

                                     =\\sum\\limits_{i \\in support \\quad vector}{\\alph^*_i}(注意这里b^*为常数,且有约束条件s.t.\\quad\\quad\\quad\\quad \\sum\\limits_{i=1}^{n}{\\alph_iy_i}=0

于是通过这样的对偶转化,我们得到了实现几何间隔为\\gamma=\\frac{1}{||w^*||}=
{(\\sum\\limits_{i \\in support \\quad vector}\\alph^*_i)}^{1/2}的最大间隔超平面。

     通过上面的推导也可以看出将二次规划转化为其对偶问题可以简化约束条件,让我们记住最优化问题W吧,这是一个很牛逼的转化,这个式子还有个特点,就是“数据仅出现在内积中”。

     前面的讨论都是说输入样本是线性可分的时候怎么找到最大间隔超平面来划分两类数据,那么如果输入样本是线性不可分的,那可怎么办呀,前面的那些讨论不就成徒劳的了么?学习SVM后才知道它牛的地方,如果我们可以通过某种函数映射将输入样本映射到另外一个高维空间并使其线性可分的话,前面的讨论结果不就都可以用到了么,还记得“数据仅出现在内积中”吧,假设这个映射关系是:\\Phi:X->F,这时候的内积<x_i,x_j>就变成了<\\Phi(x_i),\\Phi(x_j)>,如果有方法能够将内积<\\Phi(x_i),\\Phi(x_j)>直接算出,就将把输入样本“从低维空间向高维空间映射”和“求映射后的内积”这两步合并成了一步,这样直接计算的方法就是核函数方法,下篇学习核函数吧,SVM的理论部分还是很数学的啊!

以上是关于二次规划问题的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 二次规划函数的使用以及扩展

MATLAB 二次规划函数的使用以及扩展

MATLAB 二次规划函数的使用以及扩展

二次规划的舍入问题

二次规划问题

Haskell 中的二次规划