基于牛顿算法下的steffensen加速法_总结优化算法收敛性证明的两类方法

这篇文章中,我们总结两类做数值优化迭代算法收敛性证明的方法,同时也讨论了优化算法设计的思路。

1. 简介

数值优化在工程应用中有非常重要的作用。但在使用优化算法时候,算法的收敛性是我们需要认真考虑的东西,例如我们需要知道梯度下降是一阶收敛而牛顿法是二阶收敛,因此一般情况下,牛顿法会比梯度下降运行更快。了解收敛性后,我们才能更好地应用算法。这里,我们总结两类做数值算法收敛性证明的方法,同时讨论以后我们自己设计算法的思路。

2. 不动点类

该类中,收敛性的证明多使用不动点定理(Fixed Point Theorems)进行证明。不动点定理(Fixed Point Theorems)是数学证明中一个非常重要的定理,许多重要的数学定理都是由不动点定理证明的,例如偏微分方程解的存在性、博弈论中纳什均衡点的存在性以及我们这里即将介绍的数值算法的收敛性等。我们首先介绍一下不动点定理,然后介绍如何使用不动点定理进行算法收敛性证明。

简单地说,对一个函数

, 如果有一个点
,使得
,那么我们称
的一个不动点。例如对于函数
,任意一点都是
的不动点,对于
的不动点。但并不是所有的函数都是有不动点的,例如
就不具有不动点。那么一个自然的问题就是
在具有什么样的条件下有不动点呢?这里我们介绍巴拿赫固定点定理(Banach Fixed Point Theorem)。
巴拿赫固定点定理:对于函数
,其中
为以
为源点,
为半径的球,如果存在一个数
,
使得
那么,
具有唯一一个不动点
,即
,并且我们能通过下列方法来找到
:找一个初始点
,并按照
的方法生成一个序列
,那么我们有
收敛到
。我们称
为压缩映射(contraction mapping)。

注意到巴拿赫固定点定理不仅给出了不动点的存在性,而且给出了唯一性以及构造不动点的办法。那么我们如何使用这个不动点定理来进行算法收敛性证明和指导算法设计呢?给定一个算法,为了证明其收敛性,我们可以将算法的每一次迭代看做一个函数

,算法第
次的输入为
而输出为
,那么我们首先需要证明
为压缩映射,即满足性质
,根据巴拿赫固定点定理,我们就有
的固定点存在,即我们的整个算法收敛。反过来,如果我们要设计一个迭代算法,求解一个值
,那么我们需要构造一个压缩映射
,将
作为
的一个不动点,再以任意一个初值
出发,按照
的迭代方式,生成序列
,最终当迭代次数足够多的时候,
将离
非常接近,即为
的一个好的估计值。

下面我们通过例子来介绍巴拿赫固定点定理如何指导算法的设计,详细的证明可以参见更专业的书籍或者论文。

2.1 单个函数的优化

这里我们考虑下列问题

这里我们假设

足够的光滑,具有很好的性质。那么根据微积分里的定理,如果
为上述问题的解,那么
满足

其中

的梯度。 如果我们想使用巴拿赫不动点定理来设计一个算法求解
,那么,我们必须找到一个函数
,将
作为
的不动点,并且在不动点处,
能满足条件
。如何寻找这么一个函数
呢?我们可以从最简单的开始,将
取负后两边同时加上一个
,我们得到

我们定义

,那么
即为
的一个不动点,所以我们可能会期望按照算法
的方式生成一个序列
并且
会收敛到
。这时,我们需要使用巴拿赫固定点定理。我们得去验证
是否是一个压缩映射,即是否满足条件
,我们会做下列的计算。假设
中的一点,我们有

观察上述式子,我们知道对于一般的函数

,上述式子并不会给出
的结果。因此,我们需要限定
的讨论范围。我们假设
满足下列性质:存在
,
,使得

那么,根据

,我们有

因此,要使得

满足条件
,我们需要
,即
。那么我们可以有下列定理
假设
足够光滑且满足
,并且
,定义函数
,那么
有唯一一个不动点
,且
满足
。从
开始,我们按照下列方式生成一个序列
收敛到
可以观察到,如果我们取
,在
的不动点
处,我们仍然有
,看起来如此定义的
也是一个生成迭代算法的好的函数。但是
是否满足压缩映射的假设呢?读者可以试着进行
的计算来查看会发生什么事情。并且思考如何改变
的假设使得计算能够进行下去,思考你改的假设是否合理等等问题

对算法熟悉的读者知道,由

生成的迭代算法
即为梯度下降算法。类似的构造算法还有牛顿法,我们可以取

其中

的二阶导数。因此,如果在
的不动点
处,
可逆,我们有
,即

上述式子给出

,即
的一个极值点。读者可以搜索相关文献查阅
为压缩映射需要满足的条件。

2.2 两个函数和的优化

这里我们考虑下列优化问题

问题

在图像处理、最优传输,最优控制等问题中都有出现。我们可以将
看做一个函数,再使用梯度下降来求解。然而由于
是两个函数的和,我们又可以采用这个特点设计新的算法。为了更清楚的说明整个思想,我们假设
都是足够光滑的,即我们可以求
的导数。虽然以下算法的威力在
其中一个不可求导的时候才能体现出来,但这样可以让我们在这里避免讨论像子导数(Subgradient)的概念,专注算法的设计思想。

根据微积分的定理,我们知道如果

的最小值点,那么我们有

类似上一节中我们构造梯度下降的生成函数的思路,我们需要根据

的条件,将
表示为某个函数
的不动点。下面我们介绍几种算子的划分算法。
  • Forward-Backward Splitting. 从
    ,我们可以得到

的两边同时加上
,我们得到

其中

为Identity Map,即对任意的
,我们有
。在
中,我们将算子
求逆,得到

因此,我们可以定义

即为
的一个不动点。我们可以使用
生成算法

可以看出

为沿着
的负梯度方向进行一次梯度下降,而
为沿着
的梯度方向找到梯度上升后能够到达
的位置的点。因此,
被称作Forward-Backward Splitting。读者可以查看相关文献查阅
为压缩算子所需要的的条件。
  • Douglas-Rachford Splitting 这里,为了书写的方便,我们定义

并定义

其中

区间的一个实数。读者可以验证如果
的不动点,那么根据
得到的
满足
,因此,我们可以使用函数
来生成迭代算法。读者可以参考论文
Linear Convergence and Metric Selection for Douglas-Rachford Splitting and ADMM查阅
为压缩映射所需要的条件。
注: 可以从上面例子看出,我们有非常多的方法来将优化算法的解表示为某个函数
的不动点,然后根据函数
来生成算法。但是并不是每一个这样构造的算法都收敛。为了保证收敛性,我们需要构造的函数
是压缩映射。

3. 能量函数类

这里我们仍然考虑单个函数的优化,我们试图解决下列优化问题

假设

为函数
的最小值点。我们采用某种迭代算法来计算
,记
为第
步迭代计算所得的值。为了证明该算法的收敛性,我们找到一个能量函数,(一般叫做Lyapunov函数),该函数度量了
之间的某种距离。我们将该能量函数记做
,能量函数必须是大于等于零的。然后我们证明
为递减的函数,即对任意的
,我们有

直觉上讲,

描述的是在迭代过程中,随着迭代次数增加,
越来越近,我们的算法在收敛。

下面是几种常见的能量函数:

  • 。 该函数度量了
    的欧几里得距离,如果
    减小到足够小,那么
    可作为最小值点的近似值。读者可以参考
    Newton's Method中对牛顿法的收敛性证明。
  • 。该函数度量的是函数值之间的距离,如果
    很小,那么
    很近,但是可能
    可能并不近,例如函数
    的底部非常的平坦,如下图所示,那么算法可能在离
    很远的地方就停下来了。因此使用该距离可能会产生较大的误差,需要根据函数的特性来定。对于此距离函数证明收敛性,可以参见
    Gradient Descent and Acceleration对Nesterov加速算法的证明。

7af259d34f9531e1de33d7ff353cdb0e.png
  • ,其中
    为一个凸函数。函数
    定义了
    之间的Bregman距离。可以参见
    A Variational Perspective on Accelerated Methods in Optimization

当然,这里列出的能量函数并不完整,例如Fast alteranting direction optimization methods这篇文章中,使用原问题与对偶问题的优化条件的残差(Primal dual residuals)来定义能量函数。在实际问题中,对于具体的问题如何设计好能量函数,仍然是比较靠科研人员的直觉和经验。

总结

这篇文章中,我们介绍了两类证明算法收敛性的方法:固定点类与能量函数类。对于固定点类的算法,我们讨论了如何基于固定点的思想来设计新的算法。这里的总结一定是不完全的,随着更多地阅读论文,以后有机会将更多的方法纳入这个归纳中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值