拉格朗日乘子法:写得很通俗的文章

article/2025/8/20 17:37:38

拉格朗日乘子法

什么是拉格朗日乘子法

按照维基百科的定义,拉格朗日乘数法是一种寻找多元函数在其变量受到一个或多个条件的约束时的极值的方法。用数学式子表达为:

minimizex,yf(x,y)subject tog(x,y)=c minimizex,yf(x,y)subject to⁡g(x,y)=c
简单理解就是,我们要在满足  g(x,y)=c g(x,y)=c 这个等式的前提下,求  f(x,y) f(x,y) 函数的最小值(最大值道理相同)。这样的问题我们在高中的时候就遇到过了,只不过高中时遇到的限制条件  g(x,y)=c g(x,y)=c 都比较简单,一般而言都可以将  y y 用  x x 的式子表示出来,然后用变量替换的方法代回  f(x,y) f(x,y) 求解。但是,如果  g(x,y) g(x,y) 的形式过于复杂,或者变量太多时,这种方法就失效了。而拉格朗日乘子法就是解决这类问题的通用策略。

拉格朗日乘子法的原理

一个约束条件

我们先从只有一个约束条件的情况入手,看看拉格朗日乘子法到底是怎么做的。

假设,我们的问题如下:

minimizex,yf(x,y)=x2+y2subject to g(x,y)=xy1=0 minimizex,yf(x,y)=x2+y2subject to g(x,y)=xy−1=0
当然,这个问题比较简单,直接用  g(x,y) g(x,y) 解出 y 再代入  f(x,y) f(x,y) 也可以求解,但这里,我们准备用拉格朗日乘子法。

首先我们画出  f(x,y) f(x,y) 的图像,这个图像应该是 3 维的,但为了方便讲解,这里给出它的 2 维投影:

图中的红色圆表示  f(x,y) f(x,y),越靠近原点的部分,值越小(表示“谷底”),这些圆又称为「等高线」,因为同一个圆代表的函数值相同。

图中的蓝线代表  g(x,y) g(x,y),这里只取  g(x,y)=0 g(x,y)=0 的部分。

整幅图像可以想象成一个巨大的山谷,原点是谷底,而我们的任务是在蓝线表示的道路上,找到最低的位置。

那要如何找到这个最低点呢?注意,图中用橙色和黑色标记了两个点。如果我们走到了橙色这个位置,那么很明显,可以发现这个点肯定不是最低的,因为我们可以沿着蓝线继续往内部的圆走,当我们走到黑色这个点时,会发现没法再往里面走了,而且,这个时候如果继续沿蓝线走,我们的位置反而升高了,这时,我们基本可以认为:我们找到了在蓝线这个限制条件下的最低点。

那么橙色这个点和黑色这个点有什么本质区别呢?拉格朗日观察到,黑点位置,蓝线和圆是相切的,而橙点位置显然不满足这个性质。那相切是否是必然的呢?拉格朗日告诉我们,是的,一定是相切的。而这一点,正是拉格朗日乘子法的核心。

梯度

在正式理解拉格朗日乘子法的原理之前,我们要回顾一下梯度的概念。

在数学里面,梯度指的是函数变化最快的方向。例如:在一元函数  f(x) f(x) 中,梯度只能沿 x 轴正方向或负方向,而在二元函数  f(x,y) f(x,y) 中,梯度则是一个二维向量  (f/x,f/y) (∂f/∂x,∂f/∂y)

现在,我们要用到梯度一个重要的性质:梯度跟函数等高线是垂直的

证明需要用到一点极限的知识。

梯度的数学定义为: f=(f/x,f/y) ∇f=(∂f/∂x,∂f/∂y)。假设  Δx Δx Δy Δy 是两个极小的变化量,根据全微分的知识,可以得到:

f(x+Δx,y+Δy)f(x,y)+fxΔx+fyΔy f(x+Δx,y+Δy)≈f(x,y)+∂f∂xΔx+∂f∂yΔy
如果  (Δx,Δy) (Δx,Δy) 是在等高线方向的增量,那么  f(x+Δx,y+Δy)f(x,y) f(x+Δx,y+Δy)≈f(x,y),这意味着  fxΔx+fyΔy=0 ∂f∂xΔx+∂f∂yΔy=0,换句话说,向量  f ∇f 和向量  (Δx,Δy) (Δx,Δy) 的内积为 0。所以,梯度和函数的等高线是垂直的。

拉格朗日乘子法的几何认识

现在,我们来感性地认识一下,为什么拉格朗日认为相切才能找到最低点(只是感性认识,不添加任何数学推导)。

在橙点这个位置,由于两条曲线不相切,所以橙线的梯度(上图橙色箭头)和蓝线的切线(蓝色虚线)肯定不垂直。在这种情况下,蓝线的两个切线方向,必定有一个往函数高处走(与梯度的夹角小于 90 度),有一个往函数低处走(与梯度的夹角大于 90 度)。所以,在两条曲线相交时,我们肯定不在最低点或最高点的位置。

那么,反过来想,如果两条曲线相切(上图),那么在切点这个位置,蓝线的切线和橙线的梯度是垂直的,这个时候,蓝线的切线方向都指向橙线的等高线方向。换句话说,在切点的位置沿蓝线移动很小的一步,都相当于在橙线的等高线上移动,这个时候,可以认为函数值已经趋于稳定了。所以,我们认为这个点的值“可能”是最低(高)的(之后解释为什么是“可能“。另外,个人觉得拉格朗日乘子法最好用反证法从不相切的点入手思考,从相切的点思考总有点别扭)。

既然相切可以帮助我们找到最低点,那么接下来我们要研究的便是如何利用相切来找出最低点。

相切,意味着在切点的位置,两条曲线的等高线方向是平行的,考虑到梯度与等高线垂直, 我们可以用两条曲线的梯度平行来求出切点位置(最低点)。

因此,根据梯度平行,我们能够得到一个方程组: f=λg ∇f=λ∇g,其中  λ λ 表示一个标量,因为我们虽然能保证两个梯度平行,但不能保证它们的长度一样(或者方向相同)。在高维函数中, f ∇f 表示的是函数在各个自变量方向的偏导。对于上面的例子,我们可以求出函数  f f 和  g g 的偏导,再根据方程组:

fx=λgxfy=λgyg(x,y)=0 ∂f∂x=λ∂g∂x∂f∂y=λ∂g∂yg(x,y)=0
求出切点。由于总共有三个方程和三个未知数,一般都能找到解(也可能存在多个解或无解的情况,之后会简单讨论)。

在实际求解时,人们会使用一个统一的拉格朗日函数: L(x,y,λ)=f(x,y)+λg(x,y) L(x,y,λ)=f(x,y)+λg(x,y),令这个函数偏导为 0,我们可以得到:

L/x=fxλgx=0L/y=fyλgy=0L/λ=g(x,y)=0 ∂L/∂x=∂f∂x−λ∂g∂x=0∂L/∂y=∂f∂y−λ∂g∂y=0∂L/∂λ=g(x,y)=0
结果和上面的方程组是一样的。

多个约束条件

多个约束条件和单个约束条件是一样的。如果是多个约束条件,那么这些约束函数肯定是相交的,否则无解。多个约束条件一般会把变量约束到一个更低维的空间,例如,下图中,紫色球面和黄色平面将变量约束到黑色线的位置。

求解过程和单个约束条件是一样的,我们定义一个新的拉格朗日函数:

L(x1,,xn,λ1,,λk)=f(x1,,xn)j=1kλjgj(x1,,sn) L(x1,…,xn,λ1,…,λk)=f(x1,…,xn)−∑j=1kλjgj(x1,…,sn)
然后同样令这个函数的导数  L=0 ∇L=0,最后可以得到  n+k n+k 个方程以及  n+k n+k 个未知数,一般也能求解出来。

总结

根据拉格朗日乘子法的定义,这是一种寻找极值的策略,换句话说,该方法并不能保证找到的一定是最低点或者最高点。事实上,它只是一种寻找极值点的过程,而且,拉格朗日乘子法找到的切点可能不只一个(也就是上面的方程组可能找到多个解),例如下图:

图中相切的点有两个,而红点的函数值明显比黑点小。事实上,要想判断找到的点是极低点还是极高点,我们需要将切点代入原函数再进行判断。

另外,在写作本文时,我仍然有一个疑惑没有解决:拉格朗日乘子法在哪些情况下无解(也就是上面的方程组  L ∇L 无解)?换句话说,约束条件和函数没有切点时,我们要怎么求出最低点或最高点。这个问题留待之后想通再补上。

参考

  • wiki: Lagrange multiplier
  • An Introduction to Lagrange Multipliers
  • Understanding Lagrange Multipliers
  • 拉格朗日乘子法如何理解?
  • SVM - Understanding the math - Duality and Lagrange multipliers
  • 本文作者: Jermmy
  • 本文链接: https://jermmy.github.io/2017/07/27/2017-7-27-understand-lagrange-multiplier/
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!

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

相关文章

拉格朗日数乘法

拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,所以特意抽时间学习了麻省理工学院的在线数学课程。新学到的知识一定要立刻记录下来,希望…

真正理解拉格朗日乘子法和KKT条件

转载自:https://www.cnblogs.com/xinchen1111/p/8804858.html 这篇博文中直观上讲解了拉格朗日乘子法和 KKT 条件,对偶问题等内容。 首先从无约束的优化问题讲起,一般就是要使一个表达式取到最小值: minf(x) m i n f ( x ) min…

【最优化】拉格朗日乘子法

拉格朗日乘子法 前面几节讲述的都是无约束优化问题的相关算法,但是在实际生活中碰到的几乎都是有约束问题模型。 等式约束的拉格朗日乘子法 算法框架 1. 问题描述 以下对约束优化问题中常出现的概念做一下简要解释: 可行解:所有满足约束条…

拉格朗日乘子法的通俗理解

拉格朗日乘子法的通俗理解 1. 举例2. 求偏导3. 拉格朗日乘子法4. 乘子 1. 举例 这里举个简单的例子吧 在家里做蛋糕,假如只计算鸡蛋和牛奶的价格 其中鸡蛋的价格为4.5¥/斤,牛奶为12¥/升,而预算刚好是20¥ 那…

拉格朗日乘数法计算技巧

昨天有位朋友让我看了一道题(见下图),方法是使用拉格朗日乘数法进行求解的,我刚开始算的时候感到非常困难,后来在答案的帮助下发现可以从x,y,z的对称性以及成比例暗示中着手,经此一题,我不由发问…

拉格朗日乘数法详解

拉格朗日乘子法 写这篇文章的动机主要是最近正在学习机器学习的课程,学到逻辑回归的时候发现使用了拉格朗日乘子法,网上也很多文章讲拉格朗日乘子法的,因此这篇文章只是记录学习的过程,希望能较为全面地展示拉格朗日乘子法的各个…

拉格朗日乘子法 KKT条件

目录 1. 拉格朗日乘子法用于最优化的原因 2. 最优化问题三种情况 2.1 无约束条件 2.2 等式约束条件:拉格朗日乘子法 2.3 不等式约束条件:KKT 3. Lagrange对偶函数 3.1 对偶函数与原问题的关系 3.2 Lagrange对偶问题 (1)弱…

拉格朗日乘子法、罚函数法、乘子罚函数法

1. 拉格朗日乘子法 1.1 无约束问题1.2 等式约束问题1.3 不等式约束问题(KKT条件)1.4 拉格朗日乘子法问题 2. 罚函数法 2.1 定义2.2 外罚函数法2.3 内罚函数法 3. 广义乘子法 3.1 等式约束广义乘子法:3.2 不等式约束广义乘子法:3.3…

对拉格朗日乘数法的理解

参考 百度百科 拉格朗日乘数法:https://www.cnblogs.com/maybe2030/p/4946256.html 拉格朗日乘数法的一种几何解释:https://zhuanlan.zhihu.com/p/368334607 拉格朗日乘子法与KKT条件:https://zhuanlan.zhihu.com/p/392900101 Karush-Kuhn-Tu…

【优化】拉格朗日(Lagrange)乘子法超简说明

本文不做数学推导,从物理意义上讲解拉格朗日乘子法。 原问题 我们要解决带有等式约束的最优化问题。为方便书写,以二维函数为例: m a x f ( x , y ) , s . t . g ( x , y ) 0 max\ f(x,y), \ \ s.t. g(x,y)0 max f(x,y), s.t.g(x,y)0 用…

【数学基础】拉格朗日乘子法

概述 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。 我们这里提到的最优化…

拉格朗日乘数法

拉格朗日乘数法是用来求条件极值的,极值问题有两类,其一,求函数在给定区间上的极值,对自变量 没有其它要求,这种极值称为无条件极值。其二,对自变量有一些附加的约束条件限制下的极值,称为 条…

如何理解拉格朗日乘子法?

1 与原点的最短距离 假如有方程: 图像是这个样子滴: 现在我们想求其上的点与原点的最短距离: 这里介绍一种解题思路。首先,与原点距离为 的点全部在半径为 的圆上: 那么,我们逐渐扩大圆的半径:…

拉格朗日乘数法 —— 通俗理解

拉格朗日乘数法(Lagrange Multiplier Method)在数学最优问题中,是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。记得以前大学高数、数模等课程多次提到过,在求解最有问题中很有用处,最近重温了下拉格朗…

拉格朗日乘子法(简单易懂的说明)

拉格朗日乘子法(Lagrange Multiplier) 之前在高中就有一直听到拉格朗日,拉格朗日是一个很牛逼哄哄的大佬。在学习SVM的时候,居然也见到了他的身影。让我们了解一下拉格朗日乘子法的具体内容。 在学习过程中,有时会遇到…

深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。 我们这里提到的最优化问题通…

拉格朗日乘子法

周志华《机器学习》如何理解拉格朗日乘子法? 1. 介绍 拉格朗日乘子法 (Lagrange multipliers)是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将有 d d d 个变量与 k k k 个约束条件的最优化问题转化为具有 d k d k dk 个变…

拉格朗日乘子法 (Lagrange multipliers)

目录 约束最优化问题等式约束的优化问题二元函数多元函数 不等式约束的优化问题 (KKT 条件)推广到多个约束拉格朗日对偶 (Dual Problem)前置知识 inf \text{inf} inf 和 sup \text {sup} sup 符号凸函数仿射函数凸优化 从广义拉格朗日函数到拉格朗日对偶函数从原问题到拉格朗日…

拉格朗日乘子

1,拉格朗日乘子(lagrange multiplier),又叫拉氏乘子或拉格朗日乘数。它是出现在拉格朗日乘数法中的概念。 拉格朗日乘数法可以解决多变量函数在其变量受到一个或多个约束条件时求极值的问题。 它可以将含有n个变量的函数(该函数的…

机器学习中的数学——拉格朗日乘子法(一):等式约束的拉格朗日乘子法

分类目录:《机器学习中的数学》总目录 相关文章: 拉格朗日乘子法(一):等式约束的拉格朗日乘子法 拉格朗日乘子法(二):不等式约束与KKT条件 拉格朗日乘子法是一种寻找多元函数在一组约…