zoukankan      html  css  js  c++  java
  • 【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)$$

  • 相关阅读:
    SQLServer和Access数据传输简单总结
    Session 详解
    SQL日志文件过大问题的解决方法
    如何删除表中的重复记录?
    HDOJ 3711 Binary Number
    HDOJ 2022
    活动选择问题
    浮点数的比较
    HDOJ 2037
    找最长递增子数列
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/10345970.html
Copyright © 2011-2022 走看看