Loading [Contrib]/a11y/accessibility-menu.js

alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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

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

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

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

参考:拉格朗日乘数 - Wikipedia


自己总结的规律

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

拉格朗日乘子法结论

  如果有n个约束等式:

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

  只需解如下方程组:

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

KKT条件

  求如下的极值:

  
\begin{aligned}
    & \text{minimize} & & f \\
    & \text{subject to} & & g_i=0,i=1,2,\cdots,n\\
    &                   & & h_i\le 0,i=1,2,\cdots,n\\
\end{aligned}

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

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

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


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

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

参考: 马同学博客~


 

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

$$\nabla f(x,y)+\lambda \nabla g(x,y)=0 \tag{1}$$

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

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

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

由(1)可得

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

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

$\nabla_x (f(x,y)+\lambda\nabla_x g(x,y))=\nabla_x\mathcal{L}(x,y,\lambda)=0 \tag{a}$

$\nabla_y (f(x,y)+\lambda\nabla_y g(x,y))=\nabla_y\mathcal{L}(x,y,\lambda)=0 \tag{b}$

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

$\nabla_\lambda\mathcal{L}(x,y,\lambda)=g(x,y)=0 \tag{c}$

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

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

 

posted on   McDelfino  阅读(508)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示