您好,欢迎进入某某矿山钻机有限公司官网!

咨询服务热线

020-88888888s

总结优化算法收敛性证明的两类方法

发布时间:2024-04-29 04:29人气:
这篇文章中,我们总结两类做数值优化迭代算法收敛性证明的方法,同时也讨论了优化算法设计的思路。

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

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

简单地说,对一个函数f, 如果有一个点x,使得f(x)=x,那么我们称xf的一个不动点。例如对于函数f(x)=x,任意一点都是f的不动点,对于f(x)=x^3x=1f的不动点。但并不是所有的函数都是有不动点的,例如f(x)=x+1就不具有不动点。那么一个自然的问题就是f在具有什么样的条件下有不动点呢?这里我们介绍巴拿赫固定点定理(Banach Fixed Point Theorem)。

巴拿赫固定点定理:对于函数f:B(y,r)\\rightarrow B(y,r),其中B(y,r)为以y为源点,r为半径的球,如果存在一个数q, 0\\leq q<1使得
|f(x)-f(y)|\\leq q|x-y|,\\qquad (2.1) \\\\ 那么,f具有唯一一个不动点x^*\\in B(y,r),即f(x^*)=x^*,并且我们能通过下列方法来找到x^*:找一个初始点x_0,并按照x_{n+1}=f(x_n)的方法生成一个序列\\{x_n\\},那么我们有x_n收敛到x^*。我们称f为压缩映射(contraction mapping)。

注意到巴拿赫固定点定理不仅给出了不动点的存在性,而且给出了唯一性以及构造不动点的办法。那么我们如何使用这个不动点定理来进行算法收敛性证明和指导算法设计呢?给定一个算法,为了证明其收敛性,我们可以将算法的每一次迭代看做一个函数f,算法第n次的输入为x_n而输出为x_{n+1},那么我们首先需要证明f为压缩映射,即满足性质(2.1),根据巴拿赫固定点定理,我们就有f的固定点存在,即我们的整个算法收敛。反过来,如果我们要设计一个迭代算法,求解一个值x,那么我们需要构造一个压缩映射f,将x作为f的一个不动点,再以任意一个初值x_0出发,按照x_{n+1}=f(x_n)的迭代方式,生成序列\\{x_n\\},最终当迭代次数足够多的时候,x_n将离x非常接近,即为x的一个好的估计值。

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

这里我们考虑下列问题

\\min f(x). \\qquad (2.1.1) \\\\

这里我们假设f足够的光滑,具有很好的性质。那么根据微积分里的定理,如果x^*为上述问题的解,那么x^*满足

\
abla f(x^*)=0. \\qquad (2.1.2) \\\\

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

x^*-\
abla f(x^*)=x^*,\\qquad (2.1.3) \\\\

我们定义G(x)=x-\
abla f(x),那么x^*即为G的一个不动点,所以我们可能会期望按照算法x_{n+1}=G(x_n)的方式生成一个序列\\{x_n\\}并且x_n会收敛到x^*。这时,我们需要使用巴拿赫固定点定理。我们得去验证G是否是一个压缩映射,即是否满足条件(2.1),我们会做下列的计算。假设x,y\\mathbb{R}^n中的一点,我们有

\\begin{align*}|G(x)-G(y)|^2=&|x-y-(\
abla f(x)-\
abla f(y))|^2\\\\=&|x-y|^2-2\\langle x-y, \
abla f(x)-\
abla f(y)\\rangle+|\
abla f(x)-\
abla f(y)|^2。 \\end{align*}\\qquad (2.1.4) \\\\

观察上述式子,我们知道对于一般的函数f,上述式子并不会给出(2.1)的结果。因此,我们需要限定f的讨论范围。我们假设f满足下列性质:存在\\mu>0, L>0,使得

\\forall x, y, \\langle x-y,\
abla f(x)-\
abla f(y)\\rangle \\geq \\mu|x-y|^2, \\qquad (2.1.5)  \\\\\\forall x, y, |\
abla f(x)-\
abla f(y)|^2\\leq L|x-y|^2. \\qquad (2.1.6) \\\\

那么,根据(2.1.4)-(2.1.6),我们有

\\begin{align*}|G(x)-G(y)|^2\\leq (1-2\\mu+L)|x-y|^2\\qquad (2.1.7) \\end{align*}\\\\

因此,要使得G满足条件(2.1),我们需要0\\leq 1-2\\mu+L<1,即2\\mu-1\\leq L<2\\mu。那么我们可以有下列定理

假设f足够光滑且满足(2.1.5)(2.1.6),并且2\\mu-1\\leq L<2\\mu,定义函数G(x)=x-\
abla f(x),那么G有唯一一个不动点x^*,且x^*满足\
abla f(x^*)=0。从x_0开始,我们按照下列方式生成一个序列\\{x_n\\}
x_{n+1}=G(x_n)=x_n-\
abla f(x_n),(2.1.8) \\\\x_n收敛到x^*

可以观察到,如果我们取G(x)=x+\
abla f(x),在G(x)的不动点x^*处,我们仍然有\
abla f(x^*)=0,看起来如此定义的G也是一个生成迭代算法的好的函数。但是G是否满足压缩映射的假设呢?读者可以试着进行(2.1.4)的计算来查看会发生什么事情。并且思考如何改变(2.1.5)(2.1.6)的假设使得计算能够进行下去,思考你改的假设是否合理等等问题

对算法熟悉的读者知道,由G(x)=x-\
abla f(x)生成的迭代算法(2.1.8)即为梯度下降算法。类似的构造算法还有牛顿法,我们可以取

G(x)=x-(\
abla^2 f(x))^{-1}\
abla f(x), \\qquad (2.1.9) \\\\

其中\
abla^2 ff的二阶导数。因此,如果在G的不动点x^*处,\
abla^2 f(x^*)可逆,我们有G(x^*)=x^*,即

x^*=x^*-(\
abla^2 f(x^*))^{-1}\
abla f(x^*),\\qquad (2.1.10) \\\\

上述式子给出\
abla f(x^*)=0,即x^*f的一个极值点。读者可以搜索相关文献查阅G为压缩映射需要满足的条件。

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

\\min_x \\varphi(x)+\\psi(x), \\qquad (2.2.1) \\\\

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

根据微积分的定理,我们知道如果x^*(2.2.1)\\varphi+\\psi的最小值点,那么我们有

0=\
abla \\varphi(x^*)+\
abla \\psi(x^*), \\qquad (2.2.2) \\\\

类似上一节中我们构造梯度下降的生成函数的思路,我们需要根据(2.2.2)的条件,将x^*表示为某个函数G的不动点。下面我们介绍几种算子的划分算法。

  • Forward-Backward Splitting. 从(2.2.2),我们可以得到

-\
abla \\varphi(x^*)=\
abla \\psi(x^*)。\\qquad (2.2.3) \\\\

(2.2.3)的两边同时加上x^*,我们得到

x^*-\
abla\\varphi(x^*)=x+\
abla\\psi(x^*)=(I+\
abla \\psi)(x^*),\\qquad (2.2.4) \\\\

其中I为Identity Map,即对任意的x,我们有I(x)=x。在(2.2.4)中,我们将算子(I+\
abla \\psi)求逆,得到

x^*=(I+\
abla \\psi)^{-1}(x^*-\
abla \\varphi(x^*)). \\qquad (2.2.5) \\\\

因此,我们可以定义

G(x)=(I+\
abla \\psi)^{-1}(x-\
abla \\varphi(x)). \\qquad (2.2.6) \\\\

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

\\begin{align*}y^{n+1}=&x^n-\
abla \\varphi(x^n),\\qquad (2.2.7)\\\\ x^{n+1}=&(I+\
abla \\psi)^{-1}y^{n+1}. \\qquad (2.2.8)  \\end{align*}\\\\

可以看出(2.2.7)为沿着\\varphi的负梯度方向进行一次梯度下降,而(2.2.8)为沿着\\psi的梯度方向找到梯度上升后能够到达y^{n+1}的位置的点。因此,(2.2.7)-(2.2.8)被称作Forward-Backward Splitting。读者可以查看相关文献查阅G为压缩算子所需要的的条件。

  • Douglas-Rachford Splitting 这里,为了书写的方便,我们定义

R_{\\varphi}=(I+\
abla \\varphi)^{-1}, \\ R_{\\psi}=(I+\
abla \\psi)^{-1}, \\qquad (2.2.9) \\\\x=(I+\
abla \\varphi)^{-1}z, \\qquad (2.2.10) \\\\

并定义

G(z)=((1-\\alpha)I+\\alpha R_\\psi R_\\varphi) z, \\qquad (2.2.11) \\\\

其中\\alpha(0,1)区间的一个实数。读者可以验证如果z^*G(z)的不动点,那么根据(2.2.10)得到的x^*满足(2.2.2),因此,我们可以使用函数G(z)来生成迭代算法。读者可以参考论文Linear Convergence and Metric Selection for Douglas-Rachford Splitting and ADMM查阅G为压缩映射所需要的条件。

注: 可以从上面例子看出,我们有非常多的方法来将优化算法的解表示为某个函数G的不动点,然后根据函数G来生成算法。但是并不是每一个这样构造的算法都收敛。为了保证收敛性,我们需要构造的函数G是压缩映射。

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

\\min_x f(x). \\qquad (3.1) \\\\

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

E(x^*,x_{n+1})\\leq E(x^*, x_n). \\qquad (3.2) \\\\

直觉上讲,(3.2)描述的是在迭代过程中,随着迭代次数增加,x_nx^*越来越近,我们的算法在收敛。

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

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


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

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

  • 联系方式
  • 传 真:020-99999999
  • 手 机:13899999999
  • 电 话:020-88888888
  • 地 址:广东省广州市番禺经济开发区
友情链接
奇亿
奇亿
鼎点
在线咨询

咨询电话:

020-88888888

  • 微信扫码 关注我们

Copyright © 2002-2022 鼎点-鼎点娱乐矿山钻机销售站 非商用版本 备案号:ICP备********号">ICP备********号
扫一扫咨询微信客服
020-88888888

平台注册入口