拉格朗日对偶性

倖福魔咒の 提交于 2020-01-16 20:08:43

拉格朗日对偶性

在约束最优化的问题中,常常需要利用拉格朗日对偶性(Language duality)将原始问题转为对偶问题,通过解决对偶问题来得到原始问题的解。

拉格朗日乘数法

拉格朗日乘数法是用来求条件极值的,极值问题可以分为两类:

  1. 求函数在给定区间上的极值,对自变量没有其他的要求,这种极值称为无条件极值。
  2. 对自变量有一些附加的约束条件限制下的极值,称为条件极值

比如给定椭球x2a2+y2b2+z2c2=1\frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1,求这个椭球内接长方体的最大体积,这个问题实际上就是条件极值问题,即在条件:
x2a2+y2b2+z2c2=1 \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1
下,求f(x,y,z)=8xyzf(x,y,z)=8xyz的最大值
这个问题实际上可以先根据条件消去z,然后代入转化为无条件极值问题来处理。但有时候这样做很困难,甚至是做不到的,这时候就需要用到拉格朗日乘数法了。如下描述:
求函数z=f(x,y)在满足φ(x,y)=0\varphi (x,y)=0下的条件极值,可以转化为函数F(x,y,λ)=f(x,y)+λφ(x,y)F(x,y, \lambda)=f(x,y)+\lambda \varphi(x,y)的无条件极值问题,如果(x0,y0,λ0)(x_0,y_0,\lambda_0)是函数F(x,yλ)F(x,y\lambda)的驻点,则(x0,y0)(x_0,y_0)就是条件极值的嫌疑点

条件极值问题可以转换为无条件极值问题求解,但有些条件关系比较复杂,代换和运算很复杂,而相对来说,拉格朗日乘数法不需要代换,运算简单,这就是优势!

广义拉格朗日乘数法

为了求如下约束的最优问题:
minxf(x),s.t.g(x)0,h(x)=0 \mathop{\min}\limits_{x}f(x), s.t.g(x) \leq 0, h(x)=0
引入广义拉格朗日函数:
L(x,λ,η)=f(x)+λg(x)+ηh(x),λ0 L(x,\lambda , \eta) = f(x) + \lambda g(x) + \eta h(x), \lambda \geq 0
这里的L(x,λ,η)L(x, \lambda, \eta)叫做拉格朗日函数,λ,η\lambda, \eta叫做拉格朗日乘子。有时也可以把λ\lambda叫做KKT乘子
首先需要证明:
minxf(x),s.t.g(x)0,h(x)=0minxmaxλ,η:λ0L(x,λ,η) \mathop{\min}\limits_{x}f(x), s.t.g(x) \leq 0,h(x)=0 \Leftrightarrow \mathop{\min}\limits_{x} \mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} L(x, \lambda , \eta)

证明过程如下:

  1. 首先将maxλ,η:λ0L(x,λ,η)\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} L(x, \lambda , \eta)记住函数P(x)P(x)

    1. 假定设定某个违反原始问题约束条件的xx,即存在某个x使得g(x)>0g(x) >0h(x)0h(x) \neq 0

      • g(x)>0g(x) >0,可以令λ+\lambda \rightarrow + \infty,使得P(x)=+P(x) = +\infty;
      • h(x)0h(x) \neq 0,可以令η\eta使得ηh(x)+\eta h(x) \rightarrow +\infty,使得P(x)=+P(x) = +\infty;
      • 上述两种情况最后都会使:P(x)=maxλ,η:λ0L(x,λ,η)=+P(x) = \mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} L(x, \lambda , \eta) = +\infty
    2. 假设给定某个符合原始问题约束条件的xx,即g(x)0g(x) \leq 0h(x)=0h(x)=0,则:

      • P(x)=maxλ,η:λ0L(x,λ,η)=f(x)P(x) = \mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} L(x, \lambda , \eta) = f(x)
      • 此时h(x)=0h(x)=0,同时为了最大化L(x,λ,η)L(x,\lambda, \eta),而g(x)0,λ0g(x) \leq 0, \lambda \geq 0,此时g(x)=0,λ=0g(x)=0, \lambda =0
    3. 由以上两种情况可得:
      P(x)={f(x),x+, P(x) = \begin{cases} f(x), & x满足原始问题约束 \\ +\infty, & 否则 \end{cases}

  2. 来证明 maxλ,η:λ0minxL(x,λ,η)minxmaxλ,η:λ0L(x,λ,η)\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} \mathop{\min}\limits_{x} L(x, \lambda , \eta) \leq \mathop{\min}\limits_{x}\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0}L(x, \lambda , \eta)
    其中minxmaxλ,η:λ0L(x,λ,η)\mathop{\min}\limits_{x}\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0}L(x, \lambda , \eta)叫做原始问题,而maxλ,η:λ0minxL(x,λ,η)\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} \mathop{\min}\limits_{x} L(x, \lambda , \eta)叫做对偶问题

    • 由于原始问题和最优问题都有最优解,所以可以分别假设
      minxmaxλ,η:λ0L(x,λ,η)=L(x1,λ1,η1)\mathop{\min}\limits_{x}\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0}L(x, \lambda , \eta)=L(x_1, \lambda_1, \eta_1)
      maxλ,η:λ0minxL(x,λ,η)=L(x0,λ0,η0) \mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} \mathop{\min}\limits_{x} L(x, \lambda , \eta) = L(x_0, \lambda_0, \eta_0)
      而由于x0,x1x_0, x_1都满足约束条件,即h(x0)=0,h(x1)=0h(x_0)=0, h(x_1)=0,所以:
      L(x0,λ0,η0)=L(x0,λ0) L(x_0, \lambda_0,\eta_0) = L(x_0, \lambda_0)
      L(x1,λ1,η1)=L(x1,λ1)L(x_1, \lambda_1, \eta_1) = L(x_1, \lambda_1)
      由原始问题最优解的定义可以知道–对于任意的xx都有下式成立:
      L(x0,λ0)L(x,λ0) L(x_0, \lambda_0) \leq L(x, \lambda_0)
      由对偶问题的最优解的定义可以知道–对于任意的λ\lambda有下式成立:
      L(x1,λ1)L(x1,λ) L(x_1, \lambda_1) \geq L(x_1, \lambda)

    所以,可推得:
    L(x1,λ1)L(x1,λ0)L(x0,λ0)L(x_1, \lambda_1) \geq L(x_1, \lambda_0) \geq L(x_0, \lambda_0)
    也就证明了:
    maxλ,η:λ0minxL(x,λ,η)minxmaxλ,η:λ0L(x,λ,η)\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} \mathop{\min}\limits_{x} L(x, \lambda , \eta) \leq \mathop{\min}\limits_{x}\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0}L(x, \lambda , \eta)
    这个公式的理解,可以另辟蹊径,minmax相当于从胖子里面找最瘦的,而maxmin相当于从瘦子里面找最胖的,显然胖子里最瘦的要胖与瘦子里最胖的

原始问题与对偶问题的关系

首先,我们把原始问题的范围在扩大,在上面介绍广义拉格朗日函数乘数法时,引入的约束条件只有两个,即g(x)0,h(x)=0g(x) \leq 0, h(x)=0
现在我们把范围扩大,假设f(x),gi(x),hj(x)f(x),g_i(x),h_j(x)是定义在RnR^n上的连续可微函数,那么就可以称下面的约束最优化问题为原始问题或原始最优化问题:
minxRnf(x)s.t.gi(x)0,i=1,2...k;hj(x)=0,j=1,2...l; \begin{aligned} &\mathop{\min}\limits_{x \in R^n} f(x) \\ s.t.\quad &g_i(x)\leq 0, i=1,2...k; \\ & h_j(x)=0, j=1,2...l; \end{aligned}
在引入拉格朗日函数后:
L(x,λ,η)=f(x)+i=1kλigi(x)+j=1lηjhj(x)L(x, \lambda, \eta) = f(x) + \sum_{i=1}^{k}\lambda_ig_i(x) + \sum_{j=1}^{l}\eta_jh_j(x)
其中x=(x1,x2,x3...xn)TRn,λix=(x^1,x^2,x^3...x^n)^T \in R^n, \lambda_iηj\eta_j是拉格朗日乘子,其中λi0\lambda_i \geq 0
所以我们可以构建它的原始问题和对偶问题:

  • 原始问题[也叫广义拉格朗日极小极大问题]: minxmaxλi,ηj:λi0L(x,λ,η)\mathop{\min}\limits_{x} \mathop{\max}\limits_{\lambda_i,\eta_j:\lambda_i \geq 0}L(x,\lambda,\eta)
  • 对偶问题[也叫拉格朗日极大极小问题]:maxλi,ηj:λi0minxL(x,λ,η)\mathop{\max}\limits_{\lambda_i,\eta_j:\lambda_i \geq 0} \mathop{\min}\limits_{x}L(x,\lambda,\eta)

在上面的广义拉格朗日乘数法中,我们已经介绍了原始问题和对偶问题,并且证明了当原始问题和对偶问题都有最优解时,必定满足:
maxλ,η:λ0minxL(x,λ,η)minxmaxλ,η:λ0L(x,λ,η)\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} \mathop{\min}\limits_{x} L(x, \lambda , \eta) \leq \mathop{\min}\limits_{x}\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0}L(x, \lambda , \eta)
这个性质就叫做弱对偶性,对于所有的优化问题都是成立的,即时原始问题非凸。显然对于这个在实数空间里,并有多个约束条件的拉格朗日函数,也是成立的。
与弱对偶性相对应的,还有一个强对偶性,强对偶性满足:
maxλ,η:λ0minxL(x,λ,η)==minxmaxλ,η:λ0L(x,λ,η)\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} \mathop{\min}\limits_{x} L(x, \lambda , \eta) == \mathop{\min}\limits_{x}\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0}L(x, \lambda , \eta)

强对偶性是一个非常好的性质,是因为在强对偶性成立的情况下,可以通过求解对偶问题来得到原始问题的解,在SVM里就是这么做的。当然并不是所有的对偶问题都满足强对偶性,在SVM里是直接假定强对偶性的成立,但其实只要满足一些条件,强对偶性就是成立的,比如Slater条件和KKT条件

Slater条件

如果对于原始问题和其对偶问题,其中的函数f(x)和g_i(x)是凸函数,h_j(x)是仿射函数,或者说原始问题是一个凸优化问题【这两者能不能等价,目前还没看到相关证明】,如果存在x使得gi(x)<0g_i(x) < 0,对任意的i=1,...,mi=1,...,m,那么原始问题和对偶问题就是强对偶的。
也就是说原始问题是凸优化问题,并且满足Slater条件的话,那么强对偶就是成立的,注意:这里只是指出了强对偶的一种情况,并不是唯一的情况。
证明网址在:https://www.cnblogs.com/szqfreiburger/p/11573939.html#slater%E6%9D%A1%E4%BB%B6
PS:证明我没看懂,嗯

上面的说法,还可以换种说法:
对于原始问题和对偶问题,假设函数f(x)和g_i(x)是凸函数,h_j(x)是仿射函数,且不等式约束g_i(x)是严格可行的,即存在x,对于所有的i,都有g_i(x)<0,那么就存在x,λ,ηx*, \lambda*, \eta*,使得xx*是原始问题的解,λ,η\lambda*, \eta*是对偶问题的解,并且满足强对偶,即:
maxλ,η:λ0minxL(x,λ,η)==minxmaxλ,η:λ0L(x,λ,η)\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0} \mathop{\min}\limits_{x} L(x, \lambda , \eta) == \mathop{\min}\limits_{x}\mathop{\max}\limits_{\lambda ,\eta : \lambda \geq 0}L(x, \lambda , \eta)

什么是仿射函数,主要通过介绍仿射函数和线性函数的区别来了解

  • 仿射函数是由一阶多项式构成的函数,一般形式为f(x)=Ax+b,这里A是一个m×km\times k的矩阵,x是一个k向量,b是一个m向量,**实际上反映了一种从k维到m维的空间映射关系。**设f是一个矢性函数,若他可以表示成f(x1,x2,...,xn)=A1x1+A2x2+...+Anxn+bf(x_1,x_2,...,x_n)=A_1x_1 + A_2x_2+...+A_nx_n +b,其中AiA_i可以是标量,也可以是矩阵,则称f是仿射函数。
  • 其中的特例是,当b=0时,仿射函数就可以叫线性函数(正比例关系)

KKT条件

对于原始问题及其对偶问题,假设函数f(x)和g_i(x)是凸函数,h_j(x)是仿射函数,且不等式约束g_i(x)是严格可执行的,即存在x,对于所有i都有g_i(x)<0,则存在x,λ,ηx*, \lambda*, \eta*,使得xx*是原始问题的解,λ,η\lambda*,\eta*是对偶问题的充分必要条件是x,λ,ηx*, \lambda*, \eta*满足下面的KKT条件:

L(x,λ,η)=0λigi(x)=0,i=1,2,...,kgi(x)0,i=1,2,...kλi0,i=1,2,...khj(x)=0,j=1,2,...,l\begin{aligned} &\nabla L(x^*, \lambda^*,\eta^*) = 0 \\ &\lambda_i^{*}g_i(x)=0, \qquad i=1,2,...,k \\ &g_i(x) \leq 0, \qquad i=1,2,...k \\ &\lambda_i^{*} \geq 0,\qquad i=1,2,...k \\ &h_j(x) = 0, \qquad j=1,2,...,l \end{aligned}

总的来说,任何满足强对偶性的优化问题,只要其目标函数与约束函数可微,任一对原始问题和对偶问题的解都是满足KKT条件的

参考网址:https://zhuanlan.zhihu.com/p/38182879
参考网址:https://blog.csdn.net/acdreamers/article/details/41413445

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