二次规划与拟牛顿法BFGS

时间:2014-05-22 16:22:42

标签: svm mathematical-optimization

昨天,我发布了一个关于SVM原始表格实施的一般概念的问题:

Support Vector Machine Primal Form Implementation

和“lejlot”帮助我理解我正在解决的是QP问题。

但我仍然不明白我的目标函数如何表达为QP问题

http://en.wikipedia.org/wiki/Support_vector_machine#Primal_form

我也不明白QP和Quasi-Newton方法是如何相关的

我所知道的是Quasi-Newton方法将解决我认为是由

制定的QP问题

我的目标函数(我看不到连接)

有人可以带我走过这个吗?

1 个答案:

答案 0 :(得分:0)

对于SVM,目标是找到一个分类器。此问题可以用您尝试最小化的函数表示。 我们首先考虑 Newton迭代。牛顿迭代是一种数值方法,用于找到形式为f(x)= 0的问题的解。 我们可以通过以下迭代解决数字,而不是解决它

x^k+1 = x^k - DF(x)^-1 * F(x)

此处x^k+1是第k + 1次迭代,DF(x)^-1是F(x)的雅可比行列的倒数,而x是迭代中的第k个x。

只要我们在步长(delta x)方面取得进展或者我们的函数值接近0到很好的程度,就会运行此更新。可以相应地选择终止标准。

现在考虑解决问题f'(x)=0。如果我们为此制定牛顿迭代,我们得到

x^k+1 = x - HF(x)^-1 * DF(x)

其中HF(x)^-1是Hessian矩阵的倒数,DF(x)是函数F的梯度。注意,我们讨论的是n维分析,不能只取符号。我们必须采用矩阵的逆矩阵。

现在我们面临一些问题:在每一步中,我们必须为更新的x计算Hessian矩阵,这是非常低效的。我们还必须求解线性方程组,即y = HF(x)^-1 * DF(x)HF(x)*y = DF(x)。 因此,我们不是在每次迭代中计算Hessian,而是从Hessian的初始猜测(可能是单位矩阵)开始,并在每次迭代后执行一级更新。对于确切的公式,请查看here

那么这如何链接到SVM?

当你看到你想要最小化的函数时,你可以形成一个原始问题,你可以将其重新表述为双拉格朗日问题,它是凸的并且可以用数值求解。这篇文章都有很好的记载,因此我不会尝试以较差的质量来表达公式。

但这个想法如下:如果你有双重问题,你可以用数字解决它。有多个求解器可用。在您发布的链接中,他们建议使用坐标下降,这样可以一次解决一个坐标的优化问题。或者你可以使用subgradient下降。另一种方法是使用L-BFGS。这在this论文中得到了很好的解释。

另一种解决类似问题的流行算法是ADMM(乘法器的交替方向法)。为了使用ADMM,您必须将给定问题重新表述为可提供相同解决方案的同等问题,但具有正确的ADMM格式。为此,我建议在ADMM上阅读Boyds脚本。

一般情况下:首先,了解您尝试最小化的功能,然后选择最适合的数值方法。在这种情况下,亚维度下降和坐标下降最适合,如维基百科链接中所述。