推导:
我们以这个为例,也就是一个不等式约束:
m
i
n
f
(
x
)
minf(x)
minf(x)
s
.
t
.
g
(
x
)
≤
0
s.t.g(x)≤0
s.t.g(x)≤0
也就是要对f(x)求最小值,但是要保证取得x的值去计算g(x)的值要小于0.
包含的情况
第一种最简单的情况是g(x)<=0的范围刚好包含了f(x)取最小值:
(下面两图表示同一个意思):
此时可以发现约束有没有都行,直接求f(x)最小值即可
不包含情况
第二种情况是f(x)求出的最小值没有包含到g(x)这个作用域内,如下图
此时通过几何图像可以知道:我们只需要在g(x)作用域内找出一个点,使得f(x)取得最小,那这个点就是我们的所求点
那么如何取描述这个点呢,这里结合上图来进行理解,这里我们用X*来表示所求点(我下面两点是理解整个思想的关键):
2.1 : 这个所求点肯定是在g(x)域的边界处,因为g(x)内部的点小于0,所以有
g
(
X
∗
)
=
0
g(X^*)=0
g(X∗)=0
2.2: 同时这个点到f(x)的圆心的连线垂直于g(x)这个圆,所以f(x)在这个点处的一阶导和g(x)在这个点处的一阶导共线,所以有:
∇
f
(
X
∗
)
+
λ
∇
g
(
X
∗
)
=
0
\nabla f(X^*)+\lambda \nabla g(X^*)=0
∇f(X∗)+λ∇g(X∗)=0,这里的λ肯定是大于0的,因为f(x)g(x)的梯度相反。
总结
根据前面的特点我们再来看kkt条件就可以理解了,kkt条件就是相当于将“包含和不包含”这两种情况糅合到一起来讨论:
不管包含还是不包含都要满足:
g
(
X
∗
)
≤
0
g(X^*)\le0
g(X∗)≤0 (4)
包含的情况下要满足:
∇
f
(
X
∗
)
+
λ
∇
g
(
X
∗
)
=
0
\nabla f(X^*)+\lambda \nabla g(X^*)=0
∇f(X∗)+λ∇g(X∗)=0(1)
g
(
X
∗
)
=
0
g(X^*)=0
g(X∗)=0(半个2)
λ
>
0
\lambda >0
λ>0(半个3)
不包含的情况下要满足:
∇
f
(
X
∗
)
=
0
\nabla f(X^*)=0
∇f(X∗)=0此时
λ
=
0
\lambda=0
λ=0(半个2)(半个3)
两个情况结合在一起就是下面的(1)(2)(3)(4)了
综上所述:如果λ=0,就只有
∇
f
(
X
∗
)
=
0
\nabla f(X^*)=0
∇f(X∗)=0,就对应包含的情况,此时(2)(3)(4)都满足;如果λ>0,就是
∇
f
(
X
∗
)
+
λ
∇
g
(
X
∗
)
=
0
\nabla f(X^*)+\lambda \nabla g(X^*)=0
∇f(X∗)+λ∇g(X∗)=0,此时对应不包含,那么g(X*)一定为0(对应2.1),此时(2)(3)(4)也满足了。
补充
如果加上松弛条件:
可以发现和之前差不多,只是多出来一个