这篇文章中,我们总结两类做数值优化迭代算法收敛性证明的方法,同时也讨论了优化算法设计的思路。
1. 简介
数值优化在工程应用中有非常重要的作用。但在使用优化算法时候,算法的收敛性是我们需要认真考虑的东西,例如我们需要知道梯度下降是一阶收敛而牛顿法是二阶收敛,因此一般情况下,牛顿法会比梯度下降运行更快。了解收敛性后,我们才能更好地应用算法。这里,我们总结两类做数值算法收敛性证明的方法,同时讨论以后我们自己设计算法的思路。
2. 不动点类
该类中,收敛性的证明多使用不动点定理(Fixed Point Theorems)进行证明。不动点定理(Fixed Point Theorems)是数学证明中一个非常重要的定理,许多重要的数学定理都是由不动点定理证明的,例如偏微分方程解的存在性、博弈论中纳什均衡点的存在性以及我们这里即将介绍的数值算法的收敛性等。我们首先介绍一下不动点定理,然后介绍如何使用不动点定理进行算法收敛性证明。
简单地说,对一个函数
巴拿赫固定点定理:对于函数,其中
为以
为源点,
为半径的球,如果存在一个数
,
使得
那么,
具有唯一一个不动点
,即
,并且我们能通过下列方法来找到
:找一个初始点
,并按照
的方法生成一个序列
,那么我们有
收敛到
。我们称
为压缩映射(contraction mapping)。
注意到巴拿赫固定点定理不仅给出了不动点的存在性,而且给出了唯一性以及构造不动点的办法。那么我们如何使用这个不动点定理来进行算法收敛性证明和指导算法设计呢?给定一个算法,为了证明其收敛性,我们可以将算法的每一次迭代看做一个函数
下面我们通过例子来介绍巴拿赫固定点定理如何指导算法的设计,详细的证明可以参见更专业的书籍或者论文。
2.1 单个函数的优化
这里我们考虑下列问题
这里我们假设
其中
我们定义
观察上述式子,我们知道对于一般的函数
那么,根据
因此,要使得
假设足够光滑且满足
和
,并且
,定义函数
,那么
有唯一一个不动点
,且
满足
。从
开始,我们按照下列方式生成一个序列
,
则
收敛到
可以观察到,如果我们取。
,在
的不动点
处,我们仍然有
,看起来如此定义的
也是一个生成迭代算法的好的函数。但是
是否满足压缩映射的假设呢?读者可以试着进行
的计算来查看会发生什么事情。并且思考如何改变
与
。的假设使得计算能够进行下去,思考你改的假设是否合理等等问题
对算法熟悉的读者知道,由
其中
上述式子给出
2.2 两个函数和的优化
这里我们考虑下列优化问题
问题
根据微积分的定理,我们知道如果
类似上一节中我们构造梯度下降的生成函数的思路,我们需要根据
- Forward-Backward Splitting. 从
,我们可以得到
将
其中
因此,我们可以定义
可以看出
- Douglas-Rachford Splitting 这里,为了书写的方便,我们定义
并定义
其中
注: 可以从上面例子看出,我们有非常多的方法来将优化算法的解表示为某个函数的不动点,然后根据函数
来生成算法。但是并不是每一个这样构造的算法都收敛。为了保证收敛性,我们需要构造的函数
是压缩映射。
3. 能量函数类
这里我们仍然考虑单个函数的优化,我们试图解决下列优化问题
假设
直觉上讲,
下面是几种常见的能量函数:
-
。 该函数度量了
到
的欧几里得距离,如果
减小到足够小,那么
可作为最小值点的近似值。读者可以参考
-
。该函数度量的是函数值之间的距离,如果
很小,那么
离
很近,但是可能
离
可能并不近,例如函数
的底部非常的平坦,如下图所示,那么算法可能在离
很远的地方就停下来了。因此使用该距离可能会产生较大的误差,需要根据函数的特性来定。对于此距离函数证明收敛性,可以参见
![7af259d34f9531e1de33d7ff353cdb0e.png](https://i-blog.csdnimg.cn/blog_migrate/aa0d235f429ea72d286511eadb6d9815.png)
-
,其中
为一个凸函数。函数
定义了
与
之间的Bregman距离。可以参见
当然,这里列出的能量函数并不完整,例如Fast alteranting direction optimization methods这篇文章中,使用原问题与对偶问题的优化条件的残差(Primal dual residuals)来定义能量函数。在实际问题中,对于具体的问题如何设计好能量函数,仍然是比较靠科研人员的直觉和经验。
总结
这篇文章中,我们介绍了两类证明算法收敛性的方法:固定点类与能量函数类。对于固定点类的算法,我们讨论了如何基于固定点的思想来设计新的算法。这里的总结一定是不完全的,随着更多地阅读论文,以后有机会将更多的方法纳入这个归纳中。