拉格朗日乘数法入门

拉格朗日乘数法是一种简单而优雅的方法,用于在存在等式或不等式约束的情况下找到函数的局部最小值或局部最大值。拉格朗日乘数也称为未定乘数。在本教程中,我们将讨论在给定等式约束时使用此方法。

在本教程中,您将发现拉格朗日乘数法以及如何在存在等式约束的情况下找到函数的局部最小值或最大值。

完成本教程后,您将了解:

  • 如何在存在等式约束的情况下找到函数的局部最大值或最小值的点
  • 带等式约束的拉格朗日乘数法

让我们开始吧。

拉格朗日乘数法的温和介绍。摄影:Mehreen Saeed,保留部分权利。

教程概述

本教程分为两部分;它们是:

  1. 带等式约束的拉格朗日乘数法
  2. 两个已解决的例子

先决条件

对于本教程,我们假设您已经了解以下内容:

您可以通过点击上面给出的链接来复习这些概念。

带等式约束的拉格朗日乘数法是什么?

假设我们有以下优化问题

最小化 f(x)

受限于

g_1(x) = 0

g_2(x) = 0

g_n(x) = 0

拉格朗日乘数法首先构建一个称为拉格朗日函数的函数,其表达式如下。

L(x, **λ**) = f(x) + λ_1 g_1(x) + λ_2 g_2(x) + … + λ_n g_n(x)

这里 **λ** 表示拉格朗日乘数向量,即

**λ** = [ λ_1, λ_2, …, λ_n]^T

为了找到受等式约束的 f(x) 的局部最小值点,我们找到拉格朗日函数 L(x, **λ**) 的驻点,即我们求解以下方程

∇xL = 0

∂L/∂λ_i = 0 (对于 i = 1..n)

因此,我们总共得到 m+n 个方程需要求解,其中

m = f 的域中的变量数

n = 等式约束的数量。

简而言之,局部最小值点将是以下方程的解

∂L/∂x_j = 0 (对于 j = 1..m)

g_i(x) = 0 (对于 i = 1..n)

想开始学习机器学习微积分吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

已解决的例子

本节包含两个已解决的例子。如果您解决了这两个例子,您将对如何将拉格朗日乘数法应用于两个以上变量的函数和更多等式约束有相当好的了解。

例 1:一个等式约束

让我们解决以下最小化问题

最小化: f(x) = x^2 + y^2

受限于: x + 2y – 1 = 0

第一步是构建拉格朗日函数

L(x, y, λ) = x^2 + y^2 + λ(x + 2y – 1)

我们需要解以下三个方程

∂L/∂x = 0

2x + λ = 0 (1)

∂L/∂y = 0

2y + 2λ = 0 (2)

∂L/∂λ = 0

x + 2y -1 = 0 (3)

使用 (1) 和 (2),我们得到

λ = -2x = -y

将此代入 (3) 得到

x = 1/5

y = 2/5

因此,局部最小值点位于 (1/5, 2/5),如右图所示。左图显示了函数的图像。

Graph of function (left), contours, constraint and local minima (right)

函数图(左)。等高线、约束和局部最小值(右)

例 2:两个等式约束

假设我们想找到以下函数在给定约束下的最小值

最小化 g(x, y) = x^2 + 4y^2

受限于

x + y = 0

x^2 + y^2 – 1 = 0

该问题的解可以通过首先构建拉格朗日函数来找到

L(x, y, λ_1, λ_2) = x^2 + 4y^2 + λ_1(x + y) + λ_2(x^2 + y^2 – 1)

我们需要解 4 个方程

∂L/∂x = 0

2x + λ_1 + 2x λ_2 = 0 (1)

∂L/∂y = 0

8y + λ_1 + 2y λ_2 = 0 (2)

∂L/∂λ_1 = 0

x + y = 0 (3)

∂L/∂λ_2 = 0

x^2 + y^2 – 1 = 0 (4)

求解上述方程组得到 (x,y) 的两个解,即我们得到两个点:

(1/sqrt(2), -1/sqrt(2))

(-1/sqrt(2), 1/sqrt(2))

函数及其约束和局部最小值如下所示。

Graph of function (left). Contours, constraint and local minima (right)

函数图(左)。等高线、约束和局部最小值(右)

与最大化问题的关系

如果您有一个函数要最大化,您可以以类似的方式解决它,请记住最大化和最小化是等价问题,即

最大化 f(x) 等价于 最小化 -f(x)

拉格朗日乘数法在机器学习中的重要性

许多著名的机器学习算法都使用拉格朗日乘数法。例如,主成分分析 (PCA) 的理论基础是使用带有等式约束的拉格朗日乘数法构建的。同样,支持向量机 SVM 中的优化问题也使用此方法解决。然而,在 SVM 中,还涉及不等式约束。

扩展

本节列出了一些您可能希望探索的扩展本教程的想法。

  • 不等式约束下的优化
  • KKT 条件
  • 支持向量机

如果您探索了这些扩展内容中的任何一个,我很想知道。请在下面的评论中发布您的发现。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

教程

资源

书籍

  • 托马斯微积分,第 14 版,2017 年。(基于 George B. Thomas 的原创作品,由 Joel Hass、Christopher Heil、Maurice Weir 修订)
  • 微积分,第 3 版,2017 年。(Gilbert Strang)
  • 微积分,第 8 版,2015 年。(James Stewart)

总结

在本教程中,您了解了什么是拉格朗日乘数法。具体来说,您学习了

  • 拉格朗日乘数和拉格朗日函数
  • 如何在给定等式约束的情况下解决优化问题

你有什么问题吗?

在下面的评论中提出你的问题,我会尽力回答。

掌握机器学习微积分!

Calculus For Machine Learning

通过微积分概念变得更聪明

...通过更好地理解微积分的符号和术语

在我的新电子书中探索如何实现
机器学习微积分

它提供**自学教程**,并附有关于以下内容的**完整工作代码**:
微分梯度拉格朗日乘子法雅可比矩阵等等...

将恰到好处的微积分知识带到
您的机器学习项目


查看内容

拉格朗日乘数法简介的 7 条回复

  1. Fouz Sattar 博士 2021 年 9 月 4 日 上午 5:02 #

    写得很好,表达清晰。

  2. Ryan Gardner 2021 年 12 月 10 日 上午 5:04 #

    很棒的文章。清晰简洁。

  3. Akash 2022 年 2 月 25 日 晚上 8:17 #

    非常感谢您的努力,解释得很清楚

    • James Carmichael 2022 年 2 月 26 日 中午 12:32 #

      感谢您的反馈 Akash!

  4. Marina 2022 年 9 月 23 日 晚上 8:04 #

    很棒的文章。拉格朗日乘数法是否也能找到多个最优解,以及如何找到?
    先谢谢您了。

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。