拉格朗日乘子法(一)

Lagrange_portrait.jpg
Joseph Louis Lagrange

definition on Wikipedia:

In mathematical optimization, the method of Lagrange multipliers is a strategy for finding the local maxima and minima of a function subject to equality constraints. (Wikipedia)

拉格朗日乘子法 是一种在一个或多个约束条件下,局部最小化或最大化函数的方法。
例如:对变量 xy 使 x2+y2 尽可能小,同时满足约束xy=1
以下是如何使用拉格朗日乘子法及其工作原理的解释:
这个解释(尤其是为什么它们的工作)只有一个约束要简单得多,所以我们将从一个直观的论证开始,然后在多个约束的情况下转向一个更严格的论证。这两种情况都需要熟悉偏导数向量

一个约束条件

假设我们想要根据约束 g(x,y)=0, 最小化函数 f(x,y)
(现在我们将最小化两个变量的函数,但是该方法将自然地扩展到更多变量的函数,并且最大化的过程完全相同。)
对于上面的例子,f(x,y)=x2+y2g(x,y)=xy1 (因为 xy1=0 等价 xy=1 )。
为了解决这个问题,我们创建了一个 L(x,y,λ) 名为 Lagrangian 的新函数。
它被定义为 L(x,y,λ)=f(xy)λg(x,y) ,其中 λ 是一个称为拉格朗日乘子的新变量。
(有些人用 +,而不是 ,但这并没有改变定义,除了λ的符号发生变化。)
然后,我们取原始变量xyλ 相对于 L 的偏导数,将所有这些部分设置为零,并求解 xy
对于上面给出的例子,我们有:

L(x,y,λ)=x2+y2λ(xy1)L/x=2xλyL/y=2yλxL/λ=(xy1)

将所有部分设置为零并求解,我们得到它 λ=2 并且(x, y)是(1, 1)或者(-1, -1)。
实际上,这些点是受制于约束 g(x,y)=0f(x,y) 局部最小值。(在这种情况下,它们也是全局极小值,虽然通常不能保证。)

引言

为什么拉格朗日乘子法有效?
人们很容易认为我们可以通过找到一个不受约束 L 的最小值, 来找到一个受约束的 f 的最小值; 毕竟,我们将所有 L 的分量设置为等于零。但这是错误的。解决方案 (x,y,λ) 实际上,从来不是局部最小值或最大值,总是会有一个马鞍点对应到 L。那么为什么拉格朗日乘子法有效呢?答案与等高曲线梯度有关。

lagrange1.png

等值曲线

函数的等值曲线[等高线]是函数等于常数值的点集。
(在三个维度中,它们被称为等值面,更一般地说,等值集合。)
在上面的图片中,红色圆是一些等值曲线 f(x,y)=x2+y2(较大的圆对应于 f中更高的值)。
蓝色曲线是满足约束 g(x,y)=0 的点集,使其成为 g(x,y) 的一条等值曲线。

几何分析

约束最小化就是寻找蓝色曲线上红色谷中最低的点:每个红色曲线代表不同高度的谷。
事实证明,这极值点总是红色和蓝色等值曲线的相切点,例如上图中的黑点。
要了解原因,有必要查看曲线不相切的点,例如橙色点。由于红色和蓝色等值曲线在橙色点彼此不相切,它们彼此交叉。由于它们交叉,当沿着蓝色曲线在红色谷中向一个方向上移动时,红谷值向另一个方向移动向下移动。
换句话说,存在局部变化 (x,y),在保持约束 g(x,y)=0 的情况下,导致目标函数f(x,y)减少,而相反的变化导致它增加。 因此交叉点不可能是受限制的最小值或最大值。由于最小值不能在等值曲线交叉的点处,因此它必须在它们相切的点处。在切点,当你沿着曲线 g(x,y)=0 移动时, f(x,y) 是近似不变的一阶导数,因此它可能是最小值或最大值。(它可能也不是,但至少它可能是。)

数学分析

我们如何在数学上表达等值曲线 fg 相切?这是梯度的来源。函数的梯度 f 被写为 f 并定义为向量,其中每个分量是 f 相对于相应变量的偏导数:f=(f/x,f/y)。梯度具有对我们非常有用的属性:f 的梯度总是垂直于 f 给定的等值曲线(x,y)。要探究这个问题,我们定义 (Δx,Δy) 是改变(x,y)的微元[small amount]。它将如何改变f(x,y)?首先,答案是:

f(x+Δx,y+Δy)f(x,y)+fxΔx+fyΔy

如果(Δx,Δy)是在等值曲线的方向,我们将拥有 f(x+Δx,y+Δy)f(x,y),这意味着 fxΔx+fyΔy=0 。换句话说,f(Δx,Δy) 的点积为零。由于 (Δx,Δy)在等值曲线的方向上,这意味着 等值曲线和梯度彼此垂直

由于我们希望的等值曲线 fg 为彼此相切,并且每个函数的梯度是垂直于它的等值曲线中,我们希望梯度以在相同的方向(或沿相反方向)指向。如果一个是另一个的标量倍数,则两个向量指向相同的方向。 这个标量将成为拉格朗日乘子,我们称之为λ:f=λg。该向量方程扩展为每个 x 和的一个方程 y。将约束本身添加到我们的方程组中,我们得到:

fx=λgx fy=λgy g(x,y)=0

小结

Lagrange multipliers方法就是产生这些方程并求解它们。然而它通常用拉格朗日函数来描述 L(x,y,λ)=f(x,y)λg(x,y)。将 x, y, λ 关于Lagrangian的偏导数,写成以上例子的形式。例如,L/x=f/xλg/x。 将这个值设为零就可以得到例子中的第一个方程。最后还有一个等式,L/λ=g(x,y)。如果你愿意,你根本就不需要担心Lagrangian,你只需要找到一个点(x,y) 和标量 λ,使f=λg 满足约束条件。这些点将是约束最小值(或最大值)的候选值。

总之,约束极小值和极大值出现在约束函数的等值曲线 g目标函数的等值曲线 f的相切的点处。
f=λg 时,有以上例子中的方程式成立。拉格朗日函数L用一个函数的偏导数将这些方程统一起来。

后记

在切点位置两等值曲线方向平行,考虑到梯度和等值曲线垂直,那么可以用梯度平行来求切点位置。

切点 -> 变量偏导比例相等 -> 梯度方向相同 -> 梯度模成比例 -> 候选极值


f(x,y)=x2+y2g(x,y)=xy1xy1=0t(x)=1/x

20190605171448.png

20190605181854.png

20190605172014.png

https://danstronger.wordpress.com/2015/08/08/lagrange-multipliers/
https://jermmy.github.io/2017/07/27/2017-7-27-understand-lagrange-multiplier/
https://www.svm-tutorial.com/2016/09/duality-lagrange-multipliers/