拉格朗日乘子法(二)

Lagrange_portrait.jpg
Joseph Louis Lagrange

多个约束条件

引言

现在我们来看看,在一般情况下,当我们在 k个约束条件下:gi(x1,,xn)=0gi(x1,,xn)=0,其中 ii11kk ,求最小化 nn个变量的函数f(x1,,xn)f(x1,,xn)拉格朗日函数和前文一样,除了每个约束有不同的λλ
约束:

L(x1,...,xn,λ1,...,λk)=f(x1,...,xn)kj=1λjgj(x1,...,xn)L(x1,...,xn,λ1,...,λk)=f(x1,...,xn)kj=1λjgj(x1,...,xn)

(我们将jj用于kk作为约束索引,将ii用于nn作为变量的索引xixi。)约束最小值出现在所有变量对LL的偏导数为零的点上。

简单例子

我们将使用一个相对简单的例子来说明方法:我们试图最小化 x21+x22+x23x21+x22+x23
有两个约束条件:x1=1x1=1x2=1x2=1
Lagrangian: x21+x22+x23λ1(x11)λ2(x21)x21+x22+x23λ1(x11)λ2(x21)
它的偏导数是:

L/x1=2x1λ1L/x2=2x2λ2L/x3=2x3L/λ1=(x11)L/λ2=(x21)L/x1=2x1λ1L/x2=2x2λ2L/x3=2x3L/λ1=(x11)L/λ2=(x21)

将它们全部设置为零得到答案:(x1,x2,x3)=(1,1,0)(x1,x2,x3)=(1,1,0)λ1=λ2=2λ1=λ2=2.

在一个约束情形中,拉格朗日乘子方程等价于矢量方程 f=λgf=λg
对于多个约束,相应的向量方程是:

f=kj=1λjgjf=kj=1λjgj

解释

上述等式将得出以下事实:对于变量 ii,当 L/xi=f/xikj=1λjgj/xiL/xi=f/xikj=1λjgj/xi成立时有f/xi=kj=1λjgj/xif/xi=kj=1λjgj/xi ,因此把L/xiL/xi(ii11nn)偏导数置为零等效于上述向量方程。注意,将偏导数L/λjL/λj等于零只会强化gj(x1,,xn)=0gj(x1,,xn)=0的约束。

如何相切

在一个约束情形中,找到点是有用的, f=λgf=λg因为这意味着水平曲线ff 与水平曲线gg相切。在多重约束的情况下,它并不那么简单。单个约束gigi的水平表面不一定与ff约束最小值处的水平表面相切。(在上面的示例中,约束平面x1=1x1=1ff球体的水平面x21+x22+x23=2x21+x22+x23=2在最佳点处相交(1,1,0)(1,1,0)。)相反,事实证明,所有gigi水平面的交点都与ff水平面的相切。

为了更好的理解,让我们直接看xx的小扰动对 ff和约束方程gjgj的影响,有x=(x1,,xn)x=(x1,,xn),同时使Δx=(Δx1,,Δxn)Δx=(Δx1,,Δxn)我们有:

f(x+Δx)f(x)ni=1Δxifxif(x+Δx)f(x)ni=1Δxifxi

条件

如果更改xx,有扰动ΔxΔx 能保持所有gjgj约束方程有相同的(一阶导),同时引起f(x)f(x)的非零变化,则xx不可能是受约束的局部最小值。因为在某些方向上沿的交点移动所有的水平曲线gjgj都会导致ff减少(或增加)。所以我们想要的条件是:

  1. 对于所有可能使 gj(x)Δxgj(x)Δx ,(jj11kk) 成立的 ΔxΔx, 有f(x)Δx.f(x)Δx.

对每个jjgj(x)Δxgj(x)Δx, ΔxΔx在与gjgj水平面相切的方向上。如果ΔxΔx在与所有的gjgj水平面交点相切的方向上,那么每一个jj都成立。条件一表示任何此类ΔxΔx也与水平面相切ff。另一方面,拉格朗日乘子法强制执行的条件是:

  1. 存在 λ1λ1λkλk 使得 f=kj=1λjgjf=kj=1λjgj.

令人高兴的是,事实证明条件1和2等价。

定理:条件1和2等价

证明

证明:(为什么现在我们一整天挥手都有严格的证据?有时最直观的论证就是证明;也许就是这种情况。)首先我们将证明2、1等价.假设对于每一个jj11kk,有 f=kj=1λjgjf=kj=1λjgj, gj(x)Δxgj(x)Δx 。因为gj(x)Δx$,$gj(x)Δx=0gj(x)Δx$,$gj(x)Δx=0。所以 fΔx=(kj=1λjgj)Δx=kj=1λjgjΔx=0.fΔx=(kj=1λjgj)Δx=kj=1λjgjΔx=0.。这意味着 fΔxfΔx

接下来我们将证明1意味着2,或等效地,不是2意味着不是1.否定2表示ff不在向量的跨度内。让我们用zz来表示 ffgjgj 跨度内的投影,并设置Δx=fzΔx=fz。我们将证明这是建立否定条件1的反例。

证否

我们知道 fzfz 所以有 Δx0Δx0,通过投影的定义,对每个jjΔxgjΔxgj。此外,fΔx=(z+Δx)Δx=zΔx+ΔxΔxfΔx=(z+Δx)Δx=zΔx+ΔxΔx,因为 zz 是在gjgj域上垂直于ΔxΔx,同样的有zΔxzΔx
新增zΔx=0zΔx=0ΔxΔx0ΔxΔx0 ,我们得到 (z+Δx)Δx0(z+Δx)Δx0。 也就是说fΔx0fΔx0,所以ff不垂直ΔxΔx。由于ΔxΔx垂直于所有gjgj,但不垂直ff,所以条件一也被证否。我们假设条件2的否定,因此这表明不是2意味着不是1,或者等效地,1意味着2。

小结

现在我们已经看到拉格朗日乘子法通过找到 xx 一组 λjλj 这样 f=kj=1λjgjf=kj=1λjgj 的东西而发挥作用。这个等式意味着不存在局部变化 ,使一阶导数,符合所有约束但改变目标函数 ff 的值。因此满足该等式的值xx是受约束的局部最小值或最大值的候选值。求解该向量方程等效于将拉格朗日函数的偏导数设置为零。

我希望能够说明拉格朗日乘子法的工作方式和原因,并稍使它们看起来不这么像魔术。

后记

感觉原文作者描述的非常严谨,有很多地方我没法跟上作者的思路。
就我个人较感性的理解

单约束的表达式中:

L(x,y,λ)=f(xy)λg(x,y)L(x,y,λ)=f(xy)λg(x,y)

拉格朗日函数偏导为零,表明梯度f=(fx,fy)f=(fx,fy) ,和梯度 g=(gx,gy)g=(gx,gy) 成比例。
只有在切点处才有梯度重叠,才可以向量互相线性表示;
在切点处是局部的极值点,任何符合gg的微小扰动(Δx,Δy)(Δx,Δy) 会导致函数ff的增大或减小。
所以解LL偏导等于零的方程组(2+1),可以得到候选极值点。

在多约束表达式中:

L(x1,...,xn,λ1,...,λk)=f(x1,...,xn)kj=1λjgj(x1,...,xn)L(x1,...,xn,λ1,...,λk)=f(x1,...,xn)kj=1λjgj(x1,...,xn)

有多变量,多约束条件;可以认为是求解极值向量的问题
多约束的条件下,单条件相切并不一定是局部极值;
需要做到ff与所有gigi的相交处相切,即在约束面上各方向目标函数偏导数为零处。
梯度的原理同单约束,梯度向量在各方向上成比例。

(λ1λ2...λk)T.(g1g2...gk)=y⎜ ⎜ ⎜λ1λ2...λk⎟ ⎟ ⎟T.⎜ ⎜ ⎜g1g2...gk⎟ ⎟ ⎟=y

在局部最优解的向量上,符合所有约束gg的微小扰动向量(Δx1,Δx2,Δxn)(Δx1,Δx2,Δxn)都会导致函数ff的增大或减小。
所以解LL偏导等于零的方程组(n+1),可以得到候选极值向量。


g(x1,x2,z3)=x21+x22+x23x21+x22+x23=2x1=1x2=1g(x1,x2,z3)=x21+x22+x23x21+x22+x23=2x1=1x2=1

20190606145608.png

将目标函数约束到三维空间,超平面中的球体半径为所求目标函数的值。

20190606145519.png

(1,1,0)(1,1,0)处球体与约束平面相切,取到极值2。

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/