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