拉格朗日乘子法、对偶、KTT

2019-03-13  本文已影响0人  scarecrow002

拉格朗日乘子法、对偶、KTT

一般情况下,最优化问题分为三类

一、 无约束条件下的最优化问题

这种最优化问题比较简单,直接求导为0就可以得到。

二、 等式约束下的最优化问题

即除了目标函数之外,还有一些约束条件。假设目标函数为f(x),约束条件为h_k(x),这里的k用来表示有k个约束条件。
minf(x)

s.t. h_k(x) = 0 \quad k = 1,2,3..

求这样的最优化问题有两种方法:
一种是使用消元法来解,但是这种方法有的时候很难求解,甚至无解。
另一种方法便是使用拉格朗日乘子法,其求解步骤分为三步:

具体步骤如下:

  1. 首先构造一个拉格朗日函数,我们令
    F(x,λ,l) = f(x) + \sum_{k=1}^lλ_kh_k(x)

其中\lambda_k是第k个约束条件系数,又叫拉格朗日乘子。注意这里的F(x,\lambda,l)是对x,\lambda,l三个变量的函数。

  1. 于是我们分别对x,\lambda,l变量求偏导数为0的解,得出来的解代入目标函数便是函数在等式约束条件。

为什么这样求解得到的便是我们想要得到的约束极值呢?我们可以用图来直观的解释一下:

image
图中的圆圈表示目标函数与 image

这里的红色的平面和蓝色的球面分别代表了两个约束 h1(x)h2(x),那么这个问题的可行域就是它们相交的那个圆。这里蓝色箭头表示平面的梯度,黑色箭头表示球面的梯度,那么相交的圆的梯度就是它们的线性组合(只是直观上的,类似向量的加法),所以在极值点的地方目标函数的梯度和约束的梯度的线性组合在一条直线上。所以就满足:
∇f(x)=λ\sum_{i=1}^2u_i∇h_i(x)=\sum_{i=1}^2λ_2∇h_i(x)

h_1(x)=0

h_2(x)=0

大于2个约束的情况也一样。为了好记,将原来的约束的问题写成:
L(x,λ)=f(x)+\sum_{i=1}^nλ_i∇h_i(x)\tag{1}
然后对 x、λ 求偏导,然后让它们为0,得到的就是上式。

三、 既有等式约束,又有不等式约束的情况

minf(x)

s.t. h_i(x)=0, i=1,2,...k

c_j(x)≤0, j=1,2,...l

f(x),h_i(x),c_i(x)要求在定义域上是连续可微函数

注: 这里的等式和不等式约束公式只是一种表述的方式,现实中遇的可能与其略有不同,但是稍加转换便可以转换成上述的形式。

引入广义拉格朗日(generalized Lagrange function):
L(x,α,β) = f(x) +\sum_{j=1}^lβ_jh_j(x)+ \sum_{i=1}^kα_ic_i(x)\tag{2}
这个式子和上面的公式一不同的是,这里特别要求α_i>0,为什么这么要求我们后面再讲,先解释一下这个式子。这里,α,β是拉格朗日乘子(其实就是函数的系数),x=(x^{(1)},x=(x^{(2)},...,x=(x^{(3)})\in R^n

现在把L(x,\alpha,\beta)看做关于\alpha_i,\beta_j的函数,现在求其最大值,即求:
\max_{\alpha,\beta:\alpha_i\geq0}L(x,\alpha,\beta)
这里L(x,\alpha,\beta)\alpha_i,\beta_j的函数,目标就是确定\alpha_i,\beta_j的值,使得L(x,\alpha,\beta)能取到最大值,确定了\alpha_i,\beta_j的值之后,上式就是一个之和x有关的函数(多元函数求极值,对每个参数的偏导都为0的道理),定义这个函数为:
θ_p(x) = \max_{α,β,α_i\ge0}{L(x,α,β)}

其中L(x,α,β) = f(x) +\sum_{j=1}^lβ_jh_j(x)+ \sum_{i=1}^kα_ic_i(x)

  下面我们讨论一下x取值和θ_p(x)之间的关系.

  当某个x不满足h_i(x),c_i(x)的约束 ,即h_i(x)\neq0或者c_i(x)>0时,\max_{α,β,α_i\ge0}{L(x,α,β)} = +\infty.

  原因:首先这里的\alpha_i,\beta_j是我们刚才在求解函数最大值时已经确定的,若h_i(x)\neq0,考虑下求偏导的情况,我们求出来的\beta_i很容易可以取值使得原函数取到正无穷(既然求能使函数取最大值的\beta_i,如果可以,肯定取可以使其函数能得最大值得\beta),同理,.当c_i(x)>0时,{a_i}可以取{+\infty},使得{L(x,\alpha,\beta)}=+\infty,于是,我们可以证明,当某个x不满足h_i(x),c_i(x)的约束 ,即h_i(x)\neq0或者c_i(x)>0时,\max_{α,β,α_i\ge0}{L(x,α,β)} = +\infty.

 当x满足约束时,显然L(x,\alpha,\beta) = f(x).

  综上我们可得:
θ_p(x) = \max_{α,β,α_i\ge0}{L(x,α,β)}= \begin{cases} +\infty, & \text{其他} \\ f(x), & \text{如果{x}满足约束} \end{cases}
  在满足约束的条件下,我们求\theta_p(x)的最小值,即:
\min_x\theta_p(x) = \min_xf(x) = \min_x\max_{x,α,β}L(x,α,β)
  而在不满足约束的情况下{θ_p(x)} = +\infty,显然不可能是最小值,于是,我们的目标,求解约束条件下minf(x)最优解的问题就可以转化成求解\min_x\max_{x,α,β}L(x,α,β)的无约束问题(这个式子被称为广义拉格朗日函数的极小极大问题),这样,就成功的把约束条件给去掉了.使用p来表示原始问题,于是原始问题的最优解p^*就可以表示如下:
p^*=\min_xθ_p(x)

对偶问题

  定义一个关于α,β的函数:
θ_D(α,β) = \min_xL(x,α,β)
考虑极大化θ_D(α,β),即:
\max_{α,β:α\geq0}θ_D(α,β) = \max_{α,β:α\geq0}\min_xL(x,α,β)
这个式子被称为广义拉格朗日函数的极大极小问题,也被称为原始问题的对偶问题.对偶问题的最优值用d^*表示:
d^*=\max_{α,β:α\geq0}θ_D(α,β)
对比原始问题,对偶问题是先求关于函数关于x的最小化问题,之后再求函数关于α,β最大化问题.而原始问题恰恰相反,是求函数关于α,β的最大化问题,之后再求关于x的最小化问题.总是是求函数关于α,β最大化和关于x的最小化的问题,只是求解的顺序有所不同.

那么对偶问题和原始问题有什么关系呢?

定理1:若对偶问题和原始问题都有最优值,则:
d^*=\max_{α,β:α\geq0}\min_xL(x,α,β)\leq\min_x\max_{x,α,β}L(x,α,β)=p^*
即:对偶问题的最优值不大于原始问题的最优值(弱对偶(weak duality)).

证明:
θ_D(α,β) = \min_xL(x,α,β)\leq\max_{x,α,β}L(x,α,β)\leqθ_p(x)*
即:
\theta_D(α,β) \leq\theta_p(x)
因为对偶问题和原始问题都有最优值,所以:
\max_{x,α,β}θ_D(α,β)\leq\min_{x}θ_p(x)
所以:
d^*=\max_{α,β:α\geq0}\min_xL(x,α,β)\leq\min_x\max_{x,α,β}L(x,α,β)=p^*
原问题得证.

这些有什么用呢?

推论1:如果x^*,α^*,β^*分别是原始问题和对偶问题的可行解,并且p^*=d^*(即原始问题和对偶问题在可行解x^*,α^*,β^*上的取的最优值相同,这被称为强对偶(strong duality)),则x^*,α^*,β^*分别是原始问题和对偶的最优解.

于是,当原始问题不好求解而对偶问题相对好求解的时候,这时我们就可以用求解对偶问题替代求解原始问题.并且更重要的是,对偶问题是一个凸优化问题,他的极值是唯一的(因为d^*<p^*).这样无论一个问题是不是凸优化的问题,我们都能将其转化成凸优化的问题

新的问题又来了,什么情况下才能使得p^*=d^*呢?这就是KTT条件.

定理2:假设函数f(x)c_i(x)都是凸函数,h_j(x)是仿射函数(由一阶多项式构成的函数),并且不等式约束c_i(x)是严格可行的,即存在x,对所有的i,都使得c_i(x)<0(注意这里是严格要求小于0,而不是小于等于0),则存在x^*,α^*,β^*使得x^*是原始问题的解,α^*,β^*是对偶问题的解,并且
p^*=d^*=L(x^*,α^*,β^*)
定理3:在满足定理2的条件下,则x^*,α^*,β^*分别是原始问题和对偶问题的最优解的充要条件是x^*,α^*,β^*满足下面的KTT条件:
∇_xL(x^*,α^*,β^*) = 0\tag{1}

α^*c_i(x)=0, \quad i=1,2,...,k\tag{2}

c_i(x)\leq0, \quad i=1,2,...,k\tag{3}

α_i\geq0, \quad i=1,2,...,k\tag{4}

h_j(x^*)=0 \quad j=1,2,..,l\tag{5}

其中条件(1)是指函数对于x^*,α^*,β^*偏导为0,(3~5)是约束条件.

并且注意条件(4),当α_i > 0(注意只是大于而不是大于等于,原条件中是大于等于),则由条件(2)(3)可知c_i(x)=0.

参考

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

https://www.cnblogs.com/90zeng/p/Lagrange_duality.html

http://blog.pluskid.org/?p=702

<统计学习方法> 李航

上一篇下一篇

猜你喜欢

热点阅读