深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法在有不等约束时使用KKT条件。

一般情况下,最优化问题会碰到一下三种情况:

(1)无约束条件

  这是最简单的情况,解决方法通常是函数对变量求导,令求导函数等于0的点可能是极值点。将结果带回原函数进行验证即可。

(2)等式约束条件

  设目标函数为f(x),约束条件为h_k(x),形如:

  s.t. 表示subject to ,“受限于”的意思,l表示有l个约束条件。
复制代码
minf(x)
s.t. h_k(x) = 0(k = 1,2...l)

则解决方法是消元法或者拉格朗日法。消元法比较简单不在赘述,这里主要讲拉格朗日法,因为后面提到的KKT条件是对拉格朗日乘子法的一种泛化。

   例如给定椭球:

\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}

   求这个椭球的内接长方体的最大体积。这个问题实际上就是条件极值问题,即在条件 \frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}下,求f(x,y,z)=8xyz的最大值。

   当然这个问题实际可以先根据条件消去(消元法),然后带入转化为无条件极值问题来处理。但是有时候这样做很困难,甚至是做不到的,这时候就需要用拉格朗日乘数法了。

   首先定义拉格朗日函数F(x):(其中λk是各个约束条件的待定系数。)

F(x,\lambda)=f(x)+\sum_{k=1}^{l}{\lambda_k h_k(x)}

然后解变量的偏导方程:

\frac{\partial F}{\partial x_i}=0 ...\frac{\partial F}{\partial \lambda_i}=0

   如果l个约束条件,就应该有l+1个方程。求出的方程组的解就可能是最优化值(高等数学中提到的极值),将结果带回原方程验证就可得到解。

   回到上面的题目,通过拉格朗日乘数法将问题转化为

\begin{split} F(x,y,z,\lambda) &= f(x,y,z)+\lambda \varphi (x,y,z) \\  &= 8xyz+ \varphi (\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}-1) \end{split}

   对F(x,y,z, \lambda)求偏导得到

\begin{split} \frac {\partial F(x,y,z, \lambda)}{\partial x} &= 8yz + \frac{2 \lambda x}{a^2}=0 \\ \frac {\partial F(x,y,z, \lambda)}{\partial y} &= 8xz + \frac{2 \lambda y}{b^2}=0 \\ \frac {\partial F(x,y,z, \lambda)}{\partial z} &= 8xy + \frac{2 \lambda z}{c^2}=0 \\ \frac {\partial F(x,y,z, \lambda)}{\partial \lambda} &= \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2}-1=0 \\ \end{split}

   联立前面三个方程得到bx=ayaz=cx,带入第四个方程解之

x= \frac{\sqrt{3}}{3}a \quad y= \frac{\sqrt{3}}{3}b \quad z= \frac{\sqrt{3}}{3}c

   带入解得最大体积为:

V_{max} = f(\frac{\sqrt{3}}{3}a , \frac{\sqrt{3}}{3}b, \frac{\sqrt{3}}{3}c) = \frac{8 \sqrt{3}}{9} abc

至于为什么这么做可以求解最优化?维基百科上给出了一个比较好的直观解释。

举个二维最优化的例子:
复制代码
minf(x,y) \\ s.t. g(x,y) = c
这里画出z=f(x,y)的等高线(函数登高线定义见百度百科):
复制代码

绿线标出的是约束g(x,y)=c的点的轨迹。蓝线是f(x,y)的等高线。箭头表示斜率,和等高线的法线平行。从梯度的方向上来看,显然有d1>d2。绿色的线是约束,也就是说,只要正好落在这条绿线上的点才可能是满足要求的点。如果没有这条约束,f(x,y)的最小值应该会落在最小那圈等高线内部的某一点上。而现在加上了约束,最小值点应该在哪里呢?显然应该是在f(x,y)的等高线正好和约束线相切的位置,因为如果只是相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值。
如果我们对约束也求梯度∇g(x,y),则其梯度如图中绿色箭头所示。很容易看出来,要想让目标函数f(x,y)的等高线和约束相切,则他们切点的梯度一定在一条直线上(f和g的斜率平行)。
也即在最优化解的时候:∇f(x,y)=λ(∇g(x,y)-C) (其中∇为梯度算子; 即:f(x)的梯度 = λ* g(x)的梯度,λ是常数,可以是任何非0实数,表示左右两边同向。)

  即:▽[f(x,y)+λ(g(x,y)−c)]=0  λ≠0
复制代码

那么拉格朗日函数: F(x,y)=f(x,y)+λ(g(x,y)−c) 在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y)−c总等于零。 min( F(x,λ) )取得极小值时其导数为0,即▽f(x)+▽∑ni=λihi(x)=0,也就是说f(x)和h(x)的梯度共线。 。简单的说,在F(x,λ)取得最优化解的时候,即F(x,λ)取极值(导数为0,▽[f(x,y)+λ(g(x,y)−c)]=0)的时候,f(x)与g(x) 梯度共线,此时就是在条件约束g(x)下,f(x)的最优化解。

(3)不等式约束条件 设目标函数f(x),不等式约束为g(x),有的教程还会添加上等式约束条件h(x)。此时的约束优化问题描述如下:

minf(x)
\begin{split} s.t. \  h_j(X) &=0 \quad (j=1,2....p) \\ g_k(X) &\leq0 \quad (k=1,2...q) \end{split}
    则我们定义不等式约束下的拉格朗日函数L,则L表达式为:
复制代码
L(X,\lambda,\mu) = f(X)+\sum_{j=1}^{p}{\lambda_i h_j(X)}+\sum_{k=1}^{q}{\mu_k g_k(X)}

其中f(x)是原目标函数, h_j(X) 是第j个等式约束条件, λ_j 是对应的约束系数,g_k(X) 是不等式约束, u_k是对应的约束系数。

  常用的方法是KKT条件,同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a, b, x)= f(x) + ag(x)+bh(x),

  KKT条件是说最优值必须满足以下条件:

    1)L(a, b, x)对x求导为零;

    2)h(x) =0;

    3)a*g(x) = 0;

  求取这些等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。

  接下来主要介绍KKT条件,推导及应用。详细推导过程如下:

KTT条件:let \ L(x,\mu) = f(x)+\sum_{k=1}^{q}{\mu_k g_k(x)}_{(\mu_k>0,g_k \leq0)} \tag{1}
\because \mu g(x) \leq0
\therefore max_\mu L(x,\mu) = f(x)   \tag{2}
min_x f(x) = min_xmax_\mu L(x, \mu) \tag{3}
\begin{split} max_\mu min_x L(x,\mu) &= max_\mu [min_x f(x) + min_x \mu g(x)] \\ &= max_\mu min_x f(x) + max_\mu min_x \mu g(x) \\ &= min_x f(x) + max_\mu min_x \mu g(x)  \end{split}
\begin{cases} \mu_k ≥ 0\\ g_k(x) \leq0 \end{cases}
=>min_x \mu g(x)= \begin{cases} 0 \quad \mu=0 \ or g(x) =0 \\ -∞ \quad \mu>0 \ and g(x)<0 \\ \end{cases}
\therefore  max_ \mu  min_x \mu g(x) = 0 _{\mu= 0 \ or \ g(x)=0 }\\
max_\mu min_x L(x,\mu) =  min_x f(x) + max_\mu min_x \mu g(x) = min_x f(x) \tag{4}
\therefore min_x max_ \mu L(x,\mu)=max_\mu min_x L(x,\mu)
\begin{cases} L(x,\mu) \\ 0 \quad \mu=0 \ or g(x) =0 \\ -∞ \quad \mu>0 \ and g(x)<0 \\ \end{cases} => min_x max_ \mu L(x,\mu)=max_\mu min_x L(x,\mu) = min_x f(x)

当满足一定条件时原问题,对偶问题,min_xf(x)的解相同在最优解想x^*

参考:

  【1】拉格朗日乘数法

  【2】KKT条件介绍

  【3】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

  【4】拉格朗日乘子法和KKT条件

原文: 链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值