【365】拉格朗日乘子法与KKT条件说明

参考:知乎回答 - 通过山头形象描述

参考:马同学 - 如何理解拉格朗日乘子法?

参考: 马同学 - 如何理解拉格朗日乘子法和KKT条件?

参考:拉格朗日乘数 - Wikipedia


自己总结的规律

  • 梯度为0, 其实就是说明里面每一个参数的偏导数都为0.
  • 拉格朗日乘子法是对于等式约束.
  • KKT条件是针对不等式约束条件.

拉格朗日乘子法结论

  如果有n个约束等式:

  
egin{aligned}
    & 	ext{minimize} & & f \
    & 	ext{subject to} & & g_i=0,i=1,2,cdots,n
end{aligned}

  只需解如下方程组:

  
egin{cases}
    displaystyle
abla f+sum_{i}^{n}lambda_i
abla g_i=0
    \
    g_i=0,i=1,2,cdots,n
end{cases}

KKT条件

  求如下的极值:

  
egin{aligned}
    & 	ext{minimize} & & f \
    & 	ext{subject to} & & g_i=0,i=1,2,cdots,n\
    &                   & & h_ile 0,i=1,2,cdots,n\
end{aligned}

  通过解下面这个方程组来得到答案:

  
egin{cases}
    displaystyle
abla f+sum_{i}^{n}lambda_i
abla g_i+sum_{j}^{m}mu_j
abla h_j=0
    \
    g_i=0,i=1,2,cdots,n\
    \
    h_jle 0,j=1,2,cdots,m\
    \
    mu_j ge 0\
    \
    mu_j h_j = 0\
end{cases}

  这个方程组也就是所谓的KKT条件。
  进一步解释下方程组的各个项:


egin{array}{c|c}
    hline
    \
    quad displaystyle
abla f+sum_{i}^{n}lambda_i
abla g_i+sum_{j}^{m}mu_j
abla h_j=0quad&quad 等式与不等式约束的梯度的线性组合quad \
    quad g_i=0,i=1,2,cdots,nquad&quad等式约束quad\
    quad h_jle 0,j=1,2,cdots,mquad&quad不等式约束quad\
    quad mu_j ge 0quad&quad不等式约束下,法线方向相反quad\
    quad mu_j h_j=0quad&quad不等式约束下egin{cases}情况一:mu=0,h_jle 0\\情况二:mu_j ge 0,h_j=0end{cases}quad\
    \
    hline
end{array}

说明:  最难理解的是$mu_j h_j = 0$, 
  • 根据左图, 此时的最小值在$f$函数的最小值点取得, 因此 $mu_j=0$, 此时$h_j ≤0$
  • 根据右图, 此时的最小值在两者相切的地方取得, 因此 $mu_j≥0$, 此时$h_j =0$
  

参考: 马同学博客~


按照相应的相切概念会得到下面的式子,即两者具有等比例的剃度值。

$$ abla f(x,y)+lambda abla g(x,y)=0 ag{1}$$

如何上面的式子转为拉格朗日乘子法的一般形式,即

$$mathcal{L}(x,y,lambda)=f(x,y)+lambda cdot g(x,y) ag{2}$$

并且是对于三个变量的偏导数为0,下面我从(1)到(2)的理解.

由(1)可得

$ abla_x f(x,y)+lambda abla_x g(x,y)=0$

$ abla_y f(x,y)+lambda abla_y g(x,y)=0$

$ abla_x (f(x,y)+lambda abla_x g(x,y))= abla_xmathcal{L}(x,y,lambda)=0 ag{a}$

$ abla_y (f(x,y)+lambda abla_y g(x,y))= abla_ymathcal{L}(x,y,lambda)=0 ag{b}$

而下面的式子等于0则限制了$g(x,y)=0$

$ abla_lambdamathcal{L}(x,y,lambda)=g(x,y)=0 ag{c}$

也就是说明,(2)式在(a)(b)(c)三个式子下可以达到(1)式的效果.此时存在下面的表达式,所以等价,两者有一样的极值.

$$mathcal{L}(x,y,lambda)=f(x,y)$$

原文地址:https://www.cnblogs.com/alex-bn-lee/p/10345970.html