fortran迭代欧拉算法_常微分方程与优化算法

3027c6473f4c5e5301e02019ca02fc26.png
本文介绍某些优化算法可以表示为对应常微分方程的离散形式。最后谈谈个人关于如何利用这一关系进行算法设计的经验。(封面图为网络下载,如有版权问题,请图片原作者及时联系。)

1. 简介

本文分享一下我们对常微分方程(Ordinary Differential Equation,简称ODE)与优化算法的关系的一些理解。概括地说,就是某些优化算法可以表示成对应常微分方程的离散形式。这里,我们不做常微分方程的解的存在性讨论,而只是给出示意性的描述。

我们首先用梯度下降和Nesterov加速算法来举例说明常微分方程与优化算法的关系。最后分享一下我们对如何利用这一关系指导算法设计的经验。

2. 梯度下降

梯度下降是用得最多的优化算法之一。让我们回顾一下这个算法。假设函数

是一个凸函数,我们想找到
的最小值点,亦即,我们想求解下列问题:

我们知道

在点
的梯度
处的值增加最快的方向。因此,
处减少最快的方向。为求解
,梯度下降法从一个任意的给定点
开始,沿着
的方向走到点
,再沿着
的方向前进到点
,接着用相似的方式前进,直到某个停止条件满足为止。停止条件可以是到达了指定的最大行驶步数,或者是前进过程中两个相邻的点
(分别表示前进
次与
次到达的点)之间的距离非常的接近(表示在
处沿着
的方向行进,不再能减少
的值,亦即,我们到了
的最小值附近)。

下面,我们写出梯度下降的迭代公式。记

为前进
次到达的点,那么我们有

其中,

为沿
方向行进的步长。接下来,我们推导
所对应的常微分方程。我们将
变形,得到

观察

,我们可知
为下列常微分方程的有限差分下的显式欧拉离散:

3. Nesterov加速算法

这一节,我们介绍算法

的加速算法。一般地,算法
具有一阶收敛性。牛顿法可以达到二阶的收敛性(可以理解为比算法
更快)。因此理论上牛顿法更快速。但牛顿法需要求解函数
的二阶导数,在高维度以及
不可以求二次导数的情况下,会显得不太适用。

一般地,用

的一阶导数,我们能得到一阶收敛性,用
的二阶导数,可以得到二阶收敛性,想要得到更高阶收敛性,我们需要
更高阶导数的信息。

Nesterov提出了加速的办法,使得我们可以只用函数

的梯度的情况下,达到高阶的收敛速度。具体地,Nesterov算法设置起点
,并使用下列公式生成迭代序列:

其中

为选取的步长。Nesterov证明了当
的梯度
—Lipschitz连续且
时,Nesterov算法具有二阶收敛性。

下面,我们来推导算法

所对应的ODE。下面的推导来自于论文:
A Differential Equation for Modeling Nesterov's Accelerated Gradient Method: Theory and Insights[1]。由公式
,我们可以得到

我们假设序列

是由函数
离散取值得到的,并且有关系
,即
为函数
在点
的近似值。因此,使用泰勒公式,我们有

类似地,我们有

以及

因此,我们从

中得到

整理

,我们得到

我们让

趋近于
,得到

等式

即为算法
对应的常微分方程。

4. 经验总结

4.1 ODE收敛但某些离散形式不收敛

我们需要注意是,算法的ODE形式与离散形式并不完全等价,这是因为对ODE进行离散后,离散算法较ODE有了误差。这些误差累积导致最后离散的算法不收敛。因此,我们需要根据每个ODE的具体形式,设计适合的离散算法。

4.2 找到算法的ODE形式,再重新离散

在很多时候,我们初始想出来的优化算法并不收敛,编程实现的时候总不能得到满意的结果,这个时候,找到算法的ODE形式,再用其他方式重新离散ODE,能让我们得到更多的备选算法方案。例如,论文A Variational Perspective on Accelerated Methods[2]中,针对类似

的ODE用不同的方法离散,能得到不同的加速算法。

参考资料

[1]

A Differential Equation for Modeling Nesterov's Accelerated Gradient Method: https://jmlr.org/papers/volume17/15-084/15-084.pdf

[2]

A Variational Perspective on Accelerated Methods: https://arxiv.org/abs/1603.04245

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值