kkt条件理解

参考:
链接
链接

推导:

我们以这个为例,也就是一个不等式约束:
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)取最小值:
(下面两图表示同一个意思):
image.pngimage.png
此时可以发现约束有没有都行,直接求f(x)最小值即可

不包含情况

第二种情况是f(x)求出的最小值没有包含到g(x)这个作用域内,如下图
image.png
此时通过几何图像可以知道:我们只需要在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)了
image.png
综上所述:如果λ=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)也满足了。

补充

如果加上松弛条件:
image.png
可以发现和之前差不多,只是多出来一个image.png
image.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值