cluser point 聚点 介绍及使用经验


本人才疏学浅,竟被这个概念折磨了一年之久。研究生生涯,真的是太惭愧了。

本文对聚点的介绍侧重于理解。

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αkf(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(xxk)+2αk1xxk22
这个子问题。

如果算法的更新方式不变,我们得到了 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^* xkx,这时会有 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^* xkx一般情况下都能成立的。

根据(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}的每一个聚点都是原问题的一阶最优点。

以上为个人学习思考,如果错漏,轻喷。

参考文献

Properties of Cluster Points
Weierstrass Bolzano Theorem

猜你喜欢

转载自blog.csdn.net/nanfeizhenkuangou/article/details/115269331