内容主要来源于 大数据文摘
#1 高数教材中拉格朗日乘子法的泛化
##1.1 高数教材中的拉格朗日乘子法
我们大学时讲了这个计算条件极值的方法,运用拉格朗日乘数法(乘子法)
{
min
f
(
x
)
s
.
t
.
h
i
(
x
)
=
0
i
=
1
,
2...
,
n
\left\{ \begin{matrix}\min\;f(x) \\ s.t.\;h_{i}(x)=0\;\;\;\;i=1,2...,n\end{matrix}\right.
{minf(x)s.t.hi(x)=0i=1,2...,n
第一行就是目标函数,第二行是约束函数。我们就是想在h(x)=0一系列函数的约束下,求f(x)的最小值。我们可以用(1)式中的方法求解
m
i
n
[
f
(
x
)
+
∑
i
=
1
n
λ
i
h
i
(
x
)
]
(1)
min\;[f(x)+\sum_{i=1}^{n}\lambda_{i}h_{i}(x)]\tag1
min[f(x)+i=1∑nλihi(x)](1)
这当然是个很简单的事件了。但是这是绝对是个特例。你看啊,上面的约束条件都是等式,但事实上很多情况都是不等式。这就是我们的拉格朗日乘数法(乘子法)的扩展KKT问题。
##1.2 KKT(Karush–Kuhn–Tucker conditions)问题
在1.1中,约束机制的泛化了的就是KKT。KKT的名字让人的意思不明所以,其实就是一般约束优化问题极值点一阶必要条件:
如果
x
∗
x^*
x∗是约束条件的局部最小,那么有如下条件
{
s
.
t
.
g
i
(
x
)
=
0
i
=
1
,
2...
,
p
s
.
t
.
h
j
(
x
)
⩽
0
j
=
1
,
2...
,
q
∇
f
(
x
∗
)
=
∑
i
=
1
p
μ
i
∇
g
i
(
x
∗
)
+
∑
j
=
1
q
λ
j
∇
h
j
(
x
∗
)
λ
j
∗
⩾
0
j
=
1
,
2...
,
q
λ
j
∗
h
j
(
x
∗
)
=
0
j
=
1
,
2...
,
q
\left\{ \begin{matrix} s.t.\;g_{i}(x)=0\;\;\;\;i=1,2...,p\\ s.t.\;h_{j}(x) \leqslant 0\;\;\;\;j=1,2...,q\\ \nabla f(x^{*})=\sum _{i=1}^{p}\mu _{i}\nabla g_{i}(x^{*})+\sum _{j=1}^{q}\lambda _{j}\nabla h_{j}(x^{*})\\ \lambda_{j}^*\geqslant 0\;\;\;\;j=1,2...,q\\ \lambda_{j}^*h_j(x^*)= 0\;\;\;\;j=1,2...,q\\ \end{matrix}\right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧s.t.gi(x)=0i=1,2...,ps.t.hj(x)⩽0j=1,2...,q∇f(x∗)=∑i=1pμi∇gi(x∗)+∑j=1qλj∇hj(x∗)λj∗⩾0j=1,2...,qλj∗hj(x∗)=0j=1,2...,q
因为可以利用正负号更改最大最小,大于等于号,所以上式基本可以表达所有情况。
但一定要注意大于号的方向。
那么这就是变成解
x
∗
x^*
x∗的行为。(同时也要注意,上式仅仅是必要条件。)
为什么"极值点’一阶’必要条件"?在第三个式子解出的
x
∗
x^*
x∗是驻点,我们同时需要判断二阶Hassion矩阵。这个式子是怎么来?还得从凸函数好好说起。
#2 凸函数
我按照点集的观点重新审视下点线面。初中时,遇到一种四边形的说法“凸四边形”,“凹四边形”。老师讲凸四边形就是“四个角都凸出来的,如平行四边形梯形等;凹四边形就是有角凹进去了的四边形,如下图”。
这么说的确很容易理解,但不是数学语言。详细描述这个问题很复杂,可以先从点集入手。
##2.1 仿射,凸集
基础:过两点 x 1 , x 2 x_1,x_2 x1,x2的直线表示为 x = θ x 1 + ( 1 + θ ) x 2 , θ ∈ R x = \theta x_1+(1+\theta)x_2,\theta \in R x=θx1+(1+θ)x2,θ∈R,即 A x = b Ax=b Ax=b的解。我们借助直线定义仿射。
如果一个集合 C ∈ R n C\in R^n C∈Rn是仿射的,则过C中两点间的直线(注意不是线段)也在C中,例如上面的 x = θ x 1 + ( 1 + θ ) x 2 , θ ∈ R x = \theta x_1+(1+\theta)x_2,\theta \in R x=θx1+(1+θ)x2,θ∈R 注意 C ∈ R C\in R C∈R
如果一个集合
C
∈
R
n
C\in R^n
C∈Rn是凸的,则过C中两点间的线段(注意不是直线段)也在C中。即对于任意
x
1
,
x
2
∈
C
x_1,x_2 \in C
x1,x2∈C,有
x
=
θ
x
1
+
(
1
+
θ
)
x
2
,
1
⩾
θ
⩾
0
x = \theta x_1+(1+\theta)x_2,1 \geqslant \theta \geqslant 0
x=θx1+(1+θ)x2,1⩾θ⩾0 注意
C
∈
R
C\in R
C∈R
下图中左边是凸的,右边不是凸的
2.2 凸函数
- 凸集合交集是凸集
- 凸函数的定义是根据凸集来的:
f(x)是凸函数,则有
f ( λ x 1 + ( 1 − λ ) x 2 ) ⩽ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1+(1-\lambda)x_2)\leqslant \lambda f(x_1)+(1-\lambda)f(x_2) f(λx1+(1−λ)x2)⩽λf(x1)+(1−λ)f(x2)
f称为I上的凸函数,当且仅当其上境图(在函数图像上方的点集)为一个凸集 - 凸函数与我们以前接触的函数不一样。因为是翻译问题,数学上的因为形状凹下去,所以将Convex翻译为凹函数,但Convex Set又叫凸集合来定义的。这里有必要把老版本翻译的凹函数凸过来。
2.3凸函数的性质
- 一元二阶可微的函数在区间上是凸的,当且仅当它的二阶导数是非负的;这可以用来判断某个函数是不是凸函数。如果它的二阶导数是正数,那么函数就是严格凸的,但反过来不成立。根据上节课的经验,当一元变为多元时,可以判断Hassion矩阵是否正定。
- 保凸运算(这个很重要)
- f是凸函数,自变量的线性组合,f(Ax+b)也是凸函数
- f 1 , ⋯ , f m f_1,\cdots,f_m f1,⋯,fm为凸函数, w 1 , ⋯ , w m ⩾ 0 w_1,\cdots,w_m \geqslant 0 w1,⋯,wm⩾0,则 ∑ i = 1 m w i f i \sum_{i=1}^{m} w_if_i ∑i=1mwifi也是凸函数
- f 1 , ⋯ , f m f_1,\cdots,f_m f1,⋯,fm为凸函数,逐点最大 f ( x ) = s u p { f 1 ( x ) , ⋯ , f m ( x ) } f(x)=sup\{f_1(x),\cdots,f_m(x)\} f(x)=sup{f1(x),⋯,fm(x)}也是凸函数。这条性质跟实际应用时可以给正则化一个解释。加了正这则化的凸函数也是凸函数,所以正则化对原函数的解题方法无影响。
- g,h为凸函数,扩展的h非递减(这条性质很重要)。则f(x)=h(g(x))也是凸函数。
- 对于凸函数f的
α
\alpha
α水平子集
S
α
=
{
x
∣
f
(
x
)
≤
a
}
S_\alpha = \{x | f(x) \le a\}
Sα={x∣f(x)≤a}是凸集。水平子集是凸集的函数不一定是凸函数。这样的函数称为拟凸函数。
##2.2 凸优化问题
还是回到上面我们的条件极值问题,我们这里加上几个条件,让它变成的功能强大的函数:
m i n i m i z e f ( x ) { s . t . g i ( x ) = 0 i = 1 , 2... , p s . t . h j ( x ) ⩾ 0 j = 1 , 2... , q minimize \;\;\;\;\; f(x)\\ \left\{ \begin{matrix} s.t.\;g_{i}(x)=0\;\;\;\;i=1,2...,p\\ s.t.\;h_{j}(x) \geqslant 0\;\;\;\;j=1,2...,q \end{matrix}\right. minimizef(x){s.t.gi(x)=0i=1,2...,ps.t.hj(x)⩾0j=1,2...,q
但我们做了额外要求:
- 目标函数是凸函数我们的目标函数f(x)是凸函数
- 不等式约束函数也是凸函数,这里要注意不等号的方向。有些数不等号方向不同,这里一定要注意。这条要求的实质条件是围成的可行域交集是个凸集。由于具有不同的形式,在后面推导KKT的过程会有不同。
- 等式约束(这里的
g
j
(
x
)
g_j(x)
gj(x))必须是仿射的。
这就是在一个凸集上极小化一个凸的目标函数问题。
凸优化问题的局部最优等于全局最优
我们费尽心思搞的凸优化形式,目的就是就求目标函数在可行域上的的极值。这里是可行域,因为还会有正无穷或负无穷(但我们视为可行域是空的,如求y=x的极值)。
凸优化里面,KKT不仅仅是必要条件,而是充分必要条件
具体原因还得详细解释下KKT的由来。
#3 KKT(Karush–Kuhn–Tucker conditions)问题的解释——对偶问题
##3.1 普通的条件极值问题
首先我们不管什么凸函数不凸函数。还是熟悉的条件极值问题。
注意:目标函数*“最小化问题”*与h函数的*“不等号方向”*是配对的;
上面的同样的式子为了普遍性,故意不转化成这种情况。
m
i
n
i
m
i
z
e
f
(
x
)
{
s
.
t
.
g
i
(
x
)
=
0
i
=
1
,
2...
,
p
s
.
t
.
h
j
(
x
)
⩽
0
j
=
1
,
2...
,
q
minimize \;\;\;\;\; f(x)\\ \left\{ \begin{matrix} s.t.\;g_{i}(x)=0\;\;\;\;i=1,2...,p\\ s.t.\;h_{j}(x) \leqslant 0\;\;\;\;j=1,2...,q\\ \end{matrix}\right.
minimizef(x){s.t.gi(x)=0i=1,2...,ps.t.hj(x)⩽0j=1,2...,q
然后我们用拉格朗日法合并目标函数与约束:
L
(
x
,
μ
,
λ
)
=
f
(
x
)
+
∑
i
=
1
p
μ
i
g
i
(
x
)
+
∑
j
=
1
q
λ
j
h
j
(
x
)
L(x,\mu,\lambda)= f(x)+\sum _{i=1}^{p}\mu _{i}g_{i}(x)+\sum _{j=1}^{q}\lambda _{j}h_{j}(x)
L(x,μ,λ)=f(x)+∑i=1pμigi(x)+∑j=1qλjhj(x)
这下我们知道
L
(
x
,
μ
,
λ
)
L(x,\mu,\lambda)
L(x,μ,λ)是关于
μ
,
λ
\mu,\lambda
μ,λ的仿射函数。
当
λ
⩾
0
,
x
0
\lambda \geqslant 0 , x_0
λ⩾0,x0为一个区域内符合条件的点时,我们取区间D内x的逐点最小值,就是下确界inf,有:
g
(
μ
,
λ
)
=
inf
x
∈
D
L
(
x
0
,
μ
,
λ
)
=
f
(
x
0
)
+
∑
i
=
1
p
μ
i
g
i
(
x
0
)
+
∑
j
=
1
q
λ
j
h
j
(
x
0
)
g(\mu,\lambda)=\inf_{x\in D} L(x_0,\mu,\lambda)= f(x_0)+\sum _{i=1}^{p}\mu _{i}g_{i}(x_0)+\sum _{j=1}^{q}\lambda _{j}h_{j}(x_0)
g(μ,λ)=x∈DinfL(x0,μ,λ)=f(x0)+i=1∑pμigi(x0)+j=1∑qλjhj(x0)
L
(
x
,
μ
,
λ
)
L(x,\mu,\lambda)
L(x,μ,λ)是关于
μ
,
λ
\mu,\lambda
μ,λ的仿射函数(我们暂定算凹的),那么
g
(
μ
,
λ
)
g(\mu,\lambda)
g(μ,λ)应该算凹(或者仿射)吧,但肯定是非凸的。
我们还知道了
f
(
x
0
)
f(x_0)
f(x0)后面的项一个负数,一个零。肯定有
g
(
μ
,
λ
)
⩽
f
(
x
0
)
+
∑
i
=
1
p
μ
i
g
i
(
x
0
)
+
∑
j
=
1
q
λ
j
h
j
(
x
0
)
,
↓
g
(
μ
,
λ
)
⩽
f
(
x
0
)
g(\mu,\lambda) \leqslant f(x_0)+\sum _{i=1}^{p}\mu _{i}g_{i}(x_0)+\sum _{j=1}^{q}\lambda _{j}h_{j}(x_0),\\ \downarrow \\ g(\mu,\lambda) \leqslant f(x_0)
g(μ,λ)⩽f(x0)+i=1∑pμigi(x0)+j=1∑qλjhj(x0),↓g(μ,λ)⩽f(x0)
这样区间内x的最优解
x
∗
x^*
x∗肯定有
g
(
μ
,
λ
)
⩽
f
(
x
∗
)
=
p
∗
g(\mu,\lambda) \leqslant f(x^*) = p^*
g(μ,λ)⩽f(x∗)=p∗
##3.2 对偶问题
那么任意一个相似条件极值(我没说凹凸性)都可以求它的对偶问题,且这个对偶问题是个凸优化问题:
m
a
x
i
m
i
z
e
g
(
μ
,
λ
)
s
.
t
.
λ
⩾
0
maximize \;\;\;\; g(\mu,\lambda)\\ s.t.\;\lambda \geqslant 0
maximizeg(μ,λ)s.t.λ⩾0
设整理这里最优值为
d
∗
d^*
d∗,那么
d
∗
⩽
p
∗
d^*\leqslant p^*
d∗⩽p∗
但是当“强对偶”现象情况发生时,等号成立。
什么时候“强对偶”现象发生?
答:原问题是个凸优化问题。。。
在经过一些不重要的证明(我懒不想写)我们得到凸优化求全局极值的充分必要条件就是KKT。。。。