前言
这两天读了一篇题目为“Fast and Globally Convergence Pose Estimation from Video Images”的文章,这篇文章提出了一个算法,用来计算图片中的坐标系与相机坐标系之间的齐次变换矩阵
T
T
T,
T
=
[
R
t
0
1
]
T= \left[ \begin{array}{cc} R & t\\ 0 & 1 \end{array} \right]
T=[R0t1]
Fig. 1 手眼标定与小孔成像模型
如Fig. 1所示,在手眼标定中,我们使用棋盘格和相机,棋盘格上是有一个默认的坐标系{Chessboard},相机也有自己的一个坐标系(我们把它的原点固定在小孔成像的小孔上, z z z轴定义为小孔的光轴, x x x和 y y y轴与 z z z轴正交),但是{Chessboard}与{Camera}之间的齐次变换矩阵 T T T不知道,我们可以通过小孔成像原理,将棋盘格上的 P P P点投影到相机中的成像面上的 P ′ P^{'} P′点(可以等同于投影到相机的胶片上的 P ′ P^{'} P′点)。我们已经知道 P P P点在棋盘格中的坐标表达(将P选为棋盘格角点,棋盘格的每个格子的长宽都是已知的), P P P点在成像面上的成像点 P ′ P^{'} P′( P ′ P^{'} P′点在{Camera}坐标系中的坐标已知),所以我们可以根据 P ′ = T P P^{'} = TP P′=TP来计算出来齐次变换矩阵 T T T(当然我们需要代入多个 P P P点进去计算,因为 T T T里面的待定参数不止一个)。
大家如果对图片的姿态估计问题或者手眼标定问题感兴趣,可以阅读“Fast and Globally Convergence Pose Estimation from Video Images”这篇文章,当然这篇文章提出的算法并不像Lenz-Tsai算法(该算法广泛应用于机器人的手眼标定)这样的通用。
有点跑偏了,回归正题。在阅读这篇文章的算法证明部分,作者使用了“全局收敛定理”(Global Convergence Theorem)来证明他提出的算法的全局收敛性,即无论初始点在哪里,算法总能收敛到不动点(当然这和收敛到最优点不一样,因为可能有多个不动点,具体收敛到哪一个不知道,“全局收敛原理”强调的是算法始终能收敛,不依赖于迭代初值的选取)。
然后我的第一感觉就是,这个“全局收敛原理”和我学习过的泛函分析中的“不动点定理”,和我的老本行自动控制的根基“李亚普洛夫定理”的有点关系,所以这里我就直接把这三个拿出来一起讨论,写一篇博客记录一下。事物之间总是联系的,从联系的观点看待事物,可能有时候可以看的更加深刻。好,正片开始(这篇博客会涉及到一些数学分析的基本证明,可能对于没有数学分析基础的同学会不太友好,但是我会尽量的写的清楚易懂一些,每一个证明的背后依据的原理,以及参考书籍我都会列出)。
好了,正片开始。
一、不动点定理
我查了一下,不止一个以“数学家名字”+“不动点定理”冠名的定理,我们这里说的不动点定理是泛函分析中的“Banach不动点定理”。
【定义:不动点(fixed point)】 设 X X X为非空集合,映射 T : X → X T:X \rightarrow X T:X→X, x 0 ∈ X x_{0} \in X x0∈X, 如果 T x 0 = x 0 Tx_{0}=x_{0} Tx0=x0,那么称 x 0 x_{0} x0为 T T T的不动点。
【定义:距离(distance)】 设 X X X为非空集合,定义度量函数 d : X × X → R d: X \times X \rightarrow\mathbb{R} d:X×X→R,如果度量函数 d ( x , y ) d(x,y) d(x,y)满足下列三个性质,其中 x , y ∈ X x,y \in X x,y∈X,则称 d ( x , y ) d(x,y) d(x,y)是 X X X上的距离函数。
- 非负性(non-negativity): 对于 ∀ x , y ∈ X \forall x,y \in X ∀x,y∈X,有 d ( x , y ) ≥ 0 d(x,y) \geq 0 d(x,y)≥0。 d ( x , y ) = 0 d(x,y)=0 d(x,y)=0当且仅当 x = y x=y x=y。
- 对称性 (symmetry): 对于 ∀ x , y ∈ X \forall x,y \in X ∀x,y∈X,有 d ( x , y ) = d ( y , x ) d(x,y) = d(y,x) d(x,y)=d(y,x)。
- 三角不等式 (Triangle inequality): 对于
∀
x
,
y
,
z
∈
X
\forall x,y,z \in X
∀x,y,z∈X,有
d
(
x
,
z
)
≤
d
(
x
,
y
)
+
d
(
y
,
z
)
d(x,z) \leq d(x,y) + d(y,z)
d(x,z)≤d(x,y)+d(y,z)。
特别地,称 ( X , d ) (X,d) (X,d)是一个度量空间。
【定义:压缩映射(contraction mapping)】 设 ( X , d ) (X, d) (X,d)为度量空间,映射 T : X → X T:X \rightarrow X T:X→X,若存在常数 k ∈ R k\in\mathbb{R} k∈R, 0 ≤ k < 1 0 \leq k < 1 0≤k<1,使得 d ( T x , T y ) ≤ k d ( x , y ) d(Tx, Ty) \leq kd(x,y) d(Tx,Ty)≤kd(x,y), ∀ x , y ∈ X \forall x,y \in X ∀x,y∈X,则称 T T T为压缩映射。
【Banach不动点定理】 设
(
X
,
d
)
(X,d)
(X,d)是一个完备的度量空间,
T
:
X
→
X
T: X\rightarrow X
T:X→X是压缩映射,即存在常数
k
∈
R
k\in\mathbb{R}
k∈R,
0
≤
k
<
1
0 \leq k < 1
0≤k<1,使得
d
(
T
x
,
T
y
)
≤
k
d
(
x
,
y
)
d(Tx, Ty) \leq kd(x,y)
d(Tx,Ty)≤kd(x,y),
∀
x
,
y
∈
X
\forall x,y \in X
∀x,y∈X,则
T
T
T在
X
X
X中存在唯一的不动点
x
∗
x^{*}
x∗,即
T
(
x
∗
)
=
x
∗
T(x^{\ast})=x^{\ast}
T(x∗)=x∗。【注:如果在度量空间
(
X
,
d
)
(X,d)
(X,d)中,任何一个柯西序列(Cauchy sequence)都收敛到
X
X
X中的一个元素,那么这个度量空间就是完备的。】
证明:
[步骤 1:构造序列]
任取
x
0
∈
X
x_{0} \in X
x0∈X,定义序列
{
x
n
}
\{x_{n}\}
{xn} 如下:
x
n
+
1
=
T
(
x
n
)
,
n
=
0
,
1
,
2
,
…
x_{n+1} = T(x_n), \quad n = 0, 1, 2, \dots
xn+1=T(xn),n=0,1,2,…
即序列的每一项都是前一项在映射
T
T
T下的像。
[步骤 2:证明序列是 Cauchy 列]
我们需要证明
{
x
n
}
\{x_{n}\}
{xn}是 Cauchy 列。对于
∀
m
>
n
\forall m > n
∀m>n,考虑
d
(
x
n
,
x
m
)
d(x_{n}, x_{m})
d(xn,xm):
d
(
x
n
,
x
m
)
≤
d
(
x
n
,
x
n
+
1
)
+
d
(
x
n
+
1
,
x
n
+
2
)
+
⋯
+
d
(
x
m
−
1
,
x
m
)
d(x_n, x_m) \leq d(x_n, x_{n+1}) + d(x_{n+1}, x_{n+2}) + \dots + d(x_{m-1}, x_m)
d(xn,xm)≤d(xn,xn+1)+d(xn+1,xn+2)+⋯+d(xm−1,xm)
由于
T
T
T是压缩映射,有
d
(
x
i
,
x
i
+
1
)
=
d
(
T
(
x
i
−
1
)
,
T
(
x
i
)
)
≤
k
⋅
d
(
x
i
−
1
,
x
i
)
d(x_i, x_{i+1}) = d(T(x_{i-1}), T(x_i)) \leq k \cdot d(x_{i-1}, x_i)
d(xi,xi+1)=d(T(xi−1),T(xi))≤k⋅d(xi−1,xi)
递推可得
d
(
x
n
,
x
n
+
1
)
≤
k
n
⋅
d
(
x
0
,
x
1
)
d(x_n, x_{n+1}) \leq k^n \cdot d(x_0, x_1)
d(xn,xn+1)≤kn⋅d(x0,x1)
因此,
d
(
x
n
,
x
m
)
≤
∑
i
=
n
m
−
1
d
(
x
i
,
x
i
+
1
)
≤
∑
i
=
n
m
−
1
k
i
⋅
d
(
x
0
,
x
1
)
d(x_n, x_m) \leq \sum_{i=n}^{m-1} d(x_i, x_{i+1}) \leq \sum_{i=n}^{m-1} k^i \cdot d(x_0, x_1)
d(xn,xm)≤i=n∑m−1d(xi,xi+1)≤i=n∑m−1ki⋅d(x0,x1)
由于
0
≤
k
<
1
0 \leq k < 1
0≤k<1,几何级数收敛,故
d
(
x
n
,
x
m
)
≤
k
n
1
−
k
⋅
d
(
x
0
,
x
1
)
d(x_n, x_m) \leq \frac{k^n}{1 - k} \cdot d(x_0, x_1)
d(xn,xm)≤1−kkn⋅d(x0,x1)
当
n
→
∞
n \to \infty
n→∞时,
d
(
x
n
,
x
m
)
→
0
d(x_n, x_m) \to 0
d(xn,xm)→0,因此
{
x
n
}
\{x_n\}
{xn} 是 Cauchy 列。
[步骤 3:证明序列收敛]
由于
(
X
,
d
)
(X, d)
(X,d)是完备的,Cauchy列
{
x
n
}
\{x_n\}
{xn}收敛到某个
x
∗
∈
X
x^{\ast} \in X
x∗∈X,即
lim
n
→
∞
x
n
=
x
∗
\lim_{n \to \infty} x_n = x^*
n→∞limxn=x∗
[步骤 4:证明
x
∗
x^{\ast}
x∗是不动点]
由于
T
T
T是连续的(压缩映射必连续,可由压缩映射的定义证得),有
T
(
x
∗
)
=
T
(
lim
n
→
∞
x
n
)
=
lim
n
→
∞
T
(
x
n
)
=
lim
n
→
∞
x
n
+
1
=
x
∗
T(x^*) = T\left(\lim_{n \to \infty} x_n\right) = \lim_{n \to \infty} T(x_n) = \lim_{n \to \infty} x_{n+1} = x^*
T(x∗)=T(n→∞limxn)=n→∞limT(xn)=n→∞limxn+1=x∗
因此,
x
∗
x^*
x∗ 是
T
T
T的不动点。
[步骤 5:证明不动点唯一]
假设存在另一个不动点
y
∗
∈
X
y^* \in X
y∗∈X,即
T
(
y
∗
)
=
y
∗
T(y^*) = y^*
T(y∗)=y∗。则
d
(
x
∗
,
y
∗
)
=
d
(
T
(
x
∗
)
,
T
(
y
∗
)
)
≤
k
⋅
d
(
x
∗
,
y
∗
)
d(x^*, y^*) = d(T(x^*), T(y^*)) \leq k \cdot d(x^*, y^*)
d(x∗,y∗)=d(T(x∗),T(y∗))≤k⋅d(x∗,y∗)
由于
0
≤
k
<
1
0 \leq k < 1
0≤k<1,只有当
d
(
x
∗
,
y
∗
)
=
0
d(x^*, y^*) = 0
d(x∗,y∗)=0时成立,即
x
∗
=
y
∗
x^* = y^*
x∗=y∗。因此,不动点唯一。
【注:上述的定义和Banach不动点原理可以从“泛函分析”相关的教材中找到】
二、李亚普诺夫定理
【命题】 设
X
X
X是
R
N
\mathbb{R}^{N}
RN中的一个紧集,
f
:
X
→
X
f:X\rightarrow X
f:X→X是连续映射,
V
:
X
→
R
V:X\rightarrow \mathbb{R}
V:X→R是连续映射。从
X
X
X中取定初值
x
0
x_{0}
x0,有
x
k
+
1
=
f
(
x
k
)
(1)
x_{k+1}=f(x_{k}) \tag{1}
xk+1=f(xk)(1)
V
(
x
k
+
1
)
<
V
(
x
k
)
(2)
V(x_{k+1})<V(x_{k}) \tag{2}
V(xk+1)<V(xk)(2)
那么序列
{
x
k
}
\{x_{k}\}
{xk}收敛,记
lim
k
→
∞
x
k
=
x
∗
\lim_{k \to \infty}x_{k} = x^{\ast}
limk→∞xk=x∗,且有
f
(
x
∗
)
=
x
∗
f(x^{\ast})=x^{\ast}
f(x∗)=x∗,即
x
∗
x^{\ast}
x∗为
f
f
f的不动点。【注:我们这里讨论的
X
X
X如果是
N
N
N维欧氏空间,则这里的紧集可以等价为有界闭集,有界闭集可以简单的看作数轴上的左闭右闭的区间。简而言之,紧集或者闭集就是为了保证
X
X
X中的序列收敛到的极限点也在这个集合
X
X
X里面。】
证明:
[步骤 1:构造序列
{
x
k
}
\{x_{k}\}
{xk}]
任取
x
0
∈
X
x_{0}\in X
x0∈X,代入定理中的(1)式,可以得到序列
{
x
k
}
\{x_{k}\}
{xk}。由于
X
X
X是紧集,由Bolzano–Weierstrass定理知,
X
X
X中的序列
{
x
k
}
\{x_{k}\}
{xk}中必有收敛子序列
{
x
k
j
}
\{x_{k_{j}}\}
{xkj}。设
lim
j
→
∞
x
k
j
=
x
∗
\lim_{j \to \infty}x_{k_{j}} = x^{\ast}
limj→∞xkj=x∗。
[步骤 2:序列
V
(
x
k
)
V(x_{k})
V(xk)的收敛性]
因为映射
V
V
V定义在紧集
X
X
X上,所以
V
(
x
)
V(x)
V(x)有界,则
V
(
x
k
)
V(x_{k})
V(xk)有界。又因为序列
V
(
x
k
)
V(x_{k})
V(xk)单调,所以序列
V
(
x
k
)
V(x_{k})
V(xk)收敛(因为
R
\mathbb{R}
R上的单调有界序列必收敛)。记
lim
k
→
∞
V
(
x
k
)
=
C
\lim_{k \to \infty}V(x_{k}) = C
limk→∞V(xk)=C。
[步骤 3:
f
(
x
∗
)
f(x^{\ast})
f(x∗)与
x
∗
x^{\ast}
x∗的关系]
Fig. 2 迭代序列
如Fig. 2所示, { x k } \{x_{k}\} {xk}的子序列 { x k j } \{x_{k_{j}}\} {xkj}收敛到 x ∗ x^{\ast} x∗,由定理中的(1)式知, x k j + 1 = f ( x k j ) x_{k_{j}+1} = f(x_{k_{j}}) xkj+1=f(xkj)。因为 f f f是连续映射,所以序列 { x k j + 1 } \{x_{k_{j}+1}\} {xkj+1}收敛到 f ( x ∗ ) f(x^{\ast}) f(x∗)。即序列 { x k } \{x_{k}\} {xk}有两个收敛子序列,分别收敛到 x ∗ x^{\ast} x∗和 f ( x ∗ ) f(x^{\ast}) f(x∗)。
证明到这里戛然而止,因为我没法证明出来
x
∗
=
f
(
x
∗
)
x^{\ast}=f(x^{\ast})
x∗=f(x∗),以及序列
{
x
k
}
\{x_{k}\}
{xk}收敛到
x
∗
x^{*}
x∗。
[PS:这个命题是我根据以前学习过的Lyapunov定理和上述那篇学术文章的思想下,自己随手写出来的,看起来很对。也很容易给出来满足这个命题的例子。但是我想了两天,确实证明不出来,也尝试构造反例来证伪。经过头脑风暴的折磨后,构造出来反例了。非常开心。]
【反例】 设
X
=
{
(
x
,
y
,
z
)
∈
R
3
∣
x
2
+
y
2
=
1
,
0
≤
z
≤
1
}
X = \{ (x,y,z) \in \mathbb{R}^3 \mid x^2 + y^2 = 1, 0 \leq z \leq 1 \}
X={(x,y,z)∈R3∣x2+y2=1,0≤z≤1}
这是一个圆柱面上高为 1 的“管状”集合,是紧集(闭且有界)。
定义
V
V
V函数:
V
(
x
,
y
,
z
)
=
z
V(x,y,z) = z
V(x,y,z)=z
显然是连续的。
定义映射:
f
:
(
x
,
y
,
z
)
↦
(
x
′
,
y
′
,
z
′
)
=
(
将
(
x
,
y
)
逆时针旋转90°
,
z
/
2
)
f: (x,y,z) \mapsto (x', y', z') = (\text{将}(x,y)\text{逆时针旋转90°}, z/2)
f:(x,y,z)↦(x′,y′,z′)=(将(x,y)逆时针旋转90°,z/2)
形式上可以写作:
f
(
x
,
y
,
z
)
=
(
−
y
,
x
,
z
/
2
)
f(x,y,z) = (-y, x, z/2)
f(x,y,z)=(−y,x,z/2)
这个映射显然是连续的。
计算:
V
(
x
k
+
1
)
=
z
k
+
1
=
z
k
2
<
z
k
=
V
(
x
k
)
V(x_{k+1}) = z_{k+1} = \frac{z_k}{2} < z_k = V(x_k)
V(xk+1)=zk+1=2zk<zk=V(xk)
严格单调下降,命题中的条件 (2) 成立。
同时, f : X → X f: X \to X f:X→X 没有问题,因为 z / 2 z/2 z/2 仍然属于 [ 0 , 1 ] [0,1] [0,1],映射闭合在 X X X 上。
对于
{
x
k
}
\{x_k\}
{xk}:
取初值:
x
0
=
(
0
,
1
,
1
)
x_0 = (0, 1, 1)
x0=(0,1,1)
迭代后:
x
1
=
f
(
x
0
)
=
(
−
1
,
0
,
0.5
)
x_1 = f(x_0) = (-1, 0, 0.5)
x1=f(x0)=(−1,0,0.5)
x
2
=
f
(
x
1
)
=
(
0
,
−
1
,
0.25
)
x_2 = f(x_1) = (0, -1, 0.25)
x2=f(x1)=(0,−1,0.25)
x
3
=
f
(
x
2
)
=
(
1
,
0
,
0.125
)
x_3 = f(x_2) = (1, 0, 0.125)
x3=f(x2)=(1,0,0.125)
x
4
=
f
(
x
3
)
=
(
0
,
1
,
0.0625
)
x_4 = f(x_3) = (0, 1, 0.0625)
x4=f(x3)=(0,1,0.0625)
可以看到:
z
z
z 分量趋于 0;
但是
(
x
,
y
)
(x, y)
(x,y) 分量始终在单位圆上旋转,每一步旋转 90°,永远不会静止。它会围绕着四个点
(
0
,
1
)
(0,1)
(0,1),
(
−
1
,
0
)
(-1,0)
(−1,0),
(
0
,
−
1
)
(0,-1)
(0,−1),
(
1
,
0
)
(1,0)
(1,0) 周期循环下去。
结论:
z
k
→
0
z_k \to 0
zk→0
但是
(
x
k
,
y
k
)
(x_k, y_k)
(xk,yk) 不收敛,而是在四个点之间来回跳动。因此整体序列
{
x
k
}
\{x_k\}
{xk} 不收敛。
上述的命题看起来,条件已经给的很强了,还是没法保证序列 { x k } \{x_{k}\} {xk}收敛。那么我们看看李亚普诺夫的离散形式到底给了什么样的条件,让系统可以收敛到一个极限(自动控制里面的“稳定点”)。
【李亚普诺夫定理】 考虑离散时间系统:
x
k
+
1
=
f
(
x
k
)
(1)
x_{k+1} = f(x_k) \tag{1}
xk+1=f(xk)(1)
其中连续映射
f
:
R
n
→
R
n
,
f
(
0
)
=
0
f: \mathbb{R}^n \to \mathbb{R}^n, \quad f(0) = 0
f:Rn→Rn,f(0)=0。
若存在一个连续函数
V
:
D
→
R
V: D \to \mathbb{R}
V:D→R
满足以下条件:
[正定性]:
V
(
0
)
=
0
且
V
(
x
)
>
0
∀
x
≠
0
(2)
V(0) = 0 \quad \text{且} \quad V(x) > 0 \quad \forall x \neq 0 \tag{2}
V(0)=0且V(x)>0∀x=0(2)
[下降性(差分负定)]:
Δ
V
(
x
)
=
V
(
f
(
x
)
)
−
V
(
x
)
<
0
∀
x
≠
0
(3)
\Delta V(x) = V(f(x)) - V(x) < 0 \quad \forall x \neq 0 \tag{3}
ΔV(x)=V(f(x))−V(x)<0∀x=0(3)
[径向无界]:
V
(
x
)
→
∞
,
∣
∣
x
∣
∣
→
∞
(4)
V(x) \to \infty, ||x|| \to \infty \tag{4}
V(x)→∞,∣∣x∣∣→∞(4)
是大范围渐近稳定的(即无论初始迭代点取任何值,即
∀
x
0
∈
R
N
\forall x_{0} \in \mathbb{R}^N
∀x0∈RN,
{
x
k
}
\{x_{k}\}
{xk}终将收敛到0)。
证明:
[1] 生成
{
x
k
}
\{{x_{k}}\}
{xk}序列
任取
x
0
∈
R
N
x_{0} \in\mathbb{R}^{N}
x0∈RN,代入定理中的(1)式。可以得到序列
{
x
k
}
\{x_{k}\}
{xk}。
[2] 序列
{
V
(
x
k
)
}
\{V(x_{k})\}
{V(xk)}的收敛性
将序列
{
x
k
}
\{x_{k}\}
{xk}代入到
V
V
V中,得到序列
{
V
(
x
k
)
}
\{V(x_{k})\}
{V(xk)}。由定理中的(3)式知,
V
(
f
(
x
k
)
)
−
V
(
x
k
)
=
V
(
x
k
+
1
)
−
V
(
x
k
)
<
0
V(f(x_{k}))-V(x_{k})=V(x_{k+1})-V(x_{k})<0
V(f(xk))−V(xk)=V(xk+1)−V(xk)<0,即序列
{
V
(
x
k
)
}
\{V(x_{k})\}
{V(xk)}单调下降。由定理中的(2)式知,
V
(
x
k
)
≥
0
V(x_{k}) \geq 0
V(xk)≥0,即序列
{
V
(
x
k
)
}
\{V(x_{k})\}
{V(xk)}有下界。序列
{
V
(
x
k
)
}
\{V(x_{k})\}
{V(xk)}单调递减且有下界,所以收敛。记
lim
k
→
∞
V
(
x
k
)
=
C
\lim_{k \to \infty}V(x_{k}) = C
limk→∞V(xk)=C。因为
V
(
x
k
)
≥
0
V(x_{k}) \geq 0
V(xk)≥0,
∀
k
∈
N
\forall k \in \mathbb{N}
∀k∈N,所以
C
≥
0
C \geq 0
C≥0,
C
∈
R
C \in\mathbb{R}
C∈R。
[3] 序列
{
V
(
x
k
)
}
\{V(x_{k})\}
{V(xk)}的极限
C
=
0
C=0
C=0
序列
{
x
k
}
\{{x_{k}}\}
{xk}有界(反证法:若序列
{
x
k
}
\{{x_{k}}\}
{xk}无界,由定理中(4)式知,
lim
k
→
∞
V
(
x
k
)
=
∞
\lim_{k \to \infty}V(x_{k}) = \infty
limk→∞V(xk)=∞,这与上述序列
{
V
(
x
k
)
}
\{V(x_{k})\}
{V(xk)}收敛到实数
C
C
C矛盾)。由Bolzano-Weierstrass定理(
R
N
\mathbb{R}^{N}
RN空间中的有界序列必有收敛子列)知,可以找到收敛子列
{
x
k
j
}
\{{x_{k_{j}}}\}
{xkj},记
lim
j
→
∞
x
k
j
=
x
∗
\lim_{j \to \infty}x_{k_{j}} = x^{\ast}
limj→∞xkj=x∗。因为
{
x
k
j
}
\{{x_{k_{j}}}\}
{xkj}是
{
x
k
}
\{{x_{k}}\}
{xk}的子列,所以
{
V
(
x
k
j
)
}
\{V({x_{k_{j}}})\}
{V(xkj)}是
{
V
(
x
k
)
}
\{V({x_{k}})\}
{V(xk)}的子列,则
lim
j
→
∞
V
(
x
k
j
)
=
lim
k
→
∞
V
(
x
k
)
=
C
\lim_{j \to \infty}V(x_{k_{j}})=\lim_{k \to \infty}V(x_{k}) = C
limj→∞V(xkj)=limk→∞V(xk)=C。因为
V
V
V为连续函数,所以
V
(
x
∗
)
=
C
(5)
V(x^{\ast})=C \tag{5}
V(x∗)=C(5)
我们证明
C
=
0
C=0
C=0。
反证法:假设
C
>
0
C>0
C>0。我们以
x
∗
x^{\ast}
x∗作为初始点(由定理中的(2)式知,
x
∗
≠
0
x^{\ast}\not=0
x∗=0),代入
x
k
+
1
=
f
(
x
k
)
x_{k+1} = f(x_k)
xk+1=f(xk)中,得到
f
(
x
∗
)
f(x^{\ast})
f(x∗)。由定理中的(3)式知,
V
(
f
(
x
∗
)
)
−
V
(
x
∗
)
<
0
(6)
V(f(x^{\ast})) - V(x^{\ast}) < 0 \tag{6}
V(f(x∗))−V(x∗)<0(6)
因为序列
{
f
(
x
k
j
)
}
\{f(x_{k_{j}})\}
{f(xkj)}是
{
x
k
}
\{{x_{k}}\}
{xk}的子序列,所以
lim
j
→
∞
V
(
f
(
x
k
j
)
)
=
lim
k
→
∞
V
(
x
k
)
=
C
(7)
\lim_{j \to \infty}V(f(x_{k_{j}}))=\lim_{k \to \infty}V(x_{k}) = C \tag{7}
j→∞limV(f(xkj))=k→∞limV(xk)=C(7) 因为
f
f
f为连续映射,且
lim
j
→
∞
x
k
j
=
x
∗
\lim_{j \to \infty}x_{k_{j}} = x^{\ast}
limj→∞xkj=x∗,所以
lim
j
→
∞
f
(
x
k
j
)
=
f
(
x
∗
)
\lim_{j \to \infty}f(x_{k_{j}}) = f(x^{\ast})
limj→∞f(xkj)=f(x∗)。因为
V
V
V为连续函数,所以
lim
j
→
∞
V
(
f
(
x
k
j
)
)
=
V
(
f
(
x
∗
)
)
(8)
\lim_{j \to \infty}V(f(x_{k_{j}})) = V(f(x^{\ast})) \tag{8}
j→∞limV(f(xkj))=V(f(x∗))(8) 由(7)式和(8)式知,
V
(
f
(
x
∗
)
)
=
C
(9)
V(f(x^{\ast}))=C \tag{9}
V(f(x∗))=C(9) 由(5)式和(9)式知,
V
(
f
(
x
∗
)
)
=
V
(
x
∗
)
V(f(x^{\ast}))=V(x^{\ast})
V(f(x∗))=V(x∗),这与(6)式矛盾。所以
C
=
0
C=0
C=0。
[4] 序列
{
x
k
}
\{{x_{k}}\}
{xk}收敛到0
反证法:假设序列
{
x
k
}
\{{x_{k}}\}
{xk}不收敛到0,即“
∃
ε
>
0
\exists \varepsilon > 0
∃ε>0, 对于
∀
N
>
0
\forall N > 0
∀N>0,
∃
k
>
N
\exists k>N
∃k>N,使得
∣
∣
x
k
∣
∣
>
ε
||x_{k}|| > \varepsilon
∣∣xk∣∣>ε”。我们可以选取
N
1
N_{1}
N1,找到一个
k
1
>
N
1
k_{1}>N_{1}
k1>N1,使得
∣
∣
x
k
1
∣
∣
>
ε
||x_{k_{1}}|| > \varepsilon
∣∣xk1∣∣>ε;然后,选择
N
2
=
k
1
N_{2}=k_{1}
N2=k1,找到一个
k
2
>
N
2
k_{2}>N_{2}
k2>N2,使得
∣
∣
x
k
2
∣
∣
>
ε
||x_{k_{2}}|| > \varepsilon
∣∣xk2∣∣>ε;依此进行下去,可以得到一个序列
{
x
k
}
\{{x_{k}}\}
{xk}的子序列
{
x
k
i
}
\{{x_{k_{i}}}\}
{xki},
i
=
1
,
2
,
3
,
.
.
.
i=1,2,3,...
i=1,2,3,...。对于
∀
i
∈
N
∗
\forall i\in N^{*}
∀i∈N∗,
∣
∣
x
k
i
∣
∣
>
ε
||x_{k_{i}}|| > \varepsilon
∣∣xki∣∣>ε。上述已经证明了序列
{
x
k
}
\{{x_{k}}\}
{xk}有界,所以子序列
{
x
k
i
}
\{{x_{k_{i}}}\}
{xki}也有界。由Bolzano-Weierstrass定理知,可以找到
{
x
k
i
}
\{{x_{k_{i}}}\}
{xki}的一个收敛子列
{
x
k
i
′
}
\{{x_{k_{i}'}}\}
{xki′},记极限为
x
^
\hat x
x^,
x
^
≥
ε
>
0
\hat x \geq \varepsilon>0
x^≥ε>0。因为
V
V
V连续,所以
lim
i
→
∞
V
(
x
k
i
′
)
=
V
(
x
^
)
(10)
\lim_{i \to \infty}V(x_{k_{i}'})=V(\hat x) \tag{10}
i→∞limV(xki′)=V(x^)(10) 由定理中的(2)式和
x
^
>
0
\hat x>0
x^>0知,
V
(
x
^
)
>
0
(11)
V(\hat x)>0 \tag{11}
V(x^)>0(11) 因为
{
x
k
i
′
}
\{{x_{k_{i}'}}\}
{xki′}是
{
x
k
}
\{{x_{k}}\}
{xk}的子列,所以
lim
i
→
∞
V
(
x
k
i
′
)
=
lim
k
→
∞
V
(
x
k
)
=
C
=
0
(12)
\lim_{i \to \infty}V(x_{k_{i}'})=\lim_{k \to \infty}V(x_{k})=C=0 \tag{12}
i→∞limV(xki′)=k→∞limV(xk)=C=0(12) 由(10)式和(12)式知,
V
(
x
^
)
=
0
V(\hat x)=0
V(x^)=0,这与(11)式矛盾。则序列
{
x
k
}
\{{x_{k}}\}
{xk}必须收敛到0。
【PS】结合上面的证明,我们可以思考一下如果把上述定理的某些条件给去掉,看看是否还能严格证明出来收敛。比如我们把 【李亚普诺夫定理】 中的"连续映射
f
:
R
n
→
R
n
f: \mathbb{R}^n \to \mathbb{R}^n
f:Rn→Rn"条件替换为“映射
f
:
R
n
→
R
n
f: \mathbb{R}^n \to \mathbb{R}^n
f:Rn→Rn”,没有了连续性的保证,就不能保证迭代产生的序列
{
x
k
}
\{x_{k}\}
{xk}收敛到0。构造的反例如下,
【反例】 在
R
3
\mathbb{R}^3
R3空间中,
如上图所示,我们把整个空间分为三块,分别记作
S
1
S_{1}
S1,
S
2
S_{2}
S2,
S
3
S_{3}
S3。
S
1
=
{
(
x
,
y
,
z
)
∈
R
3
∣
z
>
1
}
S_{1} = \{ (x,y,z) \in \mathbb{R}^3 \mid z >1 \}
S1={(x,y,z)∈R3∣z>1}
S
2
=
{
(
x
,
y
,
z
)
∈
R
3
∣
−
1
≤
z
≤
1
}
S_{2} = \{ (x,y,z) \in \mathbb{R}^3 \mid -1 \leq z \leq 1 \}
S2={(x,y,z)∈R3∣−1≤z≤1}
S
3
=
{
(
x
,
y
,
z
)
∈
R
3
∣
z
<
−
1
}
S_{3} = \{ (x,y,z) \in \mathbb{R}^3 \mid z < -1 \}
S3={(x,y,z)∈R3∣z<−1}
定义
V
V
V函数:
V
(
x
,
y
,
z
)
=
x
2
+
y
2
+
z
2
V(x,y,z) = \sqrt{x^{2}+y^{2}+z^{2}}
V(x,y,z)=x2+y2+z2
这个映射显然是连续的,且满足“正定性”和“径向无界”。
定义映射
f
f
f:
f
:
(
x
,
y
,
z
)
↦
(
x
′
,
y
′
,
z
′
)
=
(
将
(
x
,
y
)
逆时针旋转90°
,
(
z
+
1
)
/
2
)
当
(
x
,
y
,
z
)
∈
S
1
(
x
,
y
,
z
)
↦
(
x
′
,
y
′
,
z
′
)
=
(
将
(
x
,
y
)
逆时针旋转90°,
x
变为
x
/
2
,
y
变为
y
/
2
,
z
/
2
)
当
(
x
,
y
,
z
)
∈
S
2
(
x
,
y
,
z
)
↦
(
x
′
,
y
′
,
z
′
)
=
(
将
(
x
,
y
)
逆时针旋转90°
,
(
z
−
1
)
/
2
)
当
(
x
,
y
,
z
)
∈
S
3
f: (x,y,z) \mapsto (x', y', z') = (\text{将}(x,y)\text{逆时针旋转90°}, (z+1)/2) \quad \text{当}(x,y,z) \in S_{1} \\ (x,y,z) \mapsto (x', y', z') = (\text{将}(x,y)\text{逆时针旋转90°},x变为x/2,y变为y/2, z/2) \quad \text{当}(x,y,z) \in S_{2} \\ (x,y,z) \mapsto (x', y', z') = (\text{将}(x,y)\text{逆时针旋转90°}, (z-1)/2) \quad \text{当}(x,y,z) \in S_{3}
f:(x,y,z)↦(x′,y′,z′)=(将(x,y)逆时针旋转90°,(z+1)/2)当(x,y,z)∈S1(x,y,z)↦(x′,y′,z′)=(将(x,y)逆时针旋转90°,x变为x/2,y变为y/2,z/2)当(x,y,z)∈S2(x,y,z)↦(x′,y′,z′)=(将(x,y)逆时针旋转90°,(z−1)/2)当(x,y,z)∈S3
这个映射
f
f
f显然是不连续的(在
z
=
1
z=1
z=1和
z
=
−
1
z=-1
z=−1时不连续)。
计算:
V
(
x
k
+
1
)
=
x
2
+
y
2
+
[
(
z
+
1
)
/
2
]
2
<
x
2
+
y
2
+
z
2
=
V
(
x
k
)
当
(
x
,
y
,
z
)
∈
S
1
时
V
(
x
k
+
1
)
=
(
x
/
2
)
2
+
(
y
/
2
)
2
+
(
z
/
2
)
2
<
x
2
+
y
2
+
z
2
=
V
(
x
k
)
当
(
x
,
y
,
z
)
∈
S
2
时
V
(
x
k
+
1
)
=
x
2
+
y
2
+
[
(
z
−
1
)
/
2
]
2
<
x
2
+
y
2
+
z
2
=
V
(
x
k
)
当
(
x
,
y
,
z
)
∈
S
3
时
V(x_{k+1}) = \sqrt{x^2+y^2+[(z+1)/2]^2} < \sqrt{x^2+y^2+z^2} = V(x_k) \quad \text{当}(x,y,z) \in S_{1}时 \\ V(x_{k+1}) = \sqrt{(x/2)^2+(y/2)^2+(z/2)^2} < \sqrt{x^2+y^2+z^2} = V(x_k) \quad \text{当}(x,y,z) \in S_{2}时 \\ V(x_{k+1}) = \sqrt{x^2+y^2+[(z-1)/2]^2} < \sqrt{x^2+y^2+z^2} = V(x_k) \quad \text{当}(x,y,z) \in S_{3}时
V(xk+1)=x2+y2+[(z+1)/2]2<x2+y2+z2=V(xk)当(x,y,z)∈S1时V(xk+1)=(x/2)2+(y/2)2+(z/2)2<x2+y2+z2=V(xk)当(x,y,z)∈S2时V(xk+1)=x2+y2+[(z−1)/2]2<x2+y2+z2=V(xk)当(x,y,z)∈S3时
严格单调下降,即满足“下降性(差分负定)”。
对于
{
x
k
}
\{x_k\}
{xk}:
取初值:
x
0
=
(
0
,
1
,
2
)
x_0 = (0, 1, 2)
x0=(0,1,2)
迭代后:
x
1
=
f
(
x
0
)
=
(
−
1
,
0
,
1.5
)
x_1 = f(x_0) = (-1, 0, 1.5)
x1=f(x0)=(−1,0,1.5)
x
2
=
f
(
x
1
)
=
(
0
,
−
1
,
1.25
)
x_2 = f(x_1) = (0, -1, 1.25)
x2=f(x1)=(0,−1,1.25)
x
3
=
f
(
x
2
)
=
(
1
,
0
,
1.125
)
x_3 = f(x_2) = (1, 0, 1.125)
x3=f(x2)=(1,0,1.125)
x
4
=
f
(
x
3
)
=
(
0
,
1
,
1.0625
)
x_4 = f(x_3) = (0, 1, 1.0625)
x4=f(x3)=(0,1,1.0625)
可以看到:
z
z
z 分量趋于 1;
但是
(
x
,
y
)
(x, y)
(x,y) 分量始终在单位圆上旋转,每一步旋转 90°,永远不会静止。它会围绕着四个点
(
0
,
1
)
(0,1)
(0,1),
(
−
1
,
0
)
(-1,0)
(−1,0),
(
0
,
−
1
)
(0,-1)
(0,−1),
(
1
,
0
)
(1,0)
(1,0) 周期循环下去。
结论:
可以看到,破坏了
f
f
f的连续性后,迭代产生的序列
{
x
k
}
\{x_k\}
{xk} 就可能不收敛。对于**【李亚普诺夫定理】**定理中的其它条件的弱化,大家可以自己研究对收敛性的影响。
【注:上述证明用到的数学基础都可以从“数学分析”相关的教材中找到】
三、全局收敛定理
这篇文章(题目为“Fast and Globally Convergence Pose Estimation from Video Images”)中用到的“全局收敛定理”,请参考论文中的算法构建部分,作者给出了定理描述,以及定理的参考文献。(实在写不动了,请查阅论文,谢谢)
总结
迭代算法的构建,涉及众多领域,比如自动控制中的李雅普诺夫理论,强化学习中的价值函数迭代理论。对于迭代算法,收敛性的研究非常重要,如果设计出来的迭代算法发散,问题就大了。本博客也只讨论了迭代算法中的冰山一角,个人感觉还是很有意思的。深刻掌握这些理论,说不定哪天自己就能设计出来一个收敛的迭代算法来解决自己遇到的问题。
写在最后,作者水平非常有限,如果上述的内容或者定理证明有什么逻辑不严谨或者错误,恳请指正,不胜感激。如果大家有关于迭代算法方面的见解,有意思或者有用的知识,如能留言分享,也非常感谢。