文章目录
1. 拉格朗日算子
1.1 基本流程
假设x=[x1,x2,...,xd],是一个d维的向量,f(x)和g(x)是定义在实数集上连续可微的函数,现在需要找一个x∗使得f(x)具有最小值,且g(x)≤0。即有:
xminf(x)s.t. g(x)≤0(1.1)
那么,通过拉格朗日乘子法,可以构造出下面的式子:
L(x,w)=f(x)+wg(x)(1.2)
令L(x,w)的对x的导数为0,求解出x,w的值,那么,x就是函数f(x)在附加条件g(x)下可能的极值点。
1.2 理解
第一层理解:
在学高数的时候,对拉格朗日的理解仅限于:构造了一个函数L(x,y,λ),对该函数L(x,y,λ)求极导,令导数为0,可以算出极大值极小值。
第二层理解:
在进行第二层理解时,需要明白几个概念:
- 数学里面,梯度指的是函数变化最快的方向。
- 梯度跟函数约束曲线是垂直的,既然垂直于约束曲面,就一定垂直于等高线。
具体可以参考这篇文章拉格朗日乘子法。该文比较直观的介绍了拉格朗日的基本定理,并且从切线、梯度的角度分析了拉格朗日算子。
2. KKT条件
2.1 一个限制条件的情况
看完这个例子之后,在公式(1.2)可能取到的所有点中,的的确确找到了一个x∗,使得f(x)最小且满足g(x)≤0,在这样的情况下,必然有
▽f(x∗)+w▽g(x∗)=0(2.1)
而公式(2.1)在某些条件下刚好是公式(1.2):L(x,w)=f(x)+wg(x)对x的偏导数等于0的情况。
∂x∂L(x,w)=▽f(x)+w▽g(x)
那么,某些条件是什么呢?
-
g(x)≤0:这个没什么好说的,限制条件。
-
w≥0:要满足这个条件,考虑g(x)<0和g(x)=0两种情况:
(1). 当g(x∗)=0时:说明这个点在 g(x)=0构成的边界上,此时必然有▽f(x∗)和▽g(x∗)平行,但是无法保证他们俩方向和大小相同,因此标量w>0,使得等式(2.1)成立。
(2). 当g(x∗)<0时:说明这个点在g(x)=0构成边界的内部,此时限制条件g(x)≤0就打酱油了,没卵用,可以直接通过条件▽f(x)=0获得最优点,这个时候w=0。
-
wg(x)=0:要加上这个条件的原因是,为了满足条件2中的两种情况。
⎩⎨⎧g(x)≤0w≥0wg(x)=0(2.2)
所以啊,公式(2.2)就被称为Karush-Kuhn-Tucker, (KKT)条件。
2.2 多个限制条件的情况
一个限制条件说清楚了,那么多当有多个约束条件时,考虑l个等式约束和k个不等式约束。
xminf(x)s.t. ci(x)≤0 hj(x)=0 (i=1,2,...,k)(j=1,2,...,l)(2.3)
这个时候,引入拉格朗日算子α=[α1,α2,...,αl]和β=[β1,β2,...,βk],拉格朗日函数为
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)(2.4)
则他们的KKT条件是:
⎩⎪⎪⎨⎪⎪⎧ci(x)≤0 αi≥0 αici(x)=0hj(x)=0(i=1,2,...,k)(i=1,2,...,k)(2.5)
3. 对偶问题
KKT条件中提到,在公式(1.2)可能取到的所有点中,的的确确找到了一个x∗,使得f(x)最小且满足g(x)≤0。
但是,如果找不到呢。。。
3.1 原始问题
3.1.1 一个限制条件的情况下
找不到x∗,公式(2.1)就不能成立了,
▽f(x∗)+w▽g(x∗)=0(2.1)
但是,我要怎么告诉公式(2.1)不能成立啊!!!
找不到x∗,说明存在一个xfake违背了g(x)≤0的条件,有g(xfake)>0,既然这样的话,在
L(x,w)=f(x)+wg(x)
中,我们令w→+∞。这样的话,
- 若x不违反g(x)≤0约束,则maxwL(x,w)=f(x)
- 若x违反g(x)≤0约束,则maxwL(x,w)=+∞
所以就变成了
xminwmaxL(x,w)(3.1)
3.2.2 多个限制条件的情况下
xminαi,βj;αi≥0maxL(x,α,β)(3.2)
3.2 转化者
换个心情,换个思路。。。(透。。。)
这个问题称为广义拉格朗日函数的极大极小问题。
αi,βj;αi≥0maxxminL(x,α,β)(3.3)
也就是求
αi,βj;maxxminL(x,α,β)s.t. αi≥0(3.4)
3.3 大小安排一波???
假设公式(3.2) 原始人 的最优解为p∗,公式(3.4) 转化者 的最优解为d∗。
因为
xminL(x,α,β)≤L(x,α,β)≤αi,βj;αi≥0maxL(x,α,β)(3.5)
因为原始人和转化者都有最优解,所以有
d∗=αi,βj;maxxminL(x,α,β)≤xminαi,βjmaxL(x,α,β)=p∗(3.6)
所以在KKT条件中,还要加上这几条,最后是:
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧▽xL(x,α,β)=0▽αL(x,α,β)=0▽βL(x,α,β)=0ci(x)≤0 αi≥0 αici(x)=0hj(x)=0(i=1,2,...,k)(i=1,2,...,k)(3.7)
4. 小结
所以,要求一个连续可微函数的最小值,并且还有一堆限制条件,可以这么做:
- 引入拉格朗日乘子,构造拉格朗日函数;
- 计算拉格朗日函数对未知参数的偏导数,并令导数为0,求解参数。
- 将参数代入拉格朗日函数中,并转化成对偶问题后求解。(转换的时候注意其KKT条件)
5. 参考文献
《西瓜书》
《统计学习方法》
《拉格朗日乘子法》