Firt Order Optimizers: Reviews and Updates

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

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

Lipschitz Continuity & L-Smooth 指:

(f(x)f(y))TL||xy|| 直觉来说是二阶导有上限L

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

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

12L||f(x)f(y)||2f(x)f(y)(y),xy

Gradient-Descent and Basic Variants

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

梯度下降算法

xk+1=xkαf(xk)

从surrogate function的角度来解析,在每一步xk上,可以理解构造一个与原函数在x=xk相切且二阶导为1/α的二次函数y=12α(xxk)2+f(xk)(xxk)+f(xk), 每一步x会更新到这个二次代理函数的最小值上. 这要求整个函数可导,如果不可导,则需要使用 subgradient descent.

subgradient 函数 g定义为任意梯度函数(subgradient oracle),使得 f(y)f(x)+g(x),yx

Proximal Gradient Method

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

可以理解为分两步:

  • g(x)用当前位置的xk的函数值构造一个与原函数相切(曲率不必一致的)的函数g(xk)+g(xk)T(uxk)+μ2||uxk||22
  • h(x)直接与新二次代理函数的求和求global minimum. x+=argminu(h(u)+g(xk)+g(xk)T(uxk)+μ2||uxk||22)=argminu(h(u)+g(xk)Tu+μ2||uxk||22)

重点:

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

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

Projected Gradient Descent

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

xk+1=argminxC||xkαkf(xk)x||22 展开后变为

xk+1=argminxC{x,f(xk)+1αk||xxk||222}

General Projected Gradient Descent 则会允许不同的距离量变为: xk+1=argmin

常用的距离量 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)。由于个人认知有限,暂还没有能力分析这些算法及其应用.