【问题标题】:Quadratic Programming and quasi newton method BFGS二次规划和拟牛顿法 BFGS
【发布时间】:2014-07-11 19:35:01
【问题描述】:

昨天发了一个关于SVM Primal Form Implementation的一般概念的问题:

Support Vector Machine Primal Form Implementation

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

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

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

我也不明白 QP 和 Quasi-Newton 方法有什么关系

我所知道的是准牛顿法将解决我的 QP 问题,该问题应该是由

我的目标函数(我没有看到联系)

谁能帮我看看这个吗?

【问题讨论】:

  • 这个问题似乎与帮助中心定义的范围内的编程无关。
  • 在这里提问会好很多:math.stackexchange.com
  • 感谢 Dave 的有用评论

标签: svm mathematical-optimization


【解决方案1】:

对于 SVM,目标是找到一个分类器。这个问题可以用你试图最小化的函数来表达。 让我们首先考虑牛顿迭代。牛顿迭代是一种求解形式为 f(x) = 0 的问题的数值方法。 除了分析,我们可以通过以下迭代numerically解决它:

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 矩阵的初始猜测(可能是单位矩阵)开始,并在每次迭代后执行 rank 1 更新。有关确切的公式,请查看here

那么这如何链接到 SVM 的?

当您查看您试图最小化的函数时,您可以制定一个原始问题,您可以将其重新表述为一个对偶拉格朗日问题,该问题是凸的并且可以数值求解。文章中都有详细记录,因此我不会尝试以不太好的质量表达公式。

但想法是这样的:如果你有一个对偶问题,你可以用数字来解决它。有多个求解器可用。在您发布的链接中,他们推荐坐标下降,它一次解决了一个坐标的优化问题。或者你可以使用次梯度下降。另一种方法是使用 L-BFGS。 this 论文中对此进行了很好的解释。

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

一般来说:首先,了解您要最小化的函数,然后选择最适合的数值方法。在这种情况下,次梯度下降和坐标下降最适合,如 Wikipedia 链接中所述。

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    相关资源
    最近更新 更多