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

article/2025/8/20 21:08:19

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

  拉格朗日乘数法将一个有n个变量与k个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数。此方法的证明牵涉到偏微分,全微分或链法,从而找到能让设出的隐函数的微分为零的未知数的值。

  • 目录

    1. 拉格朗日乘数法的基本思想

    2. 拉格朗日乘数法的数学实例

    3. 拉格朗日乘数法的基本形态

    4. 拉格朗日乘数法与KKT条件


1. 拉格朗日乘数法的基本思想

  作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。

       如何将一个含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题?拉格朗日乘数法从数学意义入手,通过引入拉格朗日乘子建立极值条件,对n个变量分别求偏导对应了n个方程,然后加上k个约束条件(对应k个拉格朗日乘子)一起构成包含了(n+k)变量的(n+k)个方程的方程组问题,这样就能根据求方程组的方法对其进行求解。

  解决的问题模型为约束优化问题:

  min/max a function f(x,y,z), where x,y,z are not independent and g(x,y,z)=0.

  即:min/max f(x,y,z)

    s.t. g(x,y,z)=0

 


2. 拉格朗日乘数法的数学实例

  首先,我们先以麻省理工学院数学课程的一个实例来作为介绍拉格朗日乘数法的引子。

【麻省理工学院数学课程实例】求双曲线xy=3上离原点最近的点。

  解:首先,我们根据问题的描述来提炼出问题对应的数学模型,即:

  min f(x,y)=x2+y2(两点之间的欧氏距离应该还要进行开方,这里进行了简化,去掉了开方)

  s.t. xy=3.

  根据上式我们可以知道这是一个典型的约束优化问题,其实我们在解这个问题时最简单的解法就是通过约束条件将其中的一个变量用另外一个变量进行替换,然后代入优化的函数就可以求出极值。我们在这里为了引出拉格朗日乘数法,所以我们采用拉格朗日乘数法的思想进行求解。

  我们将x2+y2=c的曲线族画出来,如下图所示,当曲线族中的圆与xy=3曲线进行相切时,切点到原点的距离最短。也就是说,当f(x,y)=c的等高线和双曲线g(x,y)相切时,我们可以得到上述优化问题的一个极值(注意:如果不进一步计算,在这里我们并不知道是极大值还是极小值)。

  现在原问题可以转化为求当f(x,y)和g(x,y)相切时,x,y的值是多少?

  如果两个曲线相切,那么它们的切线相同,即法向量是相互平行的,▽f//▽g.

  由▽f//▽g可以得到,▽f=λ*▽g。

  这时,我们将原有的约束优化问题转化为了一种对偶的无约束的优化问题,如下所示:

原问题:

对偶问题:

min f(x,y)=x2+y2

s.t.  xy=3

由▽f=λ*▽g得:

  fx=λ*gx,

  fy=λ*gy,

  xy=3.

约束优化问题

无约束方程组问题

  通过求解右边的方程组我们可以获取原问题的解,即

  2x=λ*y,2y=λ*x,xy=3

  通过求解以上方程组可得:λ=2或者是-2;当λ=2时,(x,y)=(\sqrt{3},\sqrt{3})或者(-\sqrt{3}, -\sqrt{3}),而当λ=-2时,无解。所以原问题的解为(x,y)=(\sqrt{3}, \sqrt{3})或者(-\sqrt{3}, -\sqrt{3})。

  通过举上述这个简单的例子就是为了体会拉格朗日乘数法的思想,即通过引入拉格朗日乘子(λ)将原来的约束优化问题转化为无约束的方程组问题。

 


3. 拉格朗日乘数法的基本形态

   求函数在满足下的条件极值,可以转化为函数的无条件极值问题。

  我们可以画图来辅助思考:

  绿线标出的是约束g(x,y)=c的点的轨迹。蓝线是f(x,y)的等高线。箭头表示斜率,和等高线的法线平行。

  从图上可以直观地看到在最优解处,f和g的斜率平行。

\nabla[f(x,y)+\lambda (g(x,y)-c)]=0, \lambda \neq 0

  一旦求出λ的值,将其套入下式,易求在无约束极值和极值所对应的点。

F(x,y)=f(x,y)+\lambda (g(x,y)-c)

  新方程F(x,y)在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y)−c总等于零。

  上述式子取得极小值时其导数为0,即\nabla f(x)+\nabla\sum \lambda_{i} g_{i}(x)=0,也就是说f(x)和g(x)的梯度共线。

题目1:

  给定椭球

     

  求这个椭球的内接长方体的最大体积。这个问题实际上就是条件极值问题,即在条件   

    

  下,求的最大值。

  当然这个问题实际可以先根据条件消去z,然后带入转化为无条件极值问题来处理。但是有时候这样做很困难,甚至是做不到的,这时候就需要用拉格朗日乘数法了。通过拉格朗日乘数法将问题转化为

     

  对求偏导得到

     

  联立前面三个方程得到,带入第四个方程解之

      

  带入解得最大体积为

      

  拉格朗日乘数法对一般多元函数在多个附加条件下的条件极值问题也适用。

题目2:

  题目:求离散分布的最大熵。

  分析:因为离散分布的熵表示如下

     

     而约束条件为

     

     要求函数 f 的最大值,根据拉格朗日乘数法,设

     

     对所有的pk求偏导数,得到

     

     计算出这 n 个等式的微分,得到

     

     这说明所有的pk都相等,最终解得:

     

     因此,使用均匀分布可得到最大熵的值。

 


4. 拉格朗日乘数法与KKT条件

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

  首先,我们先介绍一下什么是KKT条件。

  KKT条件是指在满足一些有规则的条件下, 一个非线性规划(Nonlinear Programming)问题能有最优化解法的一个必要和充分条件. 这是一个广义化拉格朗日乘数的成果. 一般地, 一个最优化数学模型的列标准形式参考开头的式子, 所谓 Karush-Kuhn-Tucker 最优化条件,就是指上式的最优点x∗必须满足下面的条件:

  1). 约束条件满足gi(x∗)≤0,i=1,2,…,p, 以及,hj(x∗)=0,j=1,2,…,q

  2). ∇f(x∗)+∑i=1μi∇gi(x∗)+∑j=1λj∇hj(x∗)=0, 其中∇为梯度算子;

  3). λj≠0且不等式约束条件满足μi≥0,μigi(x∗)=0,i=1,2,…,p。

  KKT条件第一项是说最优点x∗必须满足所有等式及不等式限制条件, 也就是说最优点必须是一个可行解, 这一点自然是毋庸置疑的. 第二项表明在最优点x∗, ∇f必须是∇gi和∇hj的线性組合, μi和λj都叫作拉格朗日乘子. 所不同的是不等式限制条件有方向性, 所以每一个μi都必须大于或等于零, 而等式限制条件没有方向性,所以λj没有符号的限制, 其符号要视等式限制条件的写法而定.

  为了更容易理解,我们先举一个例子来说明一下KKT条件的由来。

  let L(x,μ)=f(x)+∑k=1μkgk(x),其中μk≥0,gk(x)≤0

  ∵μk≥0 gk(x)≤0  =>  μg(x)≤0

  ∴maxμL(x,μ)=f(x)                    (2)

  ∴minxf(x)=minxmaxμL(x,μ)     (3)

  maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)

  又∵μk≥0, gk(x)≤0

  

  ∴maxμminxμg(x)=0, 此时μ=0 or g(x)=0.

  ∴maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)      (4)

  此时μ=0 or g(x)=0.

  联合(3),(4)我们得到minxmaxμL(x,μ)=maxμminxL(x,μ), 亦即

   

  minxmaxμL(x,μ)=maxμminxL(x,μ)=minxf(x)

  我们把maxμminxL(x,μ)称为原问题minxmaxμL(x,μ)的对偶问题,上式表明当满足一定条件时原问题、对偶的解、以及minxf(x)是相同的,且在最优解x∗处μ=0 or g(x∗)=0。把x∗代入(2)得maxμL(x∗,μ)=f(x∗),由(4)得maxμminxL(x,μ)=f(x∗),所以L(x∗,μ)=minxL(x,μ),这说明x∗也是L(x,μ)的极值点,即

  

  最后总结一下:

  

  KKT条件是拉格朗日乘子法的泛化,如果我们把等式约束和不等式约束一并纳入进来则表现为:

  

  注:x,λ,μ都是向量。

  

  表明f(x)在极值点x∗处的梯度是各个hi(x∗)和gk(x∗)梯度的线性组合。


PS:本文转自Poll的笔记[Math & Algorithm] 拉格朗日乘数法,并更正原文几点小错误,算是对拉格朗日乘数法比较通俗的解释


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

相关文章

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

拉格朗日乘子法(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条件 拉格朗日乘子法是一种寻找多元函数在一组约…

拉格朗日乘子法详解

一、拉格朗日乘子法简介 拉格朗日乘子法的应用十分广泛,它是SVM的理论基础,是凸优化的重要研究部分。它用于求解约束条件下的极值问题,过程简单巧妙,也是各类考试的常考题型。然而,拉格朗日乘子法的原理我却一直模模糊…

日志服务与日志分析工具

系统日志生成服务 功能: 日志服务是根据日志配置文件进行提供相应的功能服务,对于各种服务的信息等级的设定将不同服务的不懂等级信息记录在不同的文件里面。 日志管理服务分类: 1.rsyslogd 普通日志管理服务 采集各种服务产生的信息根据…

Web日志分析

目录 1. Web日志 2. 日志分析技巧 常用分析工具: Apache日志分析技巧: 3. 日志分析案例 1、定位攻击源 2、搜索相关日志记录 3、对找到的访问日志进行解读,攻击者的访问路径..... 4. 日志统计分析技巧 1. Web日志 Web访问日志记录了W…

logparser日志分析详解

Logparser是微软的一款日志分析工具,使用方便功能强大。 支持的日志类型: IISW3C,NCSA,IIS,IISODBC,BIN,IISMSID,HTTPERR,URLSCAN,CSV,TSV,W3C,XML,EVT, ETW,NETMON, REG, ADS, TEXTLINE, TEXTWORD, FS,COM 可输出的文件类型 CSV, TSV, XML, DATAGRID, C…

(分析日志)

日志的分析也是一个很大的概念,可能对于运维和安全人员关注的是系统的所有日志,包括访问日志、系统监测的日志等,但是开发人员对于日志更多的是: 监控系统运行错误,并获取错误时的相关数据包记录重要的信息&#xff0…

日志分析及存储

一、系统日志概述 1.日志的用途 系统和程序的“日记本” −记录系统、程序运行中发生的各种事件 −通过查看日志,了解及排除故障 −信息安全控制的“依据” 2.Linux日志的种类 内核及系统日志 −由系统服务rsyslog统一管理,格式相似 用户日志 …

【linux】——日志分析

文章目录 1. 日志文件1.1 日志文件的分类1.2 日志文件保存位置1.2.1 内核及系统日志1.2.2 日志消息的级别1.2.3 日志记录的一般格式1.2.4 用户日志分析 程序日志分析日志管理策略 远程收集日志 1. 日志文件 1.1 日志文件的分类 ● 日志文件是用于记录Linux系统中各种运行消息的…

python日志分析

日志分析 生产中会出现大量的系统日志、应用程序日志,安全日志等,通过贵日志的分析可以了解服务器的负载,健康状况,可以分析客户的分布情况、客户的行为,甚至基于这些分析可以做出预测。 一般采集流程: 日…

日志分析工具

iis、windows日志做日志分析比较麻烦,这里找到了一款好用的免费的日志分析工具 Log Parser Lizard,下载这个工具之前建议先安装LogParser虽然他会自动弹窗提示。 1. 安装软件 安装没什么好说的一直下一步下一步就行 启动之后点击OK 弹出激活页面让激活…

redis日志分析

首先复习一下IO流: 关于读取文件: BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取 InputStreamReader 字节流通向字符流的桥梁 以UTF-8编码读取 FileInputStream 从文件系统中的某…

【日志分析】Web日志分析

ox01 Web日志 Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析,不仅可以帮助我们定位攻击者,还可以帮助我们还原攻击路径,找到网站存在的安全漏洞并进行修复。 我们来看一条Apache的访问日…

日志分析方法概述

注:写得有点乱,但目前市面上这方面内容的确不多,mark一下~ http://blog.csdn.net/pkueecser/article/details/9569251 大数据应用--系统监控与日志分析 http://wenku.baidu.com/link?url8CJ-URMjVTVaw3GM1AZ2w9A7V0CIeRz3dx7xvysILLk6IdW…

日志分析软件

来源:http://onlyktt.blog.hexun.com/32563117_d.html 在经营管理亿枝客过程中,就遇到了非常多的困难。所以不断的学习知名与不知名互联网创业前辈留下来的经验特别重要,特别是上次与ZAC厦门交流后,以及拜读他写的《网络营销实践密…

简单的Web日志分析

Web日志分析 以apache为例 访问日志记录过程 apache日志大致分为两类:访问日志和错误日志 访问日志记录的过程: 客户端向web服务器发送请求,请求中包含客户端的IP、浏览器类型(User-Agent)、请示的URL等信息 web服务器向客户端返回请示的…