本人才疏学浅,竟被这个概念折磨了一年之久。研究生生涯,真的是太惭愧了。
本文对聚点的介绍侧重于理解。
1 聚点基本知识
1.1 聚点的定义
聚点,英文叫cluster point,或者limit point,是无穷数列 { x k } \{x^k\} {xk}的一个性质。注意,有限的数列是没有聚点的。
聚点的定义:
翻译一下就是,若c是数列A的一个cluster point,那么对于任意小的
δ
>
0
\delta>0
δ>0,
c
c
c的邻域
V
δ
(
c
)
V_\delta(c)
Vδ(c)(除了
c
c
c本身)中至少存在一个数列A集合中的点。
反过来说:所以如果x不是数列A的一个cluster point,那么一定存在一个足够小的 δ > 0 \delta>0 δ>0,x的邻域 V δ ( c ) V_\delta(c) Vδ(c)里不包含数列A集合中的点。
1.2 聚点的性质
1.3 聚点的重要定理
重要定理:任何有界的无限数列至少有一个聚点。
数列的有界指的是数列中元素的最大值最小值都是有界限的。
2 聚点常用在哪些地方
2.1 用在哪里
一个优化问题表现形式如下
min
x
f
(
x
)
s.t.
x
∈
Ω
(1)
\min_{x}~f(x) \text{ s.t. }x\in\Omega \quad\quad \text{(1)}
xmin f(x) s.t. x∈Ω(1)
其中
Ω
\Omega
Ω是自变量
x
x
x的可行域。优化问题经常没有显式解。
要解决这个优化问题,通常要设计一个算法,无论是梯度下降法还是什么方法,算法会经历好多步的迭代,每一步迭代产生的迭代点就是算法产生的数列的元素,记作 { x k } \{x^k\} {xk}。
我们如何判断我们设计的算法会收敛到我们想要的解呢。首先,我们想要什么解。当然是让(1)式的目标函数值
f
(
x
)
f(x)
f(x)最小的
x
x
x了。如果
Ω
\Omega
Ω是凸集合且
f
(
x
)
f(x)
f(x)是凸函数,那(1)问题就是凸优化问题了,任何(1)问题的局部最小点都是全局最小点。如果(1)不是凸优化问题,情况就复杂一点。通常,我们求(1)的一阶最优点就可以了。那,这个一阶最优点是个啥。先把(1)问题写成另外一种形式,
min
x
f
(
x
)
s.t.
g
(
x
)
≤
0
,
h
(
x
)
=
0
(2)
\min_{x}~f(x) \text{ s.t. } g(x)\le 0, h(x)=0 \quad\quad \text{(2)}
xmin f(x) s.t. g(x)≤0,h(x)=0(2)
这里为了简单,假设(1)问题只有1个不等式约束和1个等式约束。KKT条件是很常见的可以刻画一阶最优点的条件。
∇
f
(
x
)
+
λ
g
(
x
)
+
v
h
(
x
)
=
0
(3.1)
g
(
x
)
≤
0
(3.2)
h
(
x
)
=
0
(3.3)
λ
≥
0
(3.4)
λ
g
(
x
)
=
0
(3.5)
\nabla f(x)+\lambda g(x)+v h(x)=0 \text{ (3.1)} \\ g(x)\le0\quad\quad \quad \quad \quad \quad \quad \quad \text{ (3.2)}\\ h(x)=0 \quad \quad \quad \quad \quad \quad \quad \quad \text{ (3.3)}\\ \lambda\ge 0 \quad \quad \quad \quad \quad \quad \quad \quad \quad \text{ (3.4)}\\ \lambda g(x)=0\quad \quad \quad \quad \quad \quad \quad \text{ (3.5)}
∇f(x)+λg(x)+vh(x)=0 (3.1)g(x)≤0 (3.2)h(x)=0 (3.3)λ≥0 (3.4)λg(x)=0 (3.5)
其中(3.2)和(3.3)是原始可行性条件,
(
3.4
)
(3.4)
(3.4)是对偶可行性条件,(3.5)是互补松弛条件,(3.1)叫啥突然不是很确定,先叫它拉格朗日条件吧。
我们把原问题(2)满足(3)式的解x称作一阶最优点,或者一阶驻点。我们判断设计的算法有效性的一个重要标准是算法产生的序列 { x k } \{x^k\} {xk}能否收敛到原问题的一阶驻点。或者我们准确的说,若序列 { x k } \{x^k\} {xk}的每一个聚点都是原问题的一阶驻点,那么算法的收敛性就有保证了。
2.2 如何使用
介绍一类使用方式吧。
如果当前迭代点是
x
k
x^k
xk,得到下一个解
x
k
+
1
x^{k+1}
xk+1的过程我们称作是解子问题。比如梯度下降的更新方式是
x
k
+
1
=
x
k
−
α
k
∇
f
(
x
k
)
x^{k+1}=x^k-\alpha^k\nabla f(x^k)
xk+1=xk−αk∇f(xk),实际上相当于解了
min
x
f
(
x
k
)
+
∇
f
(
x
k
)
T
(
x
−
x
k
)
+
1
2
α
k
∥
x
−
x
k
∥
2
2
\min_x f(x^k)+\nabla f(x^k)^T(x-x^k)+\frac{1}{2\alpha^k}\|x-x^k\|_2^2
xminf(xk)+∇f(xk)T(x−xk)+2αk1∥x−xk∥22
这个子问题。
如果算法的更新方式不变,我们得到了 x k + 1 = x k x^{k+1}=x^{k} xk+1=xk,那么 x k + 2 , x k + 3 , … x^{k+2}, x^{k+3},\dots xk+2,xk+3,…都等于 x k x^k xk,迭代就固定不变了。之前我们列了原问题的KKT条件(3),每个子问题也是有KKT条件的。如果迭代点不变了,那么把子问题的KKT条件和原问题的KKT条件对比,如果发现 x k x^k xk是满足原问题的KKT条件的,那很圆满了,我们已经得到了原问题的一阶驻点 x k x^k xk了。
如果算法产生了无限的序列,但是没有那个 k k k是满足 x k + 1 = x k x^{k+1}=x^{k} xk+1=xk的呢。这个时候我们需要证明 { x k } \{x^k\} {xk}的每一个聚点都是原问题的一阶最优点了。
如果
x
∗
x^*
x∗是
{
x
k
}
\{x^k\}
{xk}的一个聚点,我们只需要证明在
x
∗
x^*
x∗处展开的子问题的下一个迭代点依然是
x
∗
x^*
x∗就行了,当然,前提是
x
∗
x^*
x∗在
x
∗
x^*
x∗处展开的子问题的可行域里,一般设计算法都能成立的。通常运用反证法,如果在
x
∗
x^*
x∗处展开的子问题的下一个迭代点不是是
x
∗
x^*
x∗,是
x
^
\hat{x}
x^。我们记
x
∗
x^*
x∗处展开的子问题目标函数为
p
(
x
;
x
∗
)
p(x;x^*)
p(x;x∗),那么一定有个足够小的
δ
\delta
δ满足
p
(
x
∗
;
x
∗
)
−
p
(
x
^
;
x
∗
)
>
δ
(4)
。
p(x^*;x^*)-p(\hat{x};x^*)>\delta \quad\text{(4)}。
p(x∗;x∗)−p(x^;x∗)>δ(4)。
当
k
k
k足够大时,一定会有
p
(
x
k
;
x
k
)
−
p
(
x
k
+
1
;
x
k
)
<
δ
4
(5)
p(x^k;x^k)-p(x^{k+1};x^k)<\frac{\delta}{4}\quad\text{(5)}
p(xk;xk)−p(xk+1;xk)<4δ(5)
我们要证的就是(5)式会出现矛盾。
当
k
k
k足够大,有
x
k
→
x
∗
x^k\rightarrow x^*
xk→x∗,这时会有
p
(
x
∗
;
x
k
)
−
p
(
x
k
+
1
;
x
k
)
<
δ
4
(6)
p
(
x
^
;
x
∗
)
−
p
(
x
^
;
x
k
)
<
δ
4
(7)
p(x^*;x^k)-p(x^{k+1};x^k)<\frac{\delta}{4}\quad\text{(6)}\\ p(\hat{x};x^*)-p(\hat{x};x^k)<\frac{\delta}{4}\quad\text{(7)}
p(x∗;xk)−p(xk+1;xk)<4δ(6)p(x^;x∗)−p(x^;xk)<4δ(7)
注意,(6)和(7)你要看具体情况分析得出来的,我不敢保证一定会成立。按
x
k
→
x
∗
x^k\rightarrow x^*
xk→x∗一般情况下都能成立的。
根据(4),(6),(7),宗旨就是凑(以下是其中一种凑法),我们会有
p
(
x
k
+
1
;
x
k
)
−
p
(
x
^
;
x
k
)
=
p
(
x
k
+
1
;
x
k
)
−
p
(
x
∗
;
x
k
)
+
p
(
x
∗
;
x
k
)
−
p
(
x
^
;
x
∗
)
+
p
(
x
^
;
x
∗
)
−
p
(
x
^
;
x
k
)
>
δ
4
+
δ
−
δ
4
=
δ
2
\begin{aligned} &p(x^{k+1};x^k)-p(\hat{x};x^k)\\ =&p(x^{k+1};x^k)-p(x^*;x^k)+p(x^*;x^k)-p(\hat{x};x^*)+p(\hat{x};x^*)-p(\hat{x};x^k)\\ \gt &\frac{\delta}{4}+\delta-\frac{\delta}{4}\\=&\frac{\delta}{2} \end{aligned}
=>=p(xk+1;xk)−p(x^;xk)p(xk+1;xk)−p(x∗;xk)+p(x∗;xk)−p(x^;x∗)+p(x^;x∗)−p(x^;xk)4δ+δ−4δ2δ
你发现,
x
k
+
1
x^{k+1}
xk+1按理说是第k个子问题的最优解,怎么反而
x
^
\hat{x}
x^在第k个子问题上的目标函数更低了呢,跟(5)妥妥的就矛盾了。
所以在 x ∗ x^* x∗处展开的子问题得到的解一定是 x ∗ x^* x∗,所以 { x ∗ } \{x^*\} {x∗}的每一个聚点都是原问题的一阶最优点。
以上为个人学习思考,如果错漏,轻喷。