拉格朗日乘数法与KKT条件

关于拉格朗日乘数法和KKT条件的一些思考

  从我开始接触拉格朗日乘数法到现在已经将近有四个月了,但似乎直到今天我对其的理解才开始渐渐清晰,相信很多人在科研初期也会对一些基础的算法困惑不解,而一篇好的教程则可以大大缩短困惑的时间,从而把更多时间用在开创性的工作上去。经过近几日的搜索,我发现网上还是有一些说明是很不错得,英文较好的同学可以直接去阅读Hugo的介绍(http://www.onmyphd.com/?p=lagrange.multipliers)。下面是我近几日学下来的一些见解,看下来如果有想讨论,指点或者交流的欲望,请可以直接发邮件联系我([email protected]).

  什么是拉格朗日乘数法?

  简单来讲,拉格朗日乘数法是一种方法,一种求解带约束的优化问题的方法,而这里的约束只能是等式约束。什么是带等式约束的优化问题呢?其实这是一个十分常见的问题,比如我们小学时经常做的一些应用题,像如何用一定长的铁丝,围城一个最大面积的矩形?以及高中时做过的物理题:用一定的力扔出一个物体,沿着哪个角度扔出能最远?等等。就是在一定的条件下,是目标最好。用数学的语言表示如下:

  min f(X) 或 max(fx)

  s.t. hi(x)=0 i=1,2,...,n

  其中,f(X)是我们的期望,有些事情希望越小越好,有些事情希望越大越好,因人因事而异,而hi(x)=0则就是受到的约束。而X则是一些因素,一些会影响到期望值的因素,这些因素收到hi(x)的约束。如何求出使期望最大(j或者最小)的因素的取值呢,拉格朗日乘数法是这样做的:1.首先构造拉格朗日函数L(x)=f(x)+∑iαihi(x),其中αi就是拉格朗日乘数,2.求L(x)的梯度,可知在满足约束条件的前提下,当梯度为零向量时,L(x)取得极值,而且由于hi(x)=0,所以此时的极值也正是f(X)的极值,3.解方程,求出αi和x,假设XŒR(k),其中一共有k+n个未知数,,也正好有k+n个方程,其中梯度为零k个,约束条件n个。这样就做完了。

  此外拉格朗日乘数法还可以这样理解:是目标方程取得极值的点一定是目标方程与约束面相切的地方,相切等价于法向量共线,这里得到的方程和拉格朗日函数梯度为零得到的方程式一致的。

  注意此种方法并不是一直适用的,L(X)的梯度无法为零时,那么f(X)则无法通过这种方法求得极值。

  什么是KKT条件?

  拉格朗日乘数法只能解决等式约束的优化问题,但等式约束并不足以描述人们面临的问题,不等式约束比等式约束更为常见,大部分实际问题的约束都是不超过多少时间,不超过多少人力,不超过多少成本等等。所以有几个科学家拓展了拉格朗日乘数法,增加了几个条件之后便可以用拉格朗日乘数法来求解不等式约束的优化问题了。

  min f(X) 或 max(fx)

  s.t. hi(x)=0 i=1,2,...,n

       gj(x)<=0 j=1,2,...,m

  1.同样构造拉格朗日函数,L(x)=f(x)+∑iαihi(x)+∑jβjgj(x)

  2.求L(X)的梯度,令其等于0,得到K个方程(XŒR(k)),但此时L(X)的极值不一定为f(x)的极值,此时L(x)<=f(X),等号成立的条件是∑jβjgj(x)=0,也就是βjgj(x)=0,j=0,1,2...,m.(其中βj>=0)再加上等式约束,解方程即可求得最优解。

  (当求minf(x)时,L(x)=f(x)+∑iαihi(x)+∑jβjgj(x)(f(X)>=L(X)),求最大值时L(x)=f(x)+∑iαihi(x)+∑jβjgj(x)f(X)<=L(X))

  如有疑问或错误,欢迎提出宝贵建议([email protected])

时间: 2024-10-28 15:44:29

拉格朗日乘数法与KKT条件的相关文章

[Math &amp; Algorithm] 拉格朗日乘数法

拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,所以特意抽时间学习了麻省理工学院的在线数学课程.新学到的知识一定要立刻记录下来,希望对各位博友有些许帮助. 1. 拉格朗日乘数法的基本思想 作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题.拉格朗日乘子背后的数学意义是其

关于拉格朗日乘子法与KKT条件

关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件 目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉格朗日对偶问题 如何显式的表述拉格朗日对偶问题 由定义消去下确界 隐式求解约束 共轭函数法 弱对偶 强对偶 原始问题与对偶问题的关系 最优条件 互补松弛条件 KKT条件 一般问题的KKT条件 凸问题的KKT条件 KKT条件的用途 拉格朗日乘数法的形象化解读 等式约束的拉格朗日乘子法 含有不等约束的情况

拉格朗日乘数法

目录(?)[-] 介绍 拉格朗日乘数的运用方法 例子 很简单的例子 另一个例子 经济学 在数学最优化问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束.这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数. 此方法的证明牵涉到偏微分,全微分或链法,从

浅谈拉格朗日乘数法

最近偶然看到一篇文章介绍到拉格朗日乘数法, 先贴出地址:cnblogs.com/maybe2030/p/4946256.html 因为我也是刚学了这个方法,对这个东西一知半解,然而初读这篇文章后,感觉有必要好好搞懂这个东西,因为原文写的比较正式,有一些晦涩的词汇难以理解,所以我自己翻书重新学习了一下,以下是个人感悟,并不权威,欢迎指摘! 高等数学同济第5版中这样讲: 要找到函数z=f(x,y)在附加条件g(x,y)=0下的可能极值点,可令L(x,y)=f(x,y)+ug(x,y); 解出x,y,

《University Calculus》-chaper12-多元函数-拉格朗日乘数法

求解条件极值的方法:拉格朗日乘数法 基于对多元函数极值方法的了解,再具体的问题中我们发现这样一个问题,在求解f(x,y,z)的极值的时候,我们需要极值点落在g(x,y,z)上这种对极值点有约束条件,通过直接代换消元的方法似乎会出现一些问题. 比如这个例题. 它面临的问题是,代换消元然后通过求偏导得来的驻点,我们无法控制其满足约束条件g(x,y,z),因此我们需要寻找新的方法来解决这种条件极值问题. 首先这里给出方向导数和梯度中给出的等式关系,这个具体的由来我们会在该小结中详细介绍. 对于可微函数

[转] 拉格朗日乘数法

在数学最优化问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束.这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数. 此方法的证明牵涉到偏微分,全微分或链法,从而找到能让设出的隐函数的微分为零的未知数的值. 介绍 先看一个二维的例子:假设有函数:f

寻找“最好”(3)——函数和泛函的拉格朗日乘数法

拉格朗日乘数法 大多数的优化问题都会加入特定的约束,而不仅仅是指定起点和终点,此时需要更好的办法去解决优化问题,拉格朗日乘数法正是一种求约束条件下极值的方法. 简单地说,拉格朗日乘数法(又称为拉格朗日乘数法)是用来最小化或最大化多元函数的.如果有一个方程f(x,y,z),在这个方程里的变量之间不是独立的,也就是说这些变量之间是有联系的,这个联系可能是某个方程g(x,y,z) = C:也就是g(x,y,z) = C定义了x,y,z之间的关系,这个关系对变量做出了一定的的限制,我们需要在这个限制下来

CodeForces - 813C The Tag Game(拉格朗日乘数法,限制条件求最值)

[传送门]http://codeforces.com/problemset/problem/813/C [题意]给定整数a,b,c,s,求使得  xa yb zc值最大的实数 x,y,z , 其中x + y + z <= s. (1?≤?S?≤?103  , 0?≤?a,?b,?c?≤?103) [题解]设P(x,y,z ) = xa yb zc,则P(x,y,z)是递增的,要使 函数值尽可能地大,那么必取 x + y + z = s 问题转化成:已知限定条件  x + y + z = s, 求

【机器学习之数学】03 有约束的非线性优化问题——拉格朗日乘子法、KKT条件、投影法

目录 将有约束问题转化为无约束问题 拉格朗日法 KKT条件 拉格朗日法更新方程 凸优化问题下的拉格朗日法 罚函数法 对梯度算法进行修改,使其运用在有约束条件下 投影法 梯度下降法 to 投影梯度法 正交投影算子 References 相关博客 梯度下降法.最速下降法.牛顿法等迭代求解方法,都是在无约束的条件下使用的,而在有约束的问题中,直接使用这些梯度方法会有问题,如更新后的值不满足约束条件. 那么问题来了,如何处理有约束的优化问题?大致可以分为以下两种方式: 将有约束的问题转化为无约束的问题,