支持向量机(SVM)之一:KKT,拉格朗日对偶

35 阅读15分钟

1.拉格朗日乘子法的直观解释

1)拉格朗日乘子法:求解带等式约束多元函数极值的核心数学方法,核心是通过引入 “拉格朗日乘子” 将约束条件融入目标函数,转化为无约束优化问题求解。在求多元函数f(x,y)f(x,y)极值中,有约束条件,设为g(x,y)=0g(x,y)=0可以使用拉格朗日乘子法求最值,步骤为:

a.引入拉格朗日乘子 λ\lambda(常数),构建拉格朗日函数 L(x,y,λ)=f(x,y)+λg(x,y)L (x,y,\lambda)=f (x,y)+\lambda g (x,y)
b.对 LL 分别求各变量(xyλ)(x、y、\lambda)的偏导数,即L(x,y,λ)x\frac{\partial L(x,y,\lambda)}{\partial x}L(x,y,λ)y\frac{\partial L(x,y,\lambda)}{\partial y}L(x,y,λ)y\frac{\partial L(x,y,\lambda)}{\partial y},并令所有偏导数等于 0,得到方程组。
c.解方程组得到的 (x,y)(x,y) 即为目标函数在约束条件下的极值候选点,需进一步验证是否为极值。

2)拉格朗日数乘法的原理:对于要优化的f(x,y)f(x,y)(先从二元函数开始分析,一元函数限定条件是等式的话,无论函数图像如何,它的最值一定是限定最值的那个点,没有讨论的意义,例如,想要优化f(x)=x2f(x)=x^2在限定条件x=bx=b的条件下,即无论如何,最值点一定是(b,f(b))=(b,b2)(b,f(b))=(b,b^2)这个点,最值也只能是f(b)=b2f(b)=b^2),限定条件为g(x,y)=0g(x,y)=0。先看没有约束条件的情况,想要优化f(x,y)f(x,y)就是求f(x,y)f(x,y)的梯度:f(x,y)=(f(x,y)x,f(x,y)y)T\vec\nabla f(x,y)=(\frac{\partial f(x,y)}{\partial x},\frac{\partial f(x,y)}{\partial y})^T,想要找到最小值(以最小值为例)必须沿梯度下降的方向即 f(x,y)=(f(x,y)x,f(x,y)y)T-\vec\nabla f(x,y)=-(\frac{\partial f(x,y)}{\partial x},\frac{\partial f(x,y)}{\partial y})^T移动才可找到最小值点,再看约束条件,g(x,y)=0g(x,y)=0,是一个在XoYXoY平面的约束,可以看作是XoYXoY平面上的一条曲线,那么问题就转化为该约束曲线投影到 z=f(x,y)z=f(x,y) 的3D空间曲面上的最小值,即找到该曲面上的约束曲线的的最值。就是要沿着该空间曲面的约束曲线上进行梯度下降,设Δx=(Δx,Δy)T\vec{\Delta x}=(\Delta x,\Delta y)^T为沿着曲线移动的方向,即曲线的切线方向。因为当沿着梯度下降的方向移动的时候函数值f(x,y)f(x,y)是不断减小的,所以移动的方向需与函数梯度下降的方向夹角小于90度,于是就得到了一个结论,移动必须一直满足Δxf(x,y)<0\vec{\Delta x}\cdot-\vec\nabla f(x,y)<0,直到移动到一个点使得Δxf(x,y)=0\vec{\Delta x}\cdot-\vec\nabla f(x,y)=0,即Δx\vec{\Delta x}垂直于f(x,y)-\vec\nabla f(x,y),此时,该点为即为最小值点。对于曲线g(x,y)=0g(x,y)=0,是二元函数z=g(x,y)z=g(x,y)z=0z=0的等值线,也是g(x,y)=0g(x,y)=0确定的隐函数。于是,对于所有满足g(x,y)=0g(x,y)=0的点,使用隐函数求导法则,可得k=gxgyk=-\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}}(gy0\frac{\partial g}{\partial y}\neq0),于是切线方向为l=(1,k)=(gy,gx)\vec l=(1,k)=(\frac{\partial g}{\partial y},-\frac{\partial g}{\partial x}),在观察z=g(x,y)z=g(x,y)的梯度g(x,y)=(g(x,y)x,g(x,y)y)T\vec\nabla g(x,y)=(\frac{\partial g(x,y)}{\partial x},\frac{\partial g(x,y)}{\partial y})^T,可以得出结论,g(x,y)g(x,y)确定的在XoYXoY平面上的曲线的所有点的切线方向 l\vec l 均满足lg(x,y)=0\vec l\cdot\vec\nabla g(x,y)=0即两者互为垂直关系。又因为最小值点满足Δxf(x,y)=0\vec{\Delta x}\cdot-\vec\nabla f(x,y)=0,即Δx\vec{\Delta x}f(x,y)=0-\vec\nabla f(x,y)=0是垂直的,而Δx\vec{\Delta x}是曲线的切线方向,就有Δx\vec{\Delta x}g(x,y)\vec\nabla g(x,y)垂直,最终就得出一个结论,f(x,y)=0-\vec\nabla f(x,y)=0g(x,y)\vec\nabla g(x,y) 是平行的,那么,就有f(x,y)=λg(x,y)-\vec\nabla f(x,y)=\lambda\vec\nabla g(x,y)f(x,y)+λg(x,y)=0\vec\nabla f(x,y)+\lambda\vec\nabla g(x,y)=\vec 0,并且这个λ>0\lambda>0,因为只有f(x,y)f(x,y)反方向梯度与g(x,y)g(x,y)的梯度方向一致的时候,才是最小所以λ\lambda必须大于0,再观察拉格朗日乘子法的构造:L(x,y,λ)=f(x,y)+λg(x,y)L (x,y,\lambda)=f (x,y)+\lambda g (x,y),对其求xxyy的偏导就得到了方程组:{f(x,y)x+λg(x,y)x=0f(x,y)y+λg(x,y)y=0\left\{\begin{matrix}\frac{\partial f(x,y)}{\partial x}+\lambda\frac{\partial g(x,y)}{\partial x}=0\\\frac{\partial f(x,y)}{\partial y}+\lambda\frac{\partial g(x,y)}{\partial y}=0\end{matrix}\right.,如果将其写成向量的形式,(f(x,y)x,f(x,y)y)T+λ(g(x,y)x,g(x,y)y)T=(0,0)T(\frac{\partial f(x,y)}{\partial x},\frac{\partial f(x,y)}{\partial y})^T+\lambda(\frac{\partial g(x,y)}{\partial x},\frac{\partial g(x,y)}{\partial y})^T=(0,0)^T 那恰好是 f(x,y)+λg(x,y)=0\vec\nabla f(x,y)+\lambda\vec\nabla g(x,y)=\vec 0,再加上约束条件即可构成整个求解方程组,这就解释了为什么拉格朗日数乘法需要构造函数L(x,y,λ)=f(x,y)+λg(x,y)L (x,y,\lambda)=f (x,y)+\lambda g (x,y)求解最优。

3)实例说明(此图为寻找最大值点,是沿着梯度方向而非反梯度方向,与2)所述的原理是等价的):设f(x,y)=x+yf(x,y)=x+yg(x,y)=x2+y22g(x,y)=x^2+y^2-2,如下图所示,黑色线为f(x,y)f(x,y)z=0z=0平面的等值线,红色线为g(x,y)g(x,y)z=0z=0平面的等值线,即g(x,y)=0g(x,y)=0,绿色箭头为g(x,y)g(x,y)z=0z=0的梯度,黄色箭头为g(x,y)=0g(x,y)=0的切线即上述的Δx\vec{\Delta x},而橙色箭头为f(x,y)f(x,y)的梯度即f(x,y)\vec\nabla f(x,y),目标为在空间的红色的曲线找到最值点,黄色箭头为移动方向,从A点出发,沿着f(x,y)f(x,y)梯度方向,此时f(x,y)f(x,y)梯度和切线的夹角小于90度,说明f(x,y)f(x,y)梯度一直在上升,直至到达点B时,f(x,y)f(x,y)梯度不再上升,此时达到了最大值点,也就是f(x,y)f(x,y)梯度与切线呈90度垂直状态,因为切线与g(x,y)g(x,y)的梯度是垂直的,所以此时f(x,y)f(x,y)g(x,y)g(x,y)平行,如果继续往切线方向走,梯度在下降,因为梯度与切线的夹角大于90度,与f(x,y)f(x,y)梯度的反方向呈小于90的角,如点C,如果到达了另外一个与f(x,y)f(x,y)的等值线的切点,那么梯度降到最低点,所以此时就为最小值,此时f(x,y)f(x,y)梯度的反方向与g(x,y)g(x,y)平行,就是2)描述的情况。

在这里插入图片描述

2.KKT(Karush-Kuhn-Tucker)条件的直观解释

1)为什么要引入KKT条件:在处理实际问题中拉格朗日数乘法只能处理等式约束,但是在大多数的实际问题中,通常涉及到不等式,如g(x,y)0g(x,y)\le0,而KKT条件能解决不等式+等式的问题。二元函数而言,对于等式问题,其约束实际上是寻找在平面XoYXoYg(x,y)=0g(x,y)=0确定的曲线投影到二元函数f(x,y)f(x,y)的空间曲面的最值,所以其实本质上,它属于在空间的一条曲线寻找最值,而该条曲线是在二元函数f(x,y)f(x,y)上的。但是如果上升到不等式如g(x,y)0g(x,y)\le0,对于XoYXoY平面就不再是一条曲线,而是一个平面(如x2+y2=1x^2+y^2=1是一个曲线圆,而x2+y21x^2+y^2\le1就是一个半径为1的圆),那么其最值就是寻找在XoYXoY上由g(x,y)0g(x,y)\le0确定的面投影到曲面f(x,y)f(x,y)的曲面的最值,简而言之,它是求一个曲面的最值,这个曲面是整个f(x,y)f(x,y)曲面的一部分。所以单靠拉格朗日数乘法不能解决这类的问题,于是就引入了KKT条件。最优值点满足KKT条件。

2)分类讨论最值情况:求f(x,y)f(x,y)的一部分曲面(求的这部分的条件由g(x,y)0g(x,y)\le0给出),一般可分为两种情况(这里所有的g(x,y)0g(x,y)\le0 这是KKT的前置条件之一,所有的不等式可以化成g(x,y)0g(x,y)\le0):

a.当整体最值点,即没有约束条件情况下的最值点,在需要优化的这一部分的曲面里面的时候,那么其最值点就是没有约束情况下的最值点,于是对于拉格朗日数乘法构造的函数:L(x,y,λ)=f(x,y)+λg(x,y)L (x,y,\lambda)=f (x,y)+\lambda g (x,y)中,λ=0\lambda=0,因为最值点就是没有约束的情况下的最值点,此时只需要求f(x,y)f(x,y)的最值即可
b.当整体最值点,不在需要优化的这一部分的曲面里面的时候。在上述2)拉格朗日数乘法的原理中,求最小值(如果要求最大值也可以化成求最小值,在整个函数前加一个负号即可,二者是等价的)得出的结论是:f(x,y)=λg(x,y)-\vec\nabla f(x,y)=\lambda\vec\nabla g(x,y),且f(x,y)f(x,y)的反方向梯度与g(x,y)g(x,y)的方向必须是一致的,所以此时必有λ>0\lambda>0。在这种情况下最小值必定在g(x,y)=0g(x,y)=0确定的曲线投影到f(x,y)f(x,y)曲面上从空间曲线取到,此时就回归到正常的拉格朗日数乘法问题上来

3)引出KKT的条件:

a.前置条件:必须满足f(x,y)f(x,y)的反方向梯度与g(x,y)g(x,y)的梯度平行,且方向相同即f(x,y)=λg(x,y)-\vec\nabla f(x,y)=\lambda\vec\nabla g(x,y),其次必须满足在XoYXoY平面上g(x,y)0g(x,y)\le0
b.分类讨论得出的条件:λ0\lambda\ge0,其次当λ=0\lambda=0的时候g(x,y)0g(x,y)\le0,当λ>0\lambda>0的时候g(x,y)=0g(x,y)=0,于是就有λg(x,y)=0\lambda g(x,y)=0
c.总结四个KKT条件:设最小值点为x=(x,y)T\vec {x^*}=(x,y)^Tλ\lambda的最大值点为λ\lambda^*,那么根据上面的推到结果就总结出KKT条件为:{g(x)0λ0L(x,λ)=0λg(x)=0\left\{\begin{matrix}g(\vec {x^*})\le0\\\lambda\ge0\\\nabla L(\vec{x^*},\lambda^*)=\vec 0\\\lambda g(\vec{x^*})=0\end{matrix}\right.

4)引入实例(一元函数的情况,因为如果出现不等式,就不再是求一元曲线上的一个点的最小值,而是求范围的最小值,那么其就有讨论的意义了):设f(x)=x2f(x)=x^2,不等式xb0x-b\le 0xbx\le b,如下图所示,分两种情况讨论最小值:

a. 当b>0b>0的时候,对应到点CC,点A(0,0)A(0,0)包含在约束条件范围内,那么此时最小值点就是A(0,0)A(0,0)。如果构造拉格朗日函数L(x,λ)=x2+λ(xb)L(x,\lambda)=x^2+\lambda(x-b)时对应的λ=0\lambda=0,类似的,如果升高维度去理解,就相当于f(x,y)f(x,y)的全局最小值在约束范围所给出的部分曲面内,那么此时最小值即是全局最小值(没有约束条件下的最小值)。
b.当b0b\le0的时候,对应到点B,点A(0,0)A(0,0)没有包含在约束条件范围内,那么此时最小值点就是点BB,因为xx继续往左,函数值越大。如果构造拉格朗日函数L(x,λ)=x2+λ(xb)L(x,\lambda)=x^2+\lambda(x-b)时对应的λ>0\lambda>0,类似的,如果升高维度去理解,就相当于f(x,y)f(x,y)的最小值在约束范围的边界中取到,也就是约束范围边界确定的曲线投影到曲面上的曲线,此时就转化为等式的拉格朗日问题。

若把两者合在一起,就形成了KKT条件。求解方程{L(x,λ)x=0xb=0\left\{\begin{matrix}\frac{\partial L(x,\lambda)}{\partial x}=0\\x-b=0\end{matrix}\right.{2x+λ=0xb=0\left\{\begin{matrix}2x+\lambda=0\\x-b=0\end{matrix}\right.解得λ=2b\lambda=-2b因为λ0\lambda \ge0所以此时只有b<0b<0,当b>0b>0对应情况a,此时只能取λ=0\lambda=0因此,λ\lambda的取值范围是:[0,2b][0,-2b],故λ=max(0,2b)\lambda=max(0,-2b)因此如果要求f(x)f(x)的最小值f(x)=minxmaxλL(x,λ)f(x^*)=min_xmax_\lambda L(x,\lambda)(其中xx^*是指最小值点,λ0\lambda\ge0

在这里插入图片描述

3.多约束条件下的最值(进一步了解KKT)

1)描述:上述KKT条件只讨论了一个约束条件,如果将其扩展多个约束条件,设有pp个约束条件gi(x)0g_i(\vec x)\le0 (i=1,2,3,...,pi=1,2,3,...,px=(x,y)T\vec x=(x,y)^T,先讨论二元函数,如果想要讨论更高的维度x=(x1,x2,...,xn)T\vec x=(x_1,x_2,...,x_n)^T) ,类似的,其KKT条件就可以扩展为:{gi(x)0(i=1,2,3,...,p)λi0(i=1,2,3,...,p)L(x,λ)=0(λ=(λ1,λ2,λ3,...,λp)T)λigi(x)=0(i=1,2,3,...,p)\left\{\begin{matrix}g_i(\vec {x^*})\le0(i=1,2,3,...,p)\\\lambda_i\ge0(i=1,2,3,...,p)\\\nabla L(\vec{x^*},\vec{\lambda^*})=\vec 0(\vec{\lambda^*}=(\lambda_1,\lambda_2,\lambda_3,...,\lambda_p)^T)\\\lambda_i g_i(\vec{x^*})=0(i=1,2,3,...,p)\end{matrix}\right.,此时L(x,λ)=f(x)+(λ)Tg(x)L(\vec{x^*},\vec{\lambda^*})=f(\vec{x^*})+(\vec{\lambda^*})^T\cdot\vec g(\vec{x^*})(其中g(x)=(g1(x),g2(x),g3(x),...,gp(x))\vec g(\vec{x^*})=(g_1(\vec{x^*}),g_2(\vec{x^*}),g_3(\vec{x^*}),...,g_p(\vec{x^*}))),其一般形式可以写成:L(x,λ1,λ2,λ3,...,λp)=f(x)+i=1pλigi(x)L(\vec{x^*},\lambda^*_1,\lambda^*_2,\lambda^*_3,...,\lambda^*_p)=f(\vec{x^*})+\sum_{i=1}^{p}\lambda_i\cdot g_i(\vec{x^*})

2)图像表述:如下图所示设f(x,y)=x2+y2f(x,y)=x^2+y^2,有三个约束条件:g1(x,y)=y2x+10g_1(x,y)=y-2x+1\le0g2(x,y)=xy10g_2(x,y)=x-y-1\le0g3(x,y)=x+y10g_3(x,y)=x+y-1\le0,其中f(x,y)=x2+y2f(x,y)=x^2+y^2的等值线用绿色的同心圆表示,g1(x,y)g_1(x,y)g2(x,y)g_2(x,y)g3(x,y)g_3(x,y)的等值线分别用蓝色,红色,黑色虚线表示,显然,如果没有约束条件下,最小值应该是点DD(暗黄色表示),三个约束条件构成的平面区域用三角形表示他们三个的三个交点分别为A,B,CA,B,C,分别用红,黑,蓝表示,在g1(x,y)g_1(x,y)上有一点EE(用青蓝色表示)是与f(x,y)=0.2f(x,y)=0.2的等值线相切的点。观察图形可知在等值线上的每一个点均相等,并且等值线越靠近点DD,其值越小,所以在约束条件给出的平面内,点EE是最小值其他的点均不是最小值点。然后观察梯度三个约束条件的梯度(分别使用蓝色,红色,黑色的箭头表示)和f(x,y)f(x,y)的反方向梯度(用紫色箭头表示)只有点EEf(x,y)f(x,y)的反方向梯度和g(x,y)g(x,y)的梯度是方向一致的;反关点A,B,CA,B,Cλ10\lambda_1\ge0λ20\lambda_2\ge0λ30\lambda_3\ge0的条件下无论如何g1(x,y)g_1(x,y)g2(x,y)g_2(x,y)g3(x,y)g_3(x,y)都不能实现f(x,y)=λ1g1(x,y)+λ2g2(x,y)+λ3g3(x,y)-\vec\nabla f(x,y)=\lambda_1\vec\nabla g_1(x,y)+\lambda_2\vec\nabla g_2(x,y)+\lambda_3\vec\nabla g_3(x,y),即无论如何g1(x,y)g_1(x,y)g2(x,y)g_2(x,y)g3(x,y)g_3(x,y)的梯度都不能通过线性组合的方式合成f(x,y)f(x,y)的反向梯度,在一定程度上也说明了λ0\lambda\ge0,否则是有可能实现f(x,y)=λ1g1(x,y)+λ2g2(x,y)+λ3g3(x,y)-\vec\nabla f(x,y)=\lambda_1\vec\nabla g_1(x,y)+\lambda_2\vec\nabla g_2(x,y)+\lambda_3\vec\nabla g_3(x,y),举个例子点CC(蓝色的点),当取g3(x,y)g_3(x,y)的梯度(黑色的箭头)的反方向,即λ<0\lambda<0,是有可能通过线性组合的方式合成f(x,y)-\vec\nabla f(x,y)(紫色箭头)。对于点A,B,CA,B,C,它们都不是最优点(最优点为EEx=(x,y)T\vec{x^*}=(x,y)^TEE点的坐标为(x,y)(x,y))。那么显然,对于g2(x,y)g_2(x,y)g3(x,y)g_3(x,y),代入x\vec{x^*}g2(x)<0g_2(\vec{x^*})<0(红色线的左上方区域均为使g2(x,y)<0g_2(x,y)<0的点),g3(x)<0g_3(\vec{x^*})<0(黑色线的左下方区域均为使g3(x,y)<0g_3(x,y)<0的点);对于g1(x,y)g_1(x,y)代入x\vec{x^*}g1(x)=0g_1(\vec{x^*})=0(在蓝色线上的点使g1(x,y)=0g_1(x,y)=0的点),所以此时令λ2=0\lambda_2=0λ3=0\lambda_3=0此时g2(x,y)<0g_2(x,y)<0g3(x,y)<0g_3(x,y)<0,这便是KKT条件中的gi(x)0(i=1,2,3,...,p)g_i(\vec {x^*})\le0(i=1,2,3,...,p)λi0(i=1,2,3,...,p)\lambda_i\ge0(i=1,2,3,...,p)λigi(x)=0(i=1,2,3,...,p)\lambda_i g_i(\vec{x^*})=0(i=1,2,3,...,p)。把gi(x,y)<0g_i(x,y)<0的函数即需要时λ=0\lambda=0的约束条件函数称为是松弛的。把gi(x,y)=0g_i(x,y)=0的函数即需要时λ>0\lambda>0的约束条件函数称为是紧致的。所以说着三个条件称为KKT的互补松弛条件。再看一种情况,如果最小值点DD在黄色区域里面的时候,边界g1(x,y)g_1(x,y)g2(x,y)g_2(x,y)g3(x,y)g_3(x,y)上任意一点,都不能在λi>0\lambda_i>0的条件下满足f(x,y)=λ1g1(x,y)+λ2g2(x,y)+λ3g3(x,y)-\vec\nabla f(x,y)=\lambda_1\vec\nabla g_1(x,y)+\lambda_2\vec\nabla g_2(x,y)+\lambda_3\vec\nabla g_3(x,y),此时λ1=0\lambda_1=0λ2=0\lambda_2=0λ3=0\lambda_3=0

在这里插入图片描述

4.拉格朗日对偶

1)凸集(convex set):集合中任意两点 x1x_1x2x_2,以及任意 t[0,1]t \in [0,1],连接两点的线段 tx1+(1t)x2tx_1 + (1-t)x_2 上的所有点都属于该集合(无凹陷)。如图所示,当集合是xy10xy-1\le0yx20y-x-2\le0yx+20y-x+2\ge0围成的区域即红虚线,蓝虚线,绿虚线围成的集合时,连接集合内的两个点,C(12,2)C(\frac{1}{2},2)D(2,12)D(2,\frac{1}{2})形成黑色线段时,该线段有上有点不在集合内的,这就不是凸集。当集合是x2+y20x^2+y^2\le0时,该圆上任意一点的连线形成的线段上任何一点都在圆内,那么圆即集合x2+y20x^2+y^2\le0是一个凸集。凸集的反义并非凹集,而是非凸集。

在这里插入图片描述

2)仿射集(affien set):集合中任意两点确定的整条直线都包含在集合内(而非仅两点间的线段),它是凸集的特殊情况,所有仿射集都是凸集,但并非所有凸集都是仿射集,所以对于二维平面,一条一直线如yx=0y-x=0就是一个仿射集;对于三维空间,一个平面如x+y+z=0x+y+z=0就是一个仿射集。数学表达:SRnS\subseteq R^n(nn维向量,标量可视为一维向量),对于任意实数tRt\in Rx,yS\vec{x},\vec{y}\in S均满足:tx+(1t)ySt\vec x+(1-t)\vec y\in S

3)凸函数(convex function):定义域为凸集,且对定义域内任意两点的连线,函数图像始终在连线下方,(凹函数则是函数图像始终在连线上方,凹函数一般可以化为凸函数例如在其前面加一个负号)数学表达为:对于一元函数:任意t[0,1]t\in[0,1],均满足f(tx1+(1t)x2)tf(x1)+(1t)f(x2)f(tx_1+(1-t)x_2)\le tf(x_1)+(1-t)f(x_2),对于nn(n>1n>1)元函数f(tx+(1t)y)tf(x)+(1t)f(y)f(t\vec{x}+(1-t)\vec{y})\le tf(\vec{x})+(1-t)f(\vec{y})x=(x1,x2,x3,...,xn)\vec{x}=(x_1,x_2,x_3,...,x_n)y=(x1,x2,x3,...,xn)\vec{y}=(x_1,x_2,x_3,...,x_n)),如果是严格凸函数,则把\le改成<<,如y=x2y=x^2z=x2+y2z=x^2+y^2就是凸函数,因为对于y=x2y=x^2在该曲线上任意两点的连线,该线段上的所有点均在函数图像的上方;对于z=x2+y2z=x^2+y^2,在该曲面上任意两点的连线构成的弦,该弦上的所有点均在函数提箱的上方。

4)凸优化问题(convex optimization problem):目标函数为凸函数、不等式约束函数为凸函数、等式约束函数为仿射函数,且可行域为凸集的优化问题(不等式约束围成的区域称为可行域)。

5)对偶问题(dual problem):对于原问题minf(x,y)minf(x,y),约束条件为:gi(x,y)0g_i(x,y)\le0hi(x,y)=0h_i(x,y)=0等价于:minxmaxλi0L(x,λ)min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda)x=(x,y)T\vec x=(x,y)^Tλ=(λ1,λ2)T\vec\lambda=(\lambda_1,\lambda_2)^TL(x,λ)L(\vec x,\vec\lambda)为拉格朗日函数,先聚焦于不等式情况,等式情况可以使用正常的拉格朗日数乘法与不等式问题一起优化),约束条件为:gi(x)0g_i(\vec x)\le0,它的对偶问题为maxλi0minxL(x,λ)max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda),约束条件变为λ0\lambda\ge0因为只看最外层的minmin或者maxmax,所以约束条件发生了变化。

6)强对偶和弱对偶:设A(x)=maxλi0L(x,λ)A(\vec x)=max_{\lambda_i\ge0}L(\vec x,\vec\lambda)(因为要最大化λi\lambda_i,所以固定x\vec x),设B(λ)=minxL(x,λ)B(\vec\lambda)=min_{\vec x}L(\vec x,\vec\lambda)(因为要最小化x\vec x,所以固定λ\vec\lambda)于是就有A(x)L(x,λ)B(λ)A(\vec x)\ge L(\vec x,\vec\lambda)\ge B(\vec\lambda)恒成立,即A(x)B(λ)A(\vec x)\ge B(\vec\lambda)恒成立。而A(x)minxA(x)maxλi0B(λ)B(λ)A(\vec x)\ge min_{\vec x}A(\vec x)\ge max_{\lambda_i\ge 0}B(\vec\lambda)\ge B(\vec\lambda)也恒成立,从此得出结论minxA(x)=minxmaxλi0L(x,λ)maxλi0minxL(x,λ)=maxλi0B(λ)min_{\vec x}A(\vec x)=min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda)\ge max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda)=max_{\lambda_i\ge 0}B(\vec\lambda)。如果minxmaxλi0L(x,λ)=maxλi0minxL(x,λ)min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda)=max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda),称强对偶,如果minxmaxλi0L(x,λ)>maxλi0minxL(x,λ)min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda)>max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda),称弱对偶

7)强对偶的前提:先改写拉格朗日函数L(x,λ)=f(x)+(λ)Tg(x)=t+(λ)TμL(\vec x,\vec\lambda)=f(\vec x)+(\vec\lambda)^T\cdot\vec g(\vec{x})=t+(\vec\lambda)^T\cdot\vec\muμ\vec\mu是一个向量,在这里先理解成一个简单变量),原问题是:minxmaxλi0L(x,λ)min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda),可以把原问题的可行域就是(假设有mm个不等式约束条件){(t,μ)t=f(x),μi=gi(x),xD}=G1\left\{(t,\vec\mu)|t=f(\vec x),\mu_i=g_i(\vec x),\vec x\in D \right\}=G_1D={xgi(x)0}(i=1,2,3,..,m)D=\left\{\vec x|g_i(\vec x)\le0\right\}(i=1,2,3,..,m)其对偶问题为:maxλi0minxL(x,λ)max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda),它的可行域为{(t,μ)t=f(x),μi=gi(x),xRn}=G2\left\{(t,\vec\mu)|t=f(\vec x),\mu_i=g_i(\vec x),\vec x\in R^n\right\}=G_2,按照改写的拉格朗日,原问题是:min{t(t,μ)G1,μi0}min\left\{t|(t,\vec\mu)\in G_1,\mu_i\ge0\right\},对偶问题是:maxλi0minx{t+(λ)Tμ(t,μ)G2,λi0}max_{\lambda_i\ge0}min_{\vec x}\left\{t+(\vec\lambda)^T\cdot\vec\mu|(t,\vec\mu)\in G_2,\lambda_i\ge 0\right\}于是建立tOμtO\mu直角坐标系,G2G_2分是否为凸集以及凸集的情况三种情况来讨论。

a.G2G_2为非凸集:如图所示,在tOμtO\mu平面中,由于xRn\vec x\in R^n但是在u,tu,t平面不是无限的,假设G2G_2区域为下图中的黄色+橙色区域;在G1G_1中,因为μ0\mu\le0,所以其区域是黄色部分要求原问题:min{t(t,μ)G1,μi0}min\left\{t|(t,\vec\mu)\in G_1,\mu_i\le0\right\},显然tt的最小值是点AA(用蓝色交点表示)的纵坐标即为p;对于对偶问题:maxλi0minx{t+(λ)Tμ(t,μ)G2,λi0}max_{\lambda_i\ge0}min_{\vec x}\left\{t+(\vec\lambda)^T\cdot\vec\mu|(t,\vec\mu)\in G_2,\lambda_i\ge 0\right\}μ\vec\mu看作是一个变量,那么先最小化t+(λ)Tμt+(\vec\lambda)^T\cdot\vec\mu,相当于在G2G_2区域内(黄色+橙色区域内)固定斜率(对于在tOμtO\mu的平面内,t+(λ)Tμt+(\vec\lambda)^T\cdot\vec\mu相当于一条直线,把tt想象成XOYXOY里的yy;把μ\mu想象成xx,那么斜率为(λ)T-(\vec\lambda)^T,因为λi0\lambda_i\ge0,所以斜率必定是非正的),找出直线t+(λ)Tμ=constt+(\vec\lambda)^T\cdot\vec\mu=const的最小值(即截距,constconst就是截距)。先把斜率设为00,那么显然G2G_2的最小值必定是点BB(用红色交点表示)的纵坐标,之后需要最大化(λ)T(\vec\lambda)^T使得截距最大化,即在斜率小于00的情况下最小化斜率(因为斜率是(λ)T-(\vec\lambda)^T,且λi>0\lambda_i>0,所以最大化(λ)T(\vec\lambda)^T就是最小化斜率),那么显然当AABB两点连线的时候斜率满足(当斜率继续减小的时候,l=t+(λ)Tμl=t+(\vec\lambda)^T\cdot\vec\mu 进入了G1G_1(也算G2G_2)的黄色区域,此时显然直线在A点下方,而AB两点形成的直线满足对偶问题,但是比ll的截距更小,而对偶问题是需要寻找最小的ll截距,这个截距是一个"范围",然后,再从这个截距"范围"里面寻找最大,如果进入黄色区域就超出了这个"范围",那么他就不算最优解了)。显然这种情况下p>qp>q的即minxmaxλi0L(x,λ)>maxλi0minxL(x,λ)min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda)>max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda),是弱对偶的。

在这里插入图片描述

b.G2G_2为凸集的情况一:最小值点在tt轴上,如下图所示,首先分析原问题:min{t(t,μ)G1,μi0}min\left\{t|(t,\vec\mu)\in G_1,\mu_i\le0\right\},其可行域就是G1G_1(黄色范围)那么tt的最小值就是点CC,点CC恰好在tt轴上;再分析对偶问题:maxλi0minx{t+(λ)Tμ(t,μ)G2,λi0}max_{\lambda_i\ge0}min_{\vec x}\left\{t+(\vec\lambda)^T\cdot\vec\mu|(t,\vec\mu)\in G_2,\lambda_i\ge 0\right\},先固定斜率(假设一开始为00),那么CC恰好就是最小的截距,再减小斜率,发现只有切线的时候最小(不能进入黄色区域)。显然这种情况下p=qp=q(点CC)的即minxmaxλi0L(x,λ)=maxλi0minxL(x,λ)min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda)=max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda),是强对偶的。

在这里插入图片描述

c.G2G_2为凸集的情况二:最小值点不在tt轴上,如下图所示,首先分析原问题:min{t(t,μ)G1,μi0}min\left\{t|(t,\vec\mu)\in G_1,\mu_i\le0\right\},其可行域就是G1G_1(黄色范围)那么tt的最小值就是点CC的纵坐标值;再分析对偶问题:maxλi0minx{t+(λ)Tμ(t,μ)G2,λi0}max_{\lambda_i\ge0}min_{\vec x}\left\{t+(\vec\lambda)^T\cdot\vec\mu|(t,\vec\mu)\in G_2,\lambda_i\ge 0\right\},先固定斜率(假设一开始为00),那么点CC的纵坐标恰好就是最小的截距,然后想要减小斜率,但是不能减小,因为从斜率是0开始减小,就进入了黄色区域了,所以斜率只能为0。显然这种情况下也是p=qp=q(点CC)的即minxmaxλi0L(x,λ)=maxλi0minxL(x,λ)min_{\vec x}max_{\lambda_i\ge0}L(\vec x,\vec\lambda)=max_{\lambda_i\ge 0}min_{\vec x}L(\vec x,\vec\lambda),也是强对偶的。

在这里插入图片描述

于是就引出了一个结论,当原问题是一个凸问题并且满足slater条件(至少有一个点在约束条件之内即对于约束条件:gi(x)0g_i(\vec x)\le0gi(x)g_i(\vec x)不能恒为00)的情况下,满足强对偶即原问题的最优解等于对偶问题的最优解。

8)KKT条件成为最优解的重要条件的前提:从2.可知,一个最优点是满足KKT的条件的,但是满足KKT条件的未必是最优点,所以最优点是满足KKT条件的必要条件。但是当该问题是强对偶问题的条件下,最优点是满足KKT条件的充要条件。