前言
忘了哪个算法了(当时还没有回过头复习高数),里面在推导时上去来一句:这里引用拉格朗日乘子。当时我心中的羊驼就开始奔腾,我特,拉格朗日乘子是啥?为啥引用它?于是开始各种查资料,但没有一个能让我清清楚楚的明白的,直到之后回过头复习高数。
拉格朗日乘数法
首先进行三点说明:
1,拉格朗日乘子是拉格朗日乘数法中的东西
2,拉格朗日乘数法是高数下的内容
3,别问我“拉格朗日乘数法”和“拉格朗日中值定理”有啥关系,我不知道、不想听、不去看、不讨论。。。。
再首先,为什么需要拉格朗日乘数法?或者什么是拉格朗日乘数法?
你看啊,一旦进入机器学习这一行,我们经常遇到:求极值、求极值、求极值啦求极值。比如:求体积最大的长方体的体积,这样的。但真遇到“求体积最大的长方体的体积”这样的问题你求得出来么?对,没有其他条件了,就这十二个字“求体积最大的长方体的体积”,求不出来吧。所以我们必须在找找看有没有其他限制条件,比如:在表面积为 a^2 时求体积最大的长方体的体积。于是当限制条件达到一定数量时就绝壁能求出来了,对吧~
然后,我们把上面这段话总结一下就是:要找函数z = f( x, y ) 在附加条件φ(x, y) = 0下的可能极值点
那么怎么求呢?
于是解得第一步就是,则作拉格朗日函数:
L(x,y) = f(x, y) + λφ(x,y)
--------------------------------------------------------------------
这里说明两点:
1,为什么要加λφ(x, y)?这里是我的理解:f( x, y )是原方程,我们想求它在附加条件下的极值点,而因为附加条件φ(x, y) = 0,所以f(x, y) + λφ(x, y) 即 L(x, y) 在结果上还是f(x, y)。不过,虽然L(x, y)在结果上还是f(x, y),但这样一来,在之后的步骤中因为我们是对L(x, y)求极值,即求 f(x, y) 在附加条件φ(x, y) = 0 下的极值,所以这样一来就满足要求了。
2,为什么L(x, y) =f(x, y) + λφ(x, y)是拉格朗日函数啊?此问题问得好!因为我没法回答你。
--------------------------------------------------------------------
好了,我们继续。
在L(x, y)中λ是参数。求其对 x 与 y 的一阶偏导,并使之为零,然后与φ(x, y) = 0联立起来:
由这组方程组解释出x,y及λ,这样得到的(x, y)就是函数f(x, y)在附加条件φ(x, y) = 0 下的极值点。
函数L(x, y)称为拉格朗日函数,参数λ称为拉格朗日乘子。
例子:
该例子摘自高数下