Firt Order Optimizers: Reviews and Updates

这篇内容会专注于一阶优化器的直觉与算法介绍,并从凸优化引入相关的基础概念

论文中经常出现的基础概念:

Lipschitz Continuity & L-Smooth 指:

直觉来说是二阶导有上限

-strongly convex 指: 直觉来说是二阶导有正下限. 在凸优化问题中,连续函数二阶导为非负数,这里强凸函数的定义则是要求二阶导为正数. 文章中会出现 "L-smooth and -strongly convex"的说法,直觉地来说指函数的二阶导在正数区间.

co-coercivity 矫顽性可以由convexity 与 L-smooth一同推导, 其数学表述为

Gradient-Descent and Basic Variants

关于梯度下降相关算法,有一个比较好的博客

梯度下降算法

从surrogate function的角度来解析,在每一步上,可以理解构造一个与原函数在相切且二阶导为的二次函数, 每一步会更新到这个二次代理函数的最小值上. 这要求整个函数可导,如果不可导,则需要使用 subgradient descent.

subgradient 函数 定义为任意梯度函数(subgradient oracle),使得

Proximal Gradient Method

如果凸函数其中有一个部分不可导,但是处理比较简单,那么可以使用proximal optimization algorithms, 将函数分解为, 其中不一定可导.

可以理解为分两步:

  • 用当前位置的的函数值构造一个与原函数相切(曲率不必一致的)的函数
  • 直接与新二次代理函数的求和求global minimum.

重点:

  • 如果为L2-norm L1-norm, 这些常见的regularizer, 那么最后的求优化是一个典型的二次函数 + 二次函数或者 二次函数 + ,都是有closed-form solution的。
  • 如果记为二次代理函数的极值点 , 将代入上文的最优化公式, 那么最后的求解函数常常会写成 proximal mapping (prox-operator), .说明最终的结果既需要考虑的局部最优点,也需要考虑.

特殊情况中,可以是一个 indicator function,指定函数的定义域, 如果在定义域内则,否则. 这样的情况下 函数变成了在有限定义域内寻找最优解的问题,得到的结果是最优解在边界上的投影。因而wiki说 prox函数是projection操作的推广。

Projected Gradient Descent

如果使用梯度下降的时候要求在定义域中,那么一个projected梯度下降的做法是,首先进行无约束梯度下降,然后将结果投影到边界上. 记为, 其中为欧几里得投影,可以写成

展开后变为

General Projected Gradient Descent 则会允许不同的距离量变为:

常用的距离量 Bregman Divergence 可以产出 KL divergence.

mirror gradient descent常常用来分析

Nesterov Accelerated Gradient Descent

Nesterov Acceleration有很多个不同的版本。

Nesterov 在 1983年的paper:

其中 可被泛化为一般超参数. 可以理解为为沿着之前的更新方向look-ahead的目的位置, 然后在look-ahead的位置进行梯度更新. 这篇Medium博客提供了基于"look-ahead"的阐述.

pytorch的版本采用的是更着重于momentum的算法描述,对标的是momentum gradient descent.

Triple Momentum Gradient Descent

pdf

这篇paper提出了一个基于四个参数的 triple momentum (TM)框架.

这个框架下的优化器算法:

| Method | Parameters | | :---------------- | :-------------------------------: | | Gradient descent | | | Momentum Gradient | | | Nesterov AG | | | General TM Algo. | |

直觉上来说,如果, 则 , 代入后就能得到前面提到的几个算法公司.

作者给出了参数, 如果一直需要优化的函数是 的则令, 设定一下参数,

个人分析

这个paper是有小问题的,对前面TM框架进行分析,可以通过用表达可以消去.同时中有一个参数是多余的.这个公式最终可以化为

这里引出了下一篇paper提到的参数冗余问题。

Boosting First-Order Methods by Shifting Objective: New Schemes with Faster Worst Case Rates

pdf

对于原来的目标函数,可以转而求解一个新的shifted objective.

可以简单理解为原函数与最值点附近的下界二次函数的残差.容易证明

  • h(x)是一个凸函数
  • h(x)的极值点与相同,进而可以说的最优值点与的相同。
  • h(x)-smooth
  • 矫顽性:

Generalized Triple Momentum

image

其中的表达式等价于 其中为二次surrogate function 的最优解. 可得, 在一定程度上可以表达梯度下降算法.

而当时,可以简单地将这两条式子化为 Nesterov的标准形式。

进一步地观察的表达式的第二项,将代入,得到 , 由于强凸性, 第二项与符号相反,这是用于补偿strongly-convex函数的二阶导的,当我们用曲率为的更为扁平的二次代理函数求解时,我们会高估合适的梯度下降步长的大小,因而带着动量往前的 在预测look-ahead 时会减去之前高估的一部分步长.

参考参数

文章更严谨且通用地用李雅普诺夫函数 where 进行了证明, 说明其收敛速度上限比较小。

作者之后将这个算法附加在多个一阶算法上(SVRG, SAGA)。由于个人认知有限,暂还没有能力分析这些算法及其应用.