非线性最优化理论与方法
第一节:Karush-Kuhn-Tucker(KKT)条件
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
- Karush-Kuhn-Tucker (KKT)条件是非线性规划(nonlinear programming)最佳解的必要条件。KKT条件将Lagrange乘数法(Lagrange multipliers)所处理涉及等式的约束优化问题推广至不等式。在实际应用上,KKT条件(方程组)一般不存在代数解,许多优化算法可供数值计算选用。
- 对偶(Dual)是数学中的一个核心概念,集合有对偶的概念,函数有对偶函数。同样优化问题也有对偶问题。本质上,对偶提供了审视问题的一种新视角,例如凸集可以看做包含其中任意两点凸组合的集合,也可以从对偶的角度看成是新切割凸集的一族半空间的交。灵活的使用对偶的思想在实际优化过程会起到事半功倍的效果。
一、Karush-Kuhn-Tucker (KKT)条件
KKT条件(Karush–Kuhn–Tucker conditions)是最优化(特别是非线性规划)领域最重要的成果之一,是判断某点是极值点的必要条件。
KKT条件(Karush-Kuhn-Tucker conditions)是由三位数学家的姓氏组成的缩写,分别是Karush、Kuhn和Tucker。这三位数学家都对非线性规划问题的最优化条件做出了重要的贡献。但是在KKT条件的发现还有一段历史小插曲。1951年Kuhn和Tucker发现了KKT条件并撰写了论文将其正式发表出来,引起了很多学者的重视。但之后有一些学者发现早在1939年Karush在其硕士学位论文里边已经给出了KKT条件,只是大家并没有太在意。因此Kuhn ,Tucker,Karush 三位都作为独立发现KKT条件的学者,这个最优性条件就以他们三个人的名字来命名。有一说一,人家在80多年前读硕士的时候就能发现这么厉害的东东,实在是让我等汗流浃背呀!d(ŐдŐ๑)d
二、KKT条件的适用范围
KKT条件一般用于求解带等式约束或者不等式约束的优化问题。
1.等式约束问题
给定一个目标函数 f : R n → R f:\mathbb{R}^n\to\mathbb{R} f:Rn→R ,假设 x ∈ R n x\in\mathbb{R}^n x∈Rn ,在满足约束条件 h j ( x ) = 0 , j = 1 , 2 , . . . , m h_j(x)=0,j=1,2,...,m hj(x)=0,j=1,2,...,m 的前提下,使得 f ( x ) f(x) f(x) 有最小值。这个约束优化问题记为
min
f
(
x
)
s
.
t
.
h
j
(
x
)
=
0
,
j
=
1
,
2
,
.
.
.
m
.
\begin{array}{ll}\min&f(x)\\\mathrm{s.t.}&h_j(x)=0, j=1,2,...m.\end{array}
mins.t.f(x)hj(x)=0,j=1,2,...m.
其中
f
,
h
j
:
R
n
→
R
f,h_j:\mathbb{R}^n\to\mathbb{R}
f,hj:Rn→R均为连续可微的函数。
对于等式优化问题,我们都知道直接构造lagrangian函数,再分别求导然后解方程式就可以解了。
1、构造lagrangian函数:
L
(
x
,
λ
)
=
f
(
x
)
+
∑
j
=
1
m
λ
j
h
j
(
x
)
L(x,\lambda)=f(x)+\sum_{j=1}^m\lambda_jh_j(x)
L(x,λ)=f(x)+j=1∑mλjhj(x)
其中
λ
\lambda
λ就是lagrange乘子,通过构造lagrangian函数将原来的等式约束优化问题转变成无约束优化问题
min
x
,
λ
L
(
x
,
λ
)
\underset{{x},\lambda}\min L({x},\lambda)
x,λminL(x,λ)。
2、分别计算
L
(
x
,
λ
)
L(x,\lambda)
L(x,λ)对
x
,
λ
x,\lambda
x,λ的偏导数并设为0,可得最优解的必要条件:
∇
x
L
=
∂
L
∂
x
=
∇
f
+
λ
∑
j
=
1
m
∇
h
j
=
0
∇
λ
L
=
∂
L
∂
λ
=
∑
j
=
1
m
h
j
(
x
)
=
0
\begin{aligned}\nabla_xL&=\frac{\partial L}{\partial x}=\nabla f+\lambda\sum_{j=1}^m\nabla h_j=0\\\nabla_\lambda L&=\frac{\partial L}{\partial\lambda}=\sum_{j=1}^mh_j(x)=0\end{aligned}
∇xL∇λL=∂x∂L=∇f+λj=1∑m∇hj=0=∂λ∂L=j=1∑mhj(x)=0
其中第一式为定常方程式(stationary equation),第二式为约束条件。解开上面
m
+
1
m+1
m+1 个方程式可得
L
(
x
,
λ
)
L(x,\lambda)
L(x,λ) 的驻点
x
⋆
x^\star
x⋆ 以及
λ
\lambda
λ 的值 (正负数皆可能)。
2.不等式约束问题
通常,不等式约束问题具有如下形式:
min
f
(
x
)
s
.
t
.
g
i
(
x
)
≤
0
,
i
=
1
,
2
,
.
.
.
m
.
\begin{array}{ll}\min&f(x)\\\mathrm{s.t.}&g_i(x)\leq0, i=1,2,...m.\end{array}
mins.t.f(x)gi(x)≤0,i=1,2,...m.
在这里约束不等式
g
i
(
x
)
≤
0
g_i(x)\leq0
gi(x)≤0 称为原始可行性(primal feasibility),我们定义可行域(feasible region)
X
=
{
x
∈
R
n
∣
g
i
(
x
)
≤
0
}
\mathcal{X}=\left\{x\in\mathbb{R}^n|g_i(x)\leq0\right\}
X={x∈Rn∣gi(x)≤0}。假设
x
⋆
x^\star
x⋆ 为满足约束条件的最佳解,分开两种情况讨论:
(1)
g
(
x
⋆
)
<
0
g(\mathbf{x}^\star)<0
g(x⋆)<0 , 最佳解位于
X
\mathcal{X}
X 的内部,称为内部解(interior solution),这时约束条件是无效的
(inactive);
(2)
g
(
x
⋆
)
=
0
g(\mathbf{x}^\star)=0
g(x⋆)=0 ,最佳解落在
X
\mathcal{X}
X 的边界,称为边界解(boundary solution),此时约束条件是有
效的(active)。
这两种情况的最佳解具有不同的必要条件。
首先,对于第一种情况
g
(
x
⋆
)
<
0
g(\mathbf{x}^\star)<0
g(x⋆)<0,显然约束
g
(
x
⋆
)
g(\mathbf{x}^\star)
g(x⋆)不起作用了,那么原问题就退化成了无约束的优化问题。因此驻点
x
⋆
\mathbf{x}^{\star}
x⋆只需要满足
∇
f
=
0
\nabla f=\mathbf{0}
∇f=0并且
λ
=
0
\lambda=0
λ=0即可。
λ
=
0
\lambda=0
λ=0就意味着约束无效。
那么对于第二种情况
g
(
x
⋆
)
=
0
g(\mathbf{x}^\star)=0
g(x⋆)=0,即最佳解落在边界上,此时约束条件有效并且约束不等式变成了等式
g
(
x
)
=
0
g(\mathbf{x})=0
g(x)=0,这就回到了第一节等式约束问题的解决思路了。构造lagrangian函数再求导解方程式就行了。
那么到这我们可以稍微总结一下,为了便于理解我们还是把lagrangian函数callback一下那就是:
L
(
x
,
λ
)
=
f
(
x
)
+
∑
i
=
1
m
λ
i
g
i
(
x
)
L(x,\lambda)=f(x)+\sum_{i=1}^m\lambda_ig_i(x)
L(x,λ)=f(x)+i=1∑mλigi(x)
对于
(1)
g
(
x
⋆
)
<
0
g(\mathbf{x}^\star)<0
g(x⋆)<0,约束不起作用,有
λ
=
0
\lambda=0
λ=0;
(2)
g
(
x
⋆
)
=
0
g(\mathbf{x}^\star)=0
g(x⋆)=0,引入lagrange乘子
λ
\lambda
λ,且
λ
≥
0
\lambda\geq0
λ≥0。(这里
λ
\lambda
λ的符号很重要,大家先记住这个结论,后面我们详细再进行分析。)
那么如果从数学家的角度思考,人家做最优化的肯定希望能够用一个公式或者一句话就把上面的结论统一起来,而不是每次都要分情况讨论,这显然不够“最优”,hhhO(∩_∩)O~。那么怎么统一呢?于是Karush灵机一动,得到了一个关键的结论,那就是:
λ
g
(
x
⋆
)
=
0
\lambda g(\mathbf{x}^\star)=0
λg(x⋆)=0
这不就把上面两条都统一起来了。那么到这里KKT条件的大厦就已经建成了,剩下的就是缝缝补补,是不是感觉猝不及防,哈哈哈,我也是这么想的,心想,就这?那我们就接着往下看看
三、KKT条件的数学表达
1.KKT条件表达式
首先我们给出KKT条件的完整数学公式
考虑一个如下包含等式约束和不等式约束的优化问题:
m
i
n
f
(
x
)
s
.
t
.
g
i
(
x
)
≤
0
,
i
=
1
,
⋯
,
m
h
j
(
x
)
=
0
,
j
=
1
,
⋯
,
n
\begin{aligned} &min f(x) \\ &s.t. g_i(x)\leq0,i=1,\cdots,m \\ &h_j(x)=0,j=1,\cdots,n \end{aligned}
minf(x)s.t.gi(x)≤0,i=1,⋯,mhj(x)=0,j=1,⋯,n
其中
f
,
h
j
:
R
n
→
R
f,h_j:\mathbb{R}^n\to\mathbb{R}
f,hj:Rn→R均为连续可微的函数。令
X
=
{
x
∈
R
n
∣
g
i
(
x
)
≤
0
,
h
j
(
x
)
=
0
}
\mathcal{X}=\left\{x\in\mathbb{R}^n|g_i(x)\leq0,h_j(x)=0\right\}
X={x∈Rn∣gi(x)≤0,hj(x)=0}
假设
x
⋆
\mathbf{x}^\star
x⋆是该优化问题的最优点(即局部最小点),则有参数
λ
i
≥
0
\lambda_i\geq0
λi≥0,
η
j
∈
R
\eta_j\in\mathbb{R}
ηj∈R,且在
x
⋆
\mathbf{x}^\star
x⋆处满足线性独立约束规格条件(Linear Independent Constraint Qualification,LICQ条件),使得
∣
KKT条件
{
∇
f
(
x
∗
)
+
∑
i
=
1
m
λ
i
∇
g
i
(
x
∗
)
+
∑
j
=
1
n
η
j
∇
h
j
(
x
∗
)
=
0
(
1
)
λ
i
g
i
(
x
∗
)
=
0
,
i
=
1
,
.
.
.
,
m
(
2
)
λ
i
≥
0
,
i
=
1
,
.
.
.
,
m
(
3
)
.
g
i
(
x
∗
)
≤
0
,
i
=
1
,
.
.
.
,
m
(
4
)
h
j
(
x
∗
)
=
0
,
j
=
1
,
.
.
.
,
n
(
5
)
\left.\left|\text{KKT条件}\begin{cases}\nabla f\left(\mathbf{x}^{*}\right)+\sum_{i=1}^{m}\lambda_{i}\nabla g_{i}\left(\mathbf{x}^{*}\right)+\sum_{j=1}^{n}\eta_{j}\nabla h_{j}\left(\mathbf{x}^{*}\right)=0&(1)\\\lambda_{i}g_{i}\left(\mathbf{x}^{*}\right)=0,i=1,...,m&(2)\\\lambda_{i}\geq0,i=1,...,m&(3).\\g_{i}\left(\mathbf{x}^{*}\right)\leq0,i=1,...,m&(4)\\h_{j}\left(\mathbf{x}^{*}\right)=0,\text{j}=1,...,n&(5)\\\end{cases}\right.\right.
KKT条件⎩
⎨
⎧∇f(x∗)+∑i=1mλi∇gi(x∗)+∑j=1nηj∇hj(x∗)=0λigi(x∗)=0,i=1,...,mλi≥0,i=1,...,mgi(x∗)≤0,i=1,...,mhj(x∗)=0,j=1,...,n(1)(2)(3).(4)(5)
PS: (1)这里的LICQ条件要求{ ∇ g i ( x ∗ ) , ∇ h j ( x ∗ ) \nabla g_{i}\left(\mathbf{x}^{*}\right),\nabla h_{j}\left(\mathbf{x}^{*}\right) ∇gi(x∗),∇hj(x∗)}中的梯度向量线性无关,具体可参考最优化复习笔记以及B站视频:KKT为什么用不了了
对KKT条件进行简单分析:
- 式(1):是lagrangian函数对 x ⋆ \mathbf{x}^\star x⋆求导为0,即 x ⋆ \mathbf{x}^\star x⋆为驻点;
- 式(2):核心公式,眼么 λ = 0 \lambda=0 λ=0,要么 g ( x ⋆ ) = 0 g(\mathbf{x}^\star)=0 g(x⋆)=0(此处要求两者不能同时为0);
- 式(3):拉格朗日乘子必须为正;
- 式(4)(5):原问题约束。
总结一下,利用KKT条件进行求解时,可以采用如下思路:
(1)等式是用来求最优的
x
⋆
和
λ
\mathbf{x}^\star和\lambda
x⋆和λ;
(2)不等式是用来验证求得值是否符合约束条件,即是否在可行域中。
2.关于KKT条件的补充
2.1、关于 λ ≥ 0 \lambda \geq0 λ≥0
我们考虑只有一个不等式约束的优化问题:
min
f
(
x
)
s.t.
g
(
x
)
≤
0
\begin{array}{ll}\min&f(x)\\\text{s.t.}&g(x)\le0\end{array}
mins.t.f(x)g(x)≤0
下图画出的是
f
(
x
)
f(x)
f(x)的等值线,以及右下角的可行域,下面我们进行具体分析:
(1)
f
(
x
)
f(x)
f(x)函数值的下降方向为左上方:
根据梯度定义,梯度方向垂直于等值线,并指向函数值增长最快的方向。对于这块不太明白的可以参考这个帖子通俗理解方向导数、梯度。因此分别画出
f
(
x
)
f(x)
f(x)和
g
(
x
)
g(x)
g(x)的梯度,如下图所示:
- f ( x ) f(x) f(x)梯度方向是函数值增长的方向,因此指向右下方;负梯度方向是函数值下降的方向,指向左上方;
-
g
(
x
)
g(x)
g(x)函数值增长的方向就是左上方,因此梯度方向指向左上方。
因此在最优解 x ∗ x^* x∗处 f ( x ) f(x) f(x)和 g ( x ) g(x) g(x)的梯度共线且方向相反。可以表示为:
− ∇ f ( x ∗ ) = λ ∇ g ( x ∗ ) ⇒ ∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0 -\nabla f(x^{*})=\lambda\nabla g(x^{*})\quad\Rightarrow\quad\nabla f(x^{*})+\lambda\nabla g(x^{*})=0 −∇f(x∗)=λ∇g(x∗)⇒∇f(x∗)+λ∇g(x∗)=0
由此可知 λ \lambda λ必须取正值,即 λ ≥ 0 \lambda \geq0 λ≥0。
(2)假设
f
(
x
)
f(x)
f(x)函数值的下降方向为右下方:
此时
f
(
x
)
f(x)
f(x)梯度方向指向左上方,即与
g
(
x
)
g(x)
g(x)的梯度方向相同,因此,原问题的最小值点一定不在
g
(
x
)
=
0
g(x)=0
g(x)=0上,而肯定在可行域内部。
同理对于可行域的范围,如果
f
(
x
)
f(x)
f(x)函数值的下降方向为左上方,
g
(
x
)
≤
0
g(x) \leq0
g(x)≤0的范围也是在左上方,则最小值点也是可行域内部取到,这样对应的就是无约束问题。其他情况可以留给大家去讨论。这里就不再一一赘述了。
总结一下:
当在不等式约束边界取得最优值点时,有如下结论:
在最优解
x
∗
x^*
x∗处
f
(
x
)
f(x)
f(x)和
g
(
x
)
g(x)
g(x)的梯度共线且方向相反。
表示为:
∇
f
(
x
∗
)
+
λ
∇
g
(
x
∗
)
=
0
\quad\nabla f(x^{*})+\lambda\nabla g(x^{*})=0
∇f(x∗)+λ∇g(x∗)=0
因此
λ
\lambda
λ必须取正值,即
λ
≥
0
\lambda \geq0
λ≥0。
2.2、Min/Max与“≤0”和“≥0”的规定
这里主要参考了知乎上的一篇文章,个人觉得总结的非常好,大家有兴趣可以去看看KKT条件原来如此简单
(1)如果目标为最小化(Min)问题,那么不等式约束需要整理成“≤0”的形式;
(2)如果目标为最大化(Max)问题,那么不等式约束需要整理成“≥0”的形式;
这样做的好处是保证了在求无论是求最小化问题还是求最大化问题时,KKT条件都是遵循统一的公式,即三.1节的KKT条件的表达式。
总结
本文介绍了KKT条件的相关定义、适用范围以及补充探讨。算是为非线性最优化理论系列的学习先开一个头。后续可能会继续学习和总结相关的内容和知识点,一步一步翻越最优化的大山。奥利给!ヾ(◍°∇°◍)ノ゙