拉格朗日乘子法与KKT条件
无约束优化问题
对于无约束优化问题如:
m
i
n
f
(
x
)
min\ f(x)
min f(x)
如果问题是
m
a
x
f
(
x
)
max\ f(x)
max f(x)则可以通过取反转化为求最小值
m
i
n
−
f
(
x
)
min\ -f(x)
min −f(x)。对于这类问题,通常需要对问题中的每个变量求偏导,然后令偏导为0,解方程组,找到问题的解即可。
等式约束与拉格朗日乘子法
对于等式约束问题,如:
m
i
n
f
(
x
)
s
.
t
.
h
(
x
)
=
0
\begin{aligned} &min\quad f(x)\\ &s.t.\quad h(x)=0 \end{aligned}
minf(x)s.t.h(x)=0
对此类问题,无法直接用无约束优化问题的求解方案进行求解,因为求出的解可能并不满足问题的约束。此类问题可以表示如下图:
如图,其中不同的蓝色圆圈是指目标函数
f
(
x
,
y
)
f(x,y)
f(x,y) 投影在平面上的不同等值线,黑色曲线是约束条件
h
(
x
)
=
0
h(x)=0
h(x)=0 的函数图像。所以等值线与函数图像相交的点其实就是所有满足约束的点。虽然所有的交点都满足约束条件,但是从图中可以明显看到,只有等值线与约束函数 相切 时,函数才有极值点,即从此点出发沿着
h
(
x
)
h(x)
h(x) 的图像向左或者向右走,
f
(
x
,
y
)
f(x,y)
f(x,y) 的值不会同时变大和变小。且在相切的地方
h
(
x
)
h(x)
h(x) 的梯度和
f
(
x
,
y
)
f(x,y)
f(x,y) 的梯度应该是在同一条直线上的。(在切点处两个函数的梯度都与切平面垂直,所以在一条直线上)
所以满足条件的极值点一定满足:
∇
f
(
x
,
y
)
=
λ
∇
h
(
x
,
y
)
∇f(x,y)=λ∇h(x,y)
∇f(x,y)=λ∇h(x,y) (
λ
=
0
λ=0
λ=0 表示
f
(
x
,
y
)
f(x,y)
f(x,y) 本身的极值点刚好在切点上),然后和原来的等式方程
h
(
x
,
y
)
=
0
h(x,y)=0
h(x,y)=0 联立,然后只要解出这个方程组,就可以得到问题的解析解了。当然也存在解不出来的情况,就需要用罚函数法之类的方法求数值解了。
为了方便和好记,就把原来的优化问题写成
f
(
x
,
y
)
+
λ
h
(
x
,
y
)
f(x,y)+λh(x,y)
f(x,y)+λh(x,y) 的形式,然后分别对
λ
,
x
,
y
λ,x,y
λ,x,y 求偏导,并且令偏导为 0 就行了,和之前得到的方程组是一样的。这种方法叫拉格朗日乘数法。
对于多个等式约束,可以将原问题写成
L
(
x
,
λ
)
=
f
(
x
)
+
∑
i
=
1
n
λ
i
∇
h
i
(
x
)
L(x,λ)=f(x)+\begin{matrix} \sum_{i=1}^n \lambda_i \nabla h_i(x)\end{matrix}
L(x,λ)=f(x)+∑i=1nλi∇hi(x)形式,然后对
x
,
λ
x,λ
x,λ求偏导,让他们等于0,解方程组,得到最终结果。
不等式约束与KKT条件
若原问题中既有等式约束,又有不等式约束时,如:
m
i
n
f
(
x
)
s
.
t
.
h
(
x
)
=
0
g
(
x
)
≤
0
\begin{aligned} min\quad &f(x)\\ s.t.\quad &h(x)=0\\ \quad &g(x)≤0 \end{aligned}
mins.t.f(x)h(x)=0g(x)≤0
( 对于 ≥ 约束只要取反转换为 ≤ 约束就行了)这类问题可以表示如下图:
阴影部分表示可行域,相比于等式约束问题中可行域为一条线,不等式约束中的可行域变成了一个区域。对此类问题可表示为:
L
(
x
,
λ
,
μ
)
=
f
(
x
)
+
∑
i
=
1
n
λ
i
∇
h
i
(
x
)
+
∑
j
=
1
m
μ
j
∇
g
j
(
x
)
L(x,λ,μ)=f(x)+\begin{matrix} \sum_{i=1}^n λ_i \nabla h_i(x)\end{matrix}+\begin{matrix} \sum_{j=1}^m μ_j \nabla g_j(x)\end{matrix}
L(x,λ,μ)=f(x)+∑i=1nλi∇hi(x)+∑j=1mμj∇gj(x)。此时,极值点的取值有两种情况:
1、可行域里面中的极值点(图左
x
∗
x^*
x∗点)
2、h(x)和等值线相切的极值点(图右
x
∗
x^*
x∗点)
对于第一种情况,因为极值点本身就在可行域内,此时的约束条件不起作用,也就是说
μ
=
0
,
g
(
x
)
≤
0
μ=0,\ g(x)≤0
μ=0, g(x)≤0,所以有:
∇
f
(
x
)
+
λ
∇
h
(
x
)
=
0
h
(
x
)
=
0
g
(
x
)
≤
0
\nabla f(x)+λ\nabla h(x)=0\\ h(x)=0\\ g(x)≤0
∇f(x)+λ∇h(x)=0h(x)=0g(x)≤0
对第二种情况,不等式约束就变成等式约束了,此时
μ
≥
0
,
g
(
x
)
=
0
\ μ≥0, \ g(x)=0
μ≥0, g(x)=0,有:
∇
f
(
x
)
+
λ
∇
h
(
x
)
+
μ
∇
g
(
x
)
=
0
h
(
x
)
=
0
g
(
x
)
=
0
μ
≥
0
\nabla f(x)+λ\nabla h(x)+μ\nabla g(x)=0\\ h(x)=0\\ g(x)=0\\ μ≥0
∇f(x)+λ∇h(x)+μ∇g(x)=0h(x)=0g(x)=0μ≥0
综合来看,第一种情况中有
μ
≥
0
μ≥0
μ≥0 且
g
(
x
)
=
0
g(x)=0
g(x)=0, 第二种情况
μ
=
0
μ=0
μ=0 且
g
(
x
)
≤
0
g(x)≤0
g(x)≤0。将两种情况综合起来,可以写成:
μ
g
(
x
)
=
0
,
μ
≥
0
,
g
(
x
)
≤
0
μg(x)=0 , \ μ≥0 ,\ g(x)≤0
μg(x)=0, μ≥0, g(x)≤0。此时可得:
∇
f
(
x
)
+
λ
∇
h
(
x
)
+
μ
∇
g
(
x
)
=
0
h
(
x
)
=
0
μ
g
(
x
)
=
0
μ
≥
0
g
(
x
)
≤
0
\nabla f(x)+λ\nabla h(x)+μ\nabla g(x)=0\\ h(x)=0\\ μg(x)=0\\ μ≥0\\ g(x)≤0
∇f(x)+λ∇h(x)+μ∇g(x)=0h(x)=0μg(x)=0μ≥0g(x)≤0
这个就是 KKT 条件。它的含义是这个优化问题的极值点一定满足这组方程组。(不是极值点也可能会满足,但是不会存在某个极值点不满足的情况)它也是原来的优化问题取得极值的必要条件,解出来了极值点之后还是要代入验证的。但是因为约束比较多,情况比较复杂,KKT 条件并不是对于任何情况都是满足的。要满足 KKT 条件需要有一些规范性条件(Regularity conditions),就是要求约束条件的质量不能太差,常见的比如:
1、LCQ:如果 h(x) 和 g(x) 都是形如 Ax+b 的仿射函数,那么极值一定满足 KKT 条件。
2、LICQ:起作用的 g(x) 函数(即 g(x) 相当于等式约束的情况)和 h(x) 函数在极值点处的梯度要线性无关,那么极值一定满足 KKT 条件。
3、Slater 条件:如果优化问题是个凸优化问题,且至少存在一个点满足 h(x)=0 和 g(x)=0,极值一定满足 KKT 条件。并且满足强对偶性质
参考链接
http://www.cnblogs.com/xinchen1111/p/8804858.html