Typora使用手册:
https://blog.csdn.net/wait_for_eva/article/details/84307306
https://www.cnblogs.com/RioTian/p/14111021.html
参考文献:
Dimitri P. Bertsekas. Convex Optimization Algorithms[M]. Massachusetts Institute of Technology.
前言
最近啃Dimitri的凸优化算法越来越艰难,啃到第四章发现不做一些笔记已经搞不定了,这些底层的东西让我掉了不少头发(bushi)。由于没有这领域的大神带路,感觉自己理解的可能也不够到位(英文文献真的是一千个读者一千个哈姆雷特),所以还是斗胆在博客挂一下自己的拙见,希望能遇到大神指点。由于书本内容还没有读完,所以这些笔记暂时不写总结部分。
多面体近似方法
在本章,我们将要讨论利用多面体近似的方法,极小化定义在闭凸集
X
X
X上的实值凸函数。我们通过求解以下近似问题:
x
k
+
1
∈
arg
min
x
∈
X
k
F
k
(
x
)
x_{k+1}\in \arg {\min}_{x\in X_k}F_k(x)
xk+1∈argminx∈XkFk(x)
来得到一个点列
{
x
k
}
\{{x_k}\}
{xk},此处
F
k
F_k
Fk是一个用于近似
f
f
f的多面体函数(什么是多面体函数?),
X
k
X_k
Xk是一个用于近似
X
X
X的多面体集合(在某些变量下,该近似方法得到的结果是唯一的)。鉴于上述集合与函数的多面体结构,它们的求解方法比过去非多面体结构的集合与函数要简单。通过上述方法,我们可以使得求解的结果越来越接近真实解,在极限意义下我们可以求得精确解。
4.1 外线性化——切平面方法
首先,我们先来看附录B的定理1.5.4:
定理 1
凸集 C C C的闭包是一个由一系列半空间相交形成的集合,这个集合包含 C C C。特别的,一个闭凸集是一个由一系列半空间相交所生成的集合。
切平面方法的核心思想基于上述定理:用支撑超平面的交集来表示凸集的凸包。
在本节中,我们讨论的问题是:极小化定义在闭凸集 X X X上的凸函数 f : R n ⟶ R f:R^n\longrightarrow R f:Rn⟶R。
首先,我们有关于目标函数
f
f
f的若干已知点
x
0
,
x
1
,
.
.
.
,
x
k
x_0,x_1,...,x_k
x0,x1,...,xk组成的点列
{
x
k
}
\{x_k\}
{xk},定义关于已知点的函数:
F
k
(
x
)
=
max
(
f
(
x
0
)
+
(
x
−
x
0
)
T
g
0
,
.
.
.
,
f
(
x
k
)
+
(
x
−
x
k
)
T
g
k
)
F_k(x)=\max(f(x_0)+(x-x_0)^Tg_0,...,f(x_k)+(x-x_k)^Tg_k)
Fk(x)=max(f(x0)+(x−x0)Tg0,...,f(xk)+(x−xk)Tgk)
易做出
F
k
(
x
)
F_k(x)
Fk(x)的大致图像(以三个点为例):
上图中,红线标出来的部分即为 F k ( x ) F_k(x) Fk(x)。
接下来,我们来计算:
x
k
+
1
∈
arg
x
∈
X
k
min
F
k
(
x
)
x_{k+1}\in\text{ arg } _{x\in{X_k}} \min F_k(x)
xk+1∈ arg x∈XkminFk(x)
由
F
k
(
x
)
F_k(x)
Fk(x)的图像易知,这样的
x
k
+
1
x_{k+1}
xk+1是存在的,此时我们得到新的点列
{
x
k
+
1
}
\{x_{k+1}\}
{xk+1},再重复上述步骤,理论上我们就能够得到最优解
x
∗
x^*
x∗。
上述的讨论是基于 F k ( x ) F_k(x) Fk(x)的最小值点存在的情况。但有些时候,如 X X X是无界集时,该条件就不能得到保证。故在实际应用中,往往会人为地给出 X X X的界,使得 X X X成为一个紧集(在欧式空间中就是有界闭集)。由 W e i r e s t r a s s Weirestrass Weirestrass的理论,定义在有界闭集上的函数必可取到最小值。
定理 2
任意由切平面方法生成的点列 { x k } \{x_k\} {xk}的极限点都是一个最优解 x ∗ x^* x∗。
证明:
设
g
j
g_j
gj是函数
f
f
f在
x
j
x_j
xj点的次梯度,由此我们有:
f
(
x
j
)
+
(
x
−
x
j
)
T
g
j
⩽
f
(
x
)
,
∀
x
∈
X
,
f(x_j)+(x-x_j)^Tg_j\leqslant f(x),\quad \forall x\in X,
f(xj)+(x−xj)Tgj⩽f(x),∀x∈X,
根据
F
k
(
x
)
F_k(x)
Fk(x)和
x
k
x_k
xk的定义,我们有:
f
(
x
j
)
+
(
x
k
−
x
j
)
T
g
j
⩽
F
k
−
1
(
x
k
)
⩽
F
k
−
1
(
x
)
⩽
f
(
x
)
,
∀
x
∈
X
,
j
<
k
.
f(x_j)+(x_k-x_j)^Tg_j\leqslant F_{k-1}(x_k)\leqslant F_{k-1}(x)\leqslant f(x),\quad \forall x\in X,j<k.
f(xj)+(xk−xj)Tgj⩽Fk−1(xk)⩽Fk−1(x)⩽f(x),∀x∈X,j<k.
由于
X
X
X有界,因此
{
x
k
}
\{x_k\}
{xk}也有界。由于有界数列必有收敛子列,不妨取
{
x
k
}
\{x_k\}
{xk}的一个子列为
{
x
k
}
K
\{x_k\}_{\Kappa}
{xk}K,它收敛到
x
‾
\overline{x}
x,由于
X
X
X是闭集,因此
x
‾
∈
X
\overline{x}\in X
x∈X,由不等式
(
5
)
(5)
(5),我们有:
f
(
x
j
)
+
(
x
k
−
x
j
)
T
g
j
⩽
F
k
−
1
(
x
k
)
⩽
F
k
−
1
(
x
‾
)
⩽
f
(
x
‾
)
,
∀
k
,
j
<
k
.
f(x_j)+(x_k-x_j)^Tg_j\leqslant F_{k-1}(x_k)\leqslant F_{k-1}(\overline{x})\leqslant f(\overline{x}),\quad \forall k,j<k.
f(xj)+(xk−xj)Tgj⩽Fk−1(xk)⩽Fk−1(x)⩽f(x),∀k,j<k.
由于对任何数列,上极限一定存在。对
(
6
)
(6)
(6)式,我们取上极限:
lim
j
→
∞
,
k
→
∞
,
j
<
k
,
j
∈
K
,
k
∈
K
sup
{
f
(
x
j
)
+
(
x
k
−
x
j
)
T
g
j
}
⩽
lim
k
→
∞
,
k
∈
K
sup
F
k
−
1
(
x
k
)
⩽
f
(
x
‾
)
\lim_{j\rightarrow \infin,k\rightarrow\infin,j<k,j\in \Kappa,k\in \Kappa} \sup\{f(x_j)+(x_k-x_j)^{T}g_j\}\leqslant\lim _{k\rightarrow\infin,k\in \Kappa}\sup F_{k-1}(x_k)\leqslant f(\overline{x})
j→∞,k→∞,j<k,j∈K,k∈Klimsup{f(xj)+(xk−xj)Tgj}⩽k→∞,k∈KlimsupFk−1(xk)⩽f(x)
又由于
{
x
k
}
K
\{x_k\}_{\Kappa}
{xk}K是有界的,由课本定理3.1.2,有界闭集上凸函数的次微分是有界的,因此
{
g
j
}
K
\{g_j\}_{\Kappa}
{gj}K是有界的。注意到,我们有:
lim
j
→
∞
,
k
→
∞
,
j
<
k
,
j
∈
K
,
k
∈
K
{
x
k
−
x
j
}
=
0
\lim_{j\rightarrow \infin,k\rightarrow\infin,j<k,j\in \Kappa,k\in \Kappa} \{x_k-x_j\}=0
j→∞,k→∞,j<k,j∈K,k∈Klim{xk−xj}=0
于是:
lim
j
→
∞
,
k
→
∞
,
j
<
k
,
j
∈
K
,
k
∈
K
{
x
k
−
x
j
}
T
g
j
=
0
\lim_{j\rightarrow \infin,k\rightarrow\infin,j<k,j\in \Kappa,k\in \Kappa} \{x_k-x_j\}^Tg_j=0
j→∞,k→∞,j<k,j∈K,k∈Klim{xk−xj}Tgj=0
另一方面,由于
x
j
x_j
xj收敛到
x
‾
\overline{x}
x,
f
f
f为定义在
X
X
X上的连续函数,故:
f
(
x
j
)
⟶
f
(
x
‾
)
,
(
x
j
→
x
‾
)
f(x_j)\longrightarrow f(\overline{x}),\quad (x_j\rightarrow \overline{x})
f(xj)⟶f(x),(xj→x)
综合
(
7
)
,
(
9
)
,
(
10
)
(7),(9),(10)
(7),(9),(10)式,由夹逼原理,我们有:
lim
k
→
∞
,
k
∈
K
sup
F
k
−
1
(
x
k
)
=
f
(
x
‾
)
.
\lim_{k\rightarrow\infin,k\in \Kappa}\sup F_{k-1}(x_k)=f(\overline{x}).
k→∞,k∈KlimsupFk−1(xk)=f(x).
由
(
5
)
(5)
(5)式最后一个不等号和
(
11
)
(11)
(11)式,我们有:
f
(
x
‾
)
⩽
f
(
x
)
,
∀
x
∈
X
,
f(\overline{x})\leqslant f(x),\quad \forall x\in X,
f(x)⩽f(x),∀x∈X,
(
12
)
(12)
(12)式说明了
x
‾
\overline{x}
x是一个最优解,由
x
‾
\overline{x}
x的任意性,定理得证。Q.E.D.
在实际应用中,由于迭代的次数可能为无穷多次,因此大多数情况下我们都会使用以下不等式来近似最优解
f
∗
f^*
f∗:
F
k
−
1
(
x
k
)
⩽
f
∗
⩽
min
j
⩽
k
f
(
x
j
)
,
k
=
0
,
1
,
2
,
.
.
.
F_{k-1}(x_k)\leqslant f^*\leqslant \min_{j\leqslant k} f(x_j),\quad k=0,1,2,...
Fk−1(xk)⩽f∗⩽j⩽kminf(xj),k=0,1,2,...
对于可接受的误差 ϵ \epsilon ϵ,当 ∣ F k − 1 ( x k ) − min j ⩽ k f ( x j ) ∣ < ϵ |F_{k-1}(x_k)-\min_{j\leqslant k} f(x_j)|<\epsilon ∣Fk−1(xk)−minj⩽kf(xj)∣<ϵ时,停止迭代。
另一种比较特殊的目标函数为:
f
(
x
)
=
max
i
∈
I
{
a
i
T
x
+
b
i
}
f(x)=\max_{i\in I}\{a_i^Tx+b_i\}
f(x)=i∈Imax{aiTx+bi}
其中,
I
I
I是有限的指标集,
a
i
a_i
ai为给定的指标,
b
i
b_i
bi为标量。
对于这种形式的函数,切平面方法的迭代次数是有限的(以下将证明这一点),因此该方法迭代停止的条件为 F k − 1 ( x k ) = f ( x k ) F_{k-1}(x_k)=f(x_k) Fk−1(xk)=f(xk)。
定理 3
上述多面体函数经过切平面方法迭代有限次后,必能达到最优解 x ∗ x^* x∗。
证明:
若数对
(
a
i
k
,
b
i
k
)
=
(
a
i
j
,
b
i
j
)
(a_{i_k},b_{i_k})=(a_{i_j},b_{i_j})
(aik,bik)=(aij,bij),其中
j
<
k
j<k
j<k,则有:
f
(
x
k
)
=
a
i
k
T
x
k
+
b
i
k
=
a
i
j
T
x
k
+
b
i
j
⩽
F
k
−
1
(
x
k
)
⩽
f
(
x
k
)
f(x_k)=a_{i_k}^Tx_k+b_{i_k}=a^{T}_{i_j}x_k+b_{i_j}\leqslant F_{k-1}(x_k)\leqslant f(x_k)
f(xk)=aikTxk+bik=aijTxk+bij⩽Fk−1(xk)⩽f(xk)
其中,第一个不等号是由于
a
i
j
T
x
k
+
b
i
j
a^{T}_{i_j}x_k+b_{i_j}
aijTxk+bij相当于定义函数
F
k
−
1
F_{k-1}
Fk−1的一个超平面(详见(2)式),第二个不等号是根据:
F
k
−
1
(
x
)
⩽
f
(
x
)
,
∀
x
∈
X
F_{k-1}(x)\leqslant f(x),\quad \forall x\in X\quad
Fk−1(x)⩽f(x),∀x∈X这一事实。此时我们得到了等式
F
k
−
1
(
x
k
)
=
f
(
x
k
)
F_{k-1}(x_k)=f(x_k)
Fk−1(xk)=f(xk),说明迭代已经终止。由于数对
(
a
i
,
b
i
)
,
i
∈
I
I
(a_i,b_i),\quad i\in I\quad I
(ai,bi),i∈II是有限集合,因此该迭代步骤必须是有限次的。Q.E.D.
注意到,切平面方法虽然简单,但是有以下缺点:
- 迭代数值不稳定。
- 需要时刻关注切平面的选取。
- 算法的收敛速度通常很慢。
4.2 部分切平面方法
考虑下面形式的函数:
f
(
x
)
+
c
(
x
)
f(x)+c(x)
f(x)+c(x)
其中,
f
(
x
)
f(x)
f(x)是定义在
R
R
R上的凸函数,
c
(
x
)
c(x)
c(x)是一个容易优化的函数(如二次函数)。和之前的讨论类似,我们考虑优化问题:
min
F
k
(
x
)
+
c
(
x
)
s
u
b
j
e
c
t
t
o
x
∈
X
\min\quad F_k(x)+c(x)\\subject \quad to\quad x\in X
minFk(x)+c(x)subjecttox∈X
迭代算法:
F
k
(
x
)
=
max
{
f
(
x
0
)
+
(
x
−
x
0
)
T
g
0
,
.
.
.
,
f
(
x
k
)
+
(
x
−
x
k
)
T
g
k
}
x
k
+
1
∈
arg
min
x
∈
X
{
F
k
(
x
)
+
c
(
x
)
}
F_k(x)=\max\{f(x_0)+(x-x_0)^Tg_0,...,f(x_k)+(x-x_k)^Tg_k\}\\x_{k+1}\in \arg\min_{x\in X}\{F_k(x)+c(x)\}
Fk(x)=max{f(x0)+(x−x0)Tg0,...,f(xk)+(x−xk)Tgk}xk+1∈argx∈Xmin{Fk(x)+c(x)}
该算法的收敛性质和之前的讨论完全类似,该算法可以推广到多个函数的情形。
4.3 线性约束的情况
考虑约束集是一个多面体:
X
=
{
x
∣
c
i
T
x
+
d
i
⩽
0
,
i
∈
I
}
X=\{x|c_i^Tx+d_i\leqslant 0,\quad i\in I\}
X={x∣ciTx+di⩽0,i∈I}
令:
p
(
x
)
=
max
i
∈
I
{
c
i
T
x
+
d
i
}
p(x)=\max_{i\in I}\{c_i^Tx+d_i\}
p(x)=i∈Imax{ciTx+di}
考虑优化问题:
max
f
(
x
)
s
u
b
j
e
c
t
t
o
p
(
x
)
⩽
0
\max f(x)\\subject\quad to \quad p(x)\leqslant0
maxf(x)subjecttop(x)⩽0
优化算法:
F
k
(
x
)
=
min
{
f
(
x
0
)
+
(
x
−
x
0
)
T
g
0
,
.
.
.
,
f
(
x
k
)
+
(
x
−
x
k
)
T
g
k
}
p
k
(
x
)
=
max
i
∈
I
k
{
c
i
T
x
+
d
i
}
x
k
+
1
∈
arg
max
p
k
(
x
)
⩽
0
F
k
(
x
)
F_k(x)=\min\{f(x_0)+(x-x_0)^Tg_0,...,f(x_k)+(x-x_k)^Tg_k\}\\p_k(x)=\max_{i\in I_k}\{c_i^Tx+d_i\}\\x_{k+1}\in \arg\max_{p_k(x)\leqslant 0} F_k(x)
Fk(x)=min{f(x0)+(x−x0)Tg0,...,f(xk)+(x−xk)Tgk}pk(x)=i∈Ikmax{ciTx+di}xk+1∈argpk(x)⩽0maxFk(x)
I
k
I_k
Ik的迭代过程如下:
选择 I I I的任意子集 I 0 I_0 I0作为迭代的初始集合
①:通过上述算法,得到点 x k x_k xk.
②:若 p ( x k ) ⩽ 0 p(x_k)\leqslant 0 p(xk)⩽0,即: max i ∈ I k − 1 { c i T x k + d i ⩽ 0 } \max_{i\in I_{k-1}}\{c_i^Tx_k+d_i \leqslant 0\} maxi∈Ik−1{ciTxk+di⩽0},则令 I k = I k − 1 I_k=I_{k-1} Ik=Ik−1.
③:向 I k I_k Ik中加入一个或多个指标 i i i,其中 i i i不属于 I k − 1 I_{k-1} Ik−1,并且保证 i i i满足: c i T x k + d i ⩽ 0 c_i^Tx_k+d_i \leqslant 0 ciTxk+di⩽0.
②:若 p ( x k ) ⩽ 0 p(x_k)\leqslant 0 p(xk)⩽0,即: max i ∈ I k − 1 { c i T x k + d i ⩽ 0 } \max_{i\in I_{k-1}}\{c_i^Tx_k+d_i \leqslant 0\} maxi∈Ik−1{ciTxk+di⩽0},则令 I k = I k − 1 I_k=I_{k-1} Ik=Ik−1.
③:向 I k I_k Ik中加入一个或多个指标 i i i,其中 i i i不属于 I k − 1 I_{k-1} Ik−1,并且保证 i i i满足: c i T x k + d i ⩽ 0 c_i^Tx_k+d_i \leqslant 0 ciTxk+di⩽0.
④:重复上述步骤。