二阶随机优化算法小结

二阶随机优化算法

标签(空格分隔): 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

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二阶一致性算法是一种用于求解多元高阶方程的算法,在Matlab中也可以使用这种算法进行计算。首先,我们需要定义一个高阶方程,可以使用符号计算工具箱中的sym函数来定义该方程,在定义过程中可以使用syms函数指定变量为符号变量。 接下来,我们需要使用solve函数来求解该方程,该函数可以接收多元高阶方程作为输入,并返回方程的所有解。但是,在实际计算中,高阶方程的求解可能会非常困难或耗时较长。在这种情况下,可以考虑使用二阶一致性算法来进行求解。 二阶一致性算法的基本思想是将高阶方程逐步化简为一系列二阶方程,然后使用求解二阶方程的方法来逐步求解原始方程。具体步骤如下: 1. 将高阶方程化为一系列二阶方程,可以使用subexpr函数将方程中的多项式进行拆分和化简。 2. 对于每个二阶方程进行求解,可以使用一般的求解二阶方程的方法,例如使用方程求根函数roots。 3. 将每个二阶方程的解代入原始方程,求解得到系数约束条件。 4. 根据系数约束条件,构建线性方程组,并通过求解线性方程组得到系数的解。 5. 将系数的解代入原始方程,求解得到方程的解。 需要注意的是,二阶一致性算法在求解高阶方程时可能存在误差,因此在得到方程的解之后,需要进行误差分析和后处理来验证解的准确性和可靠性。 总之,Matlab中可以使用二阶一致性算法来求解高阶方程。该算法的基本思想是将高阶方程逐步化简为二阶方程,并使用一般的二阶方程求解方法来逐步求解原始方程。通过逐步求解,可以得到方程的解。在实际计算中,需要注意误差分析和后处理来验证解的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值