二阶随机优化算法小结

二阶随机优化算法

标签(空格分隔): L-BFGS NewSample Lissa


最近看了几篇二阶优化算法,现在总结一下,以便日后查阅

二阶算法

二阶优化算法又称为牛顿法,牛顿法是微积分学中, 通过迭代以求解可微函数f的零点的一种算法,而在最优化中,牛顿法通常被运用于求解一个二次可微函数f的一阶导数f’的零点x, 同时也是f的驻点。 因此从另一个角度而言,应用于最优化中的牛顿法是求解函数 f(x)的最小值或最大值的一种算法。

二阶算法都是从牛顿法演变而来,关于牛顿法详情可以参考我另外一篇博客

传统二阶算法缺陷

传统的二阶优化方法如牛顿法,主要有两个缺陷,一个是需要计算Hessian矩阵,需要O(np^2) 的复杂度,另外一个便是计算Hessian的逆矩阵需要O(p^3 )的复杂度。而在p维度很高的时候,传统二阶优化法显然不能够适用。

随机算法

随机梯度下降类算法以及其改进SVRG、SAGA等算法的提出,大大降低了算法迭代一次所需要的时间。在最近的相关研究中,随机一阶优化算法已经在机器学习优化模型中占据主导支配地位,这很大是由于它能够在大规模的模型训练中提供可负担的线性计算成本。对一阶优化算法提升起到主要贡献的研究工作,其中包括adaptive regularization, variance reduction,dual coordinate ascent。与之对比,二阶优化算法由于每次迭代需要计算一次Hessian矩阵以及Hessian的逆,其一次迭代过高的计算复杂性和消耗大量内存导致不能够适用于大规模的机器学习应用之中。

近期,让二阶算法适用于大规模机器学习中,有了相关进展工作。其中主要典型的研究工作有(包括但不局限于以下):1.Stochastic L-BFGS 2. NewSamp 3.LiSSA。他们都是从不同角度解决二阶方法的局限性,下面将分别介绍这三种方法。

NewSamp

A Newton method via sub-sampling and eigenvalue thresholding

这里的NewSamp核心想法就是对Hessain子采样(sub-sampling)以及低秩矩阵近似(low-rank approximation),这里为什么可以低秩近似?需要先对奇异值含义有所理解,可以参考知乎问题
奇异值的物理意义是什么?

NewSamp算法分析

NewSamp他实质是基于子采样的牛顿法,是一个很简洁的算法。
1. 首先,NewSamp通过子采样避免对所有样本求Hessian。
2. 对于Hessian求逆. 牛顿法主要通过发掘Hessian的中所包含的曲率信息达到加速效果,由于重要的二阶曲率信息一般包含在最大的若干个特征值以及其对应的特征向量中。因而对于Hessian求逆的问题,NewSamp采用低秩矩阵近似技术来得到Hessian矩阵逆的近似。假如目标函数是凸函数,那么对应的Hessian矩阵特征值便是非负,对称的Hessian矩阵的奇异值和特征值相同,因而算法NewSamp采用截断SVD分解获得前k大的特征值以及对应特征向量, 然后快速得到Hessian的逆。

贡献

NewSamp的最主要贡献,是在提供良好收敛效果的同时提供了理论保证。

算法过程

NewSamp

这里作者并没有直接套用最基本的rank-r approximation

To construct the curvature matrix [Qt]−1, instead of using the basic rank-r approximation, we fill its 0 eigenvalues with the (r+1)-th eigenvalue of the sub-sampled Hessian which is the largest eigenvalue below the threshold.

这里如果我没有理解错的话,应该是让奇异值小于(r+1)以后的奇异值都变为第(r+1)个奇异值,黄色高亮部分就是这句话优雅的数学表达形式

这里的投影操作实际可以不用,用了只会效果更好,作者在后面的理论证明中直接跳过了投影这个操作

实验结果

表现最好的那个就是NewSamp
NewSamp2

Stochastic L-BFGS算法

the limited-memory version of the classic BFGS algorithm

在牛顿法的迭代中, 需要计算Hessian矩阵的逆矩阵这一计算比较复杂,考虑用一个n阶矩阵 G k 近似代替 H k 1 。这就是拟牛顿法中基本想法,BFGS算法是最流行的拟牛顿算法。但是BFGS算法需要存储上一次迭代中的Hessian,这消耗大量内存,因而改良版的基于Hessian-vector的Limited BFGS算法提出。.最新的论文A Linearly-Convergent Stochastic L-BFGS Algorithm中加入了variance reduction随机优化, 让它能够处理一些稍大规模的优化问题,并且以较好的线性收敛

算法分析

在SVRG和SAGA算法提出后,随机算法各方面性能有了显著提升,基于L-BFGS的随机优化算法也相应提出,其在部分数据上的实验效果不亚于SVRG等主流算法。

个人感觉Stochastic L-BFGS主要由以下三点保证了他的优势:

  • 基于BFGS的拟牛顿法的良好算法性能
  • 基于Hessian-vector思想而不必存储Hessian矩阵以及减少计算复杂度.
  • 基于Variance Reduce的随机梯度估计矫正。

但是他有明显的劣势,有很多参数需要设置。这里有一个值得关注的地方, SLBFGS算法他的Hessian是一个类似于增量不断更新的, 并且和方差约减后的梯度相乘

算法流程

每m次计算一次全梯度,来减少variance
每L次算法更新一次Hessian矩阵,这里的更新利用了过去M次(Sj, Yj)的曲率信息
Sr记录过去2L次的平均方向
Yr是Sr和Hessian矩阵相乘得出的
L-BFGS

这里黄色高亮的部分就是variance reduction,这里可以说是L-BFGS加入了variance reduction,也反过来说是variance reduction加入了二阶信息,而这里采用了随机优化后的L-BFGS

Lissa

LiSSA: Algorithm 1 is a practical stochastic second-order algorithm based on a novel estimator of the Hessian inverse, leading to an efficient approximate Newton step (Equation 1). The estimator is based on the well known Taylor approximation of the inverse

Lissa 核心想法是通过Taylor来近似逆从而对Hessain逆进行采样
Taylor approximation

算法分析

LiSSA是一个具有实际应用价值的二阶随机算法,他为二阶优化算法提出一种新颖的思路。NewSamp是对通过子采样估计出一个较为精确的Hessian,然后通过矩阵分解得出Hessian的逆的近似。随机版本的L-BFGS则是基于拟牛顿思路,通过构造得出满足拟牛顿条件并和原Hessian的逆尽可能接近的矩阵。但是LiSSA则是通过对Hessian的逆的泰勒展开式,得出Hessian逆与Hessian的等式,再通过对Hessian的进行采样估计,来直接估计出Hessian的逆。LiSSA的思路完全不同于上述两种算法,同时LiSSA算法采用Hessian-vector product对形式因而对广义线性模型具有更加明显的优势。

算法流程

算法

这里S1表示采样数量的多少
S2表示一个采样中Taylor近似的深度
这里的X[i,j]表示的是梯度和 Hessain逆估计的乘积,是一个向量

高亮的部分其实就是之前Hessain逆的Taylor近似的递推形式,原理如下
递推

这里递推初始化是梯度, 相当于在原来的递推式子上面都乘以了梯度, 最后得出的就是迭代量,拟牛顿法中的p

这里用X向量可以简化运算

Lissa的另外一种理解

理解

这里通过 y = x x t 1 以及替换f(x)中的x, 并在点 x t 1 泰勒展开得到上式中的Q(y)表达式, 那么原本的求f(x)最小值等价于Q(y)最小值
Q(y)相当于是对f(x)的二阶近似, 此处转化为对Q(y)的求最值, 然后这是一个二次函数, 我们可以用一般梯度下降算法对此处求最值, 也就是 y t i + 1 的迭代式,这里他的形式和Lissa的迭代形式很像, 所以可以看做是Lissa的一种理解, 也可以理解Lissa能够获得线性收敛率的原因

二阶优化的问题

这里是师兄对我提的问题,我觉得很有意思,需要理解才行

为什么二阶方法快

图解
Deep learning via Hessian-free optimization中有简单提到, 当解处于一个类似于平原的时候, 普通梯度下降如果仍旧以原来的步伐走, 那么需要很久才能走出来, 如果此时乘以一个Hessain的逆, 那么可以想象这里的Hessain表示曲率. Hessain曲率偏小, 他的必然就会放大步伐

相反,如果梯度变化太快,如果仍旧原步伐, 很可能就来到一个很差的点, 乘以Hessain的逆,可以放慢步伐

文章中都说是考虑进来了曲率信息 是怎么考虑的?

Hessian矩阵是如何携带曲率信息的额?

参考文献
1. 《统计学习方法》 -李航
2. Second-Order Stochastic Optimization for Machine Learning in
Linear Time
3. Second-Order Stochastic Optimization for Machine Learning in
Linear Time
4. A Linearly-Convergent Stochastic L-BFGS Algorithm
5. Deep learning via Hessian-free optimization

猜你喜欢

转载自blog.csdn.net/xfzero/article/details/79591640