拉格朗日乘子法和KKT 条件解析

article/2025/9/14 0:35:35

1.最优化问题


拉格朗日乘子法和KKT条件是求解最优化问题的重要方法,因此,在正式讲解二者之前,要先谈一谈最优化问题。

通常,需要求解的最优化问题分为3类:

1.1. 无约束优化问题:     

\min_{x}f(x)

对于此类问题,可以通过求取优化函数的导数,使其为0即可。

1.2. 等式约束优化问题:

\min_{x}f(x)     

 s.t.        h_{i}(x) = 0         i=1,2....m

对于此类问题,通常利用拉格朗日乘子法,首先基于优化函数和约束条件构造拉格朗日函数,通过拉格朗日函数对各个变量求导,令导数为0,可求得候选值集合,然后验证可求最优值。具体步骤如下:

(1) 构造拉格朗日函数:

L(x,\lambda ) = f(x)+\sum_{i=1}^{m}\lambda_{i} h_{i}(x)

(2) 对各个变量求导并且使导数值为0:

\triangledown_{x}L(x,\lambda) =0

\triangledown_{\lambda}L(x,\lambda) =0

(3) 进行方程组联立,求解。

\begin{cases} &\triangledown_{x}L(x,\lambda) =0 \\ & \triangledown_{\lambda}L(x,\lambda) =0 \end{cases}

1.3.等式和不等式均有的优化问题:

\min_{x}f(x)   

s.t.        h_{i}(x) = 0         i=1,2....m

             g(x)_{j}\leqslant 0         j=1,2....n

对于此类问题,需要借助KKT条件,具体步骤如下:

(1) 构造拉格朗日函数:

                  L(x,\lambda ) = f(x)+\sum_{i=1}^{m}\lambda_{i} h_{i}(x)+\sum_{j=1}^{n}\alpha _{j}g_{j}(x) 

(2) KKT条件:

\begin{cases} & \triangledown _{x}L(x,\lambda,\alpha )=0 \\ & \alpha\cdot g(x)= 0 \\ & \alpha\geq 0 \end{cases}         

(3)联立KKT条件求解

\begin{cases} & \triangledown _{x}L(x,\lambda,\alpha )=0 \\ & \alpha\cdot g(x)= 0 \\ & \alpha\geq 0 \\ &h(x)=0 \\ &g(x)\leq 0 \end{cases}

2.拉格朗日乘子法和KKT条件能够得到最优值的原因

2.1 拉格朗日乘子法

从一个简单的二元函数来说明为什么拉格朗日乘子法works!
设定要优化的问题为:

\min_{x}f(x) = x_{1}+x_{2}

s.t.   h(x)= x_{1}^2+x_{2}^2-2

如图所示,斜线是目标函数的等值线,红色的圆圈代表约束条件。等值线与约束函数相交的点就是满足约束条件的点,在这些点中,需要找到使得目标函数取值最小的那个点(极值点)。这里可以直接给出一个结论:“极值点一定在等值线与约束函数曲线相切的地方取得”。因为如果在相交的地方取得,那么,沿着约束曲线往前或往后走,一定有其他相交的等值线,这样,函数会继续变大或变小,只有在切点处,继续往前和往后走,函数值才可能同时变大或变小。

在切点处存在一个重要结论:目标函数和约束函数具有相同的切线,则相应的梯度在同一条直线上,可能是同向,也可能是反向,因为对于等式约束:h(x)=0,把h(x)变成-h(x)求解是一样的,但是此时梯度会反向。所以,在极小值x^{*}处,存在如下等式:

{\color{Red} \triangledown f(x^{*}) = \lambda\triangledown h(x^{*})} 

即:

\triangledown f(x^{*}) - \lambda\triangledown h(x^{*})=0

此时,我们再回头看等式约束下所构造的拉格朗日函数:

L(x,\lambda ) = f(x)+\sum_{i=1}^{m}\lambda_{i} h_{i}(x)

对各个变量求导并且使导数值为0:

\triangledown_{x}L(x,\lambda) =\triangledown f(x^{*})+\sum_{i=1}^{m}\lambda_{i}\triangledown h_{i}(x^*)=0     此式正是\triangledown f(x^{*}) = \lambda\triangledown h(x^{*})的体现。

\triangledown_{\lambda}L(x,\lambda) =\sum_{i=0}^{m}h_{i}(x^*)=0           此式正好迎合了等式约束h(x)=0

 

结论:综上所述,对于受等式约束的最优化问题,可以构建拉格朗日函数,并令函数对各个变量的梯度等于零,建立多个方程组,进行联立求解最优点,进而求得最优值,这种方法被称为拉格朗日乘子法,其中的\lambda拉格朗日乘子

2.2 Karush-Kuhn-Tucker(KKT)条件

对于受不等式g(x)\leq 0约束的最优化问题,把不等式形成的区域称为可行域。可以分两种情况对不等式约束的优化问题进行分析。

2.2.1 极值点落在可行域内(不包含边界)

考虑目标函数:

\min_{x}f(x) = x_{1}^2+x_{2}^2

s.t.    g(x) =x_{1}^2+x_{2}^2-1\leq 0

对应的拉格朗日函数:

L(x,\lambda ) = f(x)+\sum_{j=1}^{n}\alpha _{j}g_{j}(x)

很明显,目标函数的极值点就是原点,且该极值点在可行域内。因此,可以得出结论,如果极值点落在可行域以内,约束此时不起作用,可以像求解无约束问题一样,这时,相当于在拉格朗日函数中将系数\alpha置零。

此时存在:

g(x^*)<0

\triangledown _{x}f(x^*)=0

对应KKT条件中的:

\begin{cases} & \triangledown _{x}L(x,\alpha )=0 \\ & g(x)< 0\\ & \alpha= 0 \end{cases}

2.2.2 极值点落在可行域外(包含边界)

目标函数:

f(x)=(x_{1}-1.1)^2+(x_{2}+1.1)^2

不等式约束:

g(x) =x_{1}^2+x_{2}^2-1\leq 0

很显然,极小值为(1.1,-1.1),落在了可行域外,这种情况下,约束起了作用,要去求解在可行域内的极小值而不是(1.1,-1.1)。对于目标函数而言,要沿着目标函数的负梯度方向,才能找到极小值,如图中蓝色箭头,这个时候约束函数的梯度往区域外发散,如图红色箭头。所以,与等式约束问题不同,在极小值点,目标函数以及约束函数的梯度反向,且极小值一定在边界上,所以有:

g(x)=0 及 {\color{Red} -\triangledown f(x^{*}) = \alpha\triangledown g(x^{*})} 其中,\alpha>0     (注意:下图中的\lambda应该是\alpha)

对应KKT条件中的:

\begin{cases}\ & \alpha> 0 \\ & g(x)=0 \end{cases}

 

 

综合上述两种情况,在极值点在可行域内,有

\begin{cases} & g(x)< 0\\ & \alpha= 0 \end{cases}

极值点在边界上,有:

\begin{cases}\ & \alpha> 0 \\ & g(x)=0 \end{cases}

所以,提出第三个条件(互补松弛条件):

\alpha\cdot g(x)= 0

总结以上两种情况,可以构造拉格朗日函数来转换求解问题。对于不等式约束的优化,需要满足三个条件,满足这三个条件的解x*就是极小值点。这三个条件就是著名的KKT条件,它整合了上面两种情况的条件。

\begin{cases} & \triangledown _{x}L(x,\alpha )=0 \\ & \alpha\cdot g(x)= 0 \\ & \alpha\geq 0 \end{cases}

特别注意:优化问题是凸优化的话,KKT条件就是极小值点(而且是全局极小)存在的充要条件。不是凸优化的话,KKT条件只是极小值点的必要条件,不是充分条件,KKT点是驻点,是可能的极值点。也就是说,就算求得的满足KKT条件的点,也不一定是极小值点,只是说极小值点一定满足KKT条件。

3.优化问题的总结

对于无约束的优化问题,直接令梯度等于0求解。

对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解。

对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解。

对于含有约束的优化问题,还可以转化为对偶问题来求解。

 

Reference:

1. https://www.cnblogs.com/liaohuiqiang/p/7805954.html

2. https://www.cnblogs.com/WoodsWoods/p/3747274.html


http://chatgpt.dhexx.cn/article/TwjoR5J4.shtml

相关文章

直观理解拉格朗日乘子法和Karush-Kuhn-Tucker(KKT)条件

在最优化问题中&#xff0c;经常是会有约束条件的&#xff0c;而约束条件可分为等式约束条件和不等式约束条件&#xff0c;对于前者&#xff0c;我们有拉格朗日乘子法&#xff0c;对于后者&#xff0c;有KKT条件&#xff0c;对于既有等式约束又有不等式约束的最优化问题&#x…

非线性优化问题处理技术(二) Karush–Kuhn–Tucker条件

对于只有等式约束的非线性优化问题&#xff0c;拉格朗日定理是可以适用的&#xff0c;但是当存在不等式约束时就不适用了&#xff0c;此时Karush–Kuhn–Tucker(KKT)条件是更为通用的处理技术&#xff0c;拉格朗日定理其实只是KKT条件定理的特殊情况。 KKT条件一开始称为Kuhn–…

支持向量机SVM(二)

6 拉格朗日对偶&#xff08;Lagrange duality&#xff09; 先抛开上面的二次规划问题&#xff0c;先来看看存在等式约束的极值问题求法&#xff0c;比如下面的最优化问题&#xff1a; 目标函数是f(w)&#xff0c;下面是等式约束。通常解法是引入拉格朗日算子&#xff0c;这里使…

2012年全国卷导数题与含约束的多元函数极值问题(KKT条件)

这道题目编的比较好&#xff0c;第一问就构造的特别巧妙 &#xff08;1&#xff09; f(x) f‘(1)e^(x-1) - f(0) x f(1) f(1) - f(0) 1, f(0)1 f(x) f(1)e^(x-1) - f(0)x 1/2x^2 …

运筹学教学|动态规划例题分析(一)

例题1&#xff1a; 问题描述 假设桌子上有n根火柴&#xff0c;我先手取1&#xff0c;2,…,k(k<n)根火柴&#xff0c;之后我的对手也必须取1&#xff0c;2&#xff0c;…k根火柴。双方轮换重复直到最后一根火柴被捡起来。最后一个捡起来火柴的人是输家&#xff0c;那么&…

对约束条件优化问题的理解

以二维空间 R^2 举例 无约束的优化问题注意我在图里画了等高线。此时 在局部极小值点 处的梯度必然为0&#xff0c;比较容易理解。这个梯度为零的条件是局部极小值点的必要条件。这样&#xff0c;优化问题的求解变成了对该必要条件解方程组。 2.带等式约束的优化问题, 与无约束…

数学建模 非线性规划

一.非线性规划模型 1.概念: 如果目标函数或约束条件中包含非线性函数,就称该规划问题为非线性规划问题.一般来说,求解非线性规划问题要比求解线性规划问题困难得多,也不像线性规划问题那样有单纯形法这一通用方法,各个方法都有自己的适用范围 注意:如果线性规划的最优解存在,则…

博弈论中的Stackelberg模型和库恩塔克条件如何通过Matlab求解或者数值分析?

博弈论中的Stackelberg模型和库恩塔克条件如何通过Matlab求解或者数值分析&#xff1f; 下面是两个供应链成员的利润函数&#xff0c;其中p_c和p_b为决策变量&#xff0c;其余参数均在[0,1]之间。此外&#xff0c;b为领导者&#xff0c;c为跟随者。按照逆向归纳法求解可以得到…

拉格朗日乘子库恩塔克条件

拉格朗日乘子法的证明 在学习支持向量机的时候&#xff0c;计算对偶问题时用到了拉格朗日乘子法((Lagrange multiplier method))&#xff0c;回想起高中时使用拉格朗日乘子法求不等式约束条件下的最优化问题时的困惑&#xff0c;虽然一直知道用&#xff0c;但是却不知道为什么…

库恩塔克条件

KKT条件主要涉及凸优化问题&#xff0c;学习SVM的时候求解拉格朗日函数的对偶问题时&#xff0c;需要使用KKT条件来得到最终的。 1、对于无约束问题(unconstrained minimization): 1) 一阶必要条件为&#xff1a; 2) 二阶必要条件为&#xff1a; 即Hessian半正定 2、等式约束问…

卡罗需-库恩-塔克条件

卡罗需&#xff0d;库恩&#xff0d;塔克条件 维基百科&#xff0c;自由的百科全书 在数学中&#xff0c;卡罗需-库恩-塔克条件&#xff08;英文原名: Karush-Kuhn-Tucker Conditions常见别名: Kuhn-Tucker&#xff0c;KKT条件&#xff0c;Karush-Kuhn-Tucker最优化条件&#x…

直观理解KKT条件

直观理解KKT条件 等高线 从等高线讲起。如果我们要优化 f ( x , y ) x 2 y f(x,y)x^2y f(x,y)x2y这个函数&#xff0c;给定约束为&#xff0c; x 2 y 2 1 x^2y^21 x2y21&#xff0c;我们希望在满足约束的情况下使得f最大。也就是说&#xff0c;我们希望找到一个最“上方”…

机器学习中的数学基础 5

优化问题简介 最优化定义 最优化&#xff0c;是应用数学的一个分支。主要研究在特定情况下最大化或最小化某一特定函数或变量。 数学表示&#xff1a; Y Y Y 是 随机变量 X X X 的函数&#xff0c;求 y ^ f θ ( X ) \widehat{y} f_{\theta}(X) y ​fθ​(X) &#xff0…

微信小程序真机测试 Provisional headers are shown 问题解决办法

微信开发工具请求正常&#xff0c;真机调试出现 Provisional headers are shown 图片源自&#xff1a;https://blog.csdn.net/xyphf/article/details/90045286 网上大部分原因为ssl证书问题&#xff0c;使用以下2个ssl证书检测工具 1.https://www.myssl.cn/tools/check-serve…

JS提示框效果

提示框 js事件 //提示确认删除 <a href"javascript:if(confirm(确实要删除该内容吗?))locationhttp://www.google.com">弹出窗口</a> function tusi(txt, fun) {   $(.tusi).remove();    var div $(<div style"background: url(/images/…

图图片

示例图片啊

Sturts

Sturts是什么&#xff1f; Sturts是JSP模式2(MVC)基础上突出实现的一个框架&#xff0c;是使用JSPServlet组成&#xff1b; Sturts框架提供&#xff1a; 标记库&#xff1a;也没黑色记者可以控制&#xff1b;支持国际化处理如:JSP显示为中文&#xff0c;可以转换为英文等...;…