为什么要在拟合 SVM 时遇到对偶问题?

机器算法验证 支持向量机
2022-01-19 02:15:51

给定数据点x1,,xnRd和标签y1,,yn{1,1},硬边距 SVM 原始问题是

minimizew,w012wTw
s.t.i:yi(wTxi+w0)1

这是一个二次程序d+1要优化的变量和i约束。双重的

maximizeαi=1nαi12i=1nj=1nyiyjαiαjxiTxj
s.t.i:αi0i=1nyiαi=0
是一个二次规划n+1要优化的变量和n不平等和n等式约束。

在实现硬边距 SVM 时,为什么我要解决对偶问题而不是原始问题?原始问题对我来说看起来更“直观”,我不需要关心对偶差距、库恩-塔克条件等。

如果解决双重问题对我来说是有意义的dn,但我怀疑有更好的理由。是这样吗?

4个回答

根据@user765195 的回答(谢谢!)中引用的讲义,最明显的原因似乎是:

解决原始问题,我们得到最优的w,但αi. 为了对查询点进行分类x我们需要显式计算标量积wTx,如果_d很大。

解决对偶问题,我们得到αi(在哪里αi=0除了几个点之外的所有点 - 支持向量)。为了对查询点进行分类x, 我们计算

wTx+w0=(i=1nαiyixi)Tx+w0=i=1nαiyixi,x+w0

如果只有很少的支持向量,则该术语的计算效率非常高。此外,由于我们现在有一个只涉及数据向量的标量积,我们可以应用内核技巧

阅读第 13 页的第二段以及在这些注释中进行的讨论:

马腾宇和吴恩达。第五部分:内核方法CS229 讲义2020 年 10 月 7 日。

从数值优化的角度来看,这就是为什么对偶公式很有吸引力的一个原因。您可以在以下论文中找到详细信息:

Hsieh, C.-J.、Chang, K.-W.、Lin, C.-J.、Keerthi, SS 和 Sundararajan, S.,“大规模线性 SVM 的双坐标下降法”,Proceedings of the第 25 届机器学习国际会议,赫尔辛基,2008 年。

对偶公式涉及单个仿射等式约束和 n 个有界约束。

1. 仿射等式约束可以从对偶公式中“消除”。

这可以通过简单地查看您的数据来完成Rd+1通过嵌入RdRd+1由添加一个“1" 坐标到每个数据点,即RdRd+1:(a1,...,ad)(a1,...,ad,1).

对训练集中的所有点执行此操作将重铸线性可分性问题Rd+1并消除常数项w0来自您的分类器,这反过来又消除了对偶的仿射等式约束。

2. 到第 1 点,对偶可以很容易地转换为一个凸二次优化问题,其约束只是有界约束。

3. 现在可以有效地解决对偶问题,即通过对偶坐标下降算法产生 epsilon 最优解O(log(1ε)).

这是通过注意固定除一个以外的所有 alpha 产生一个封闭形式的解决方案来完成的。然后,您可以一个一个地循环遍历所有 alpha(例如,随机选择一个,修复所有其他 alpha,计算封闭形式的解决方案)。可以证明,您将因此“相当快”地获得一个接近最优的解决方案(参见上述论文中的定理 1)。

从优化的角度来看,对偶问题具有吸引力还有许多其他原因,其中一些利用了它只有一个仿射等式约束(剩余约束都是有界约束)这一事实,而另一些则利用了在解对偶问题的“通常大多数阿尔法”为零(对应于支持向量的非零阿尔法)。

您可以从 Stephen Wright在 Computational Learning Workshop (2009)上的演讲中对 SVM 的数值优化注意事项有一个很好的概述。

PS:我是新来的。抱歉在本网站上不擅长使用数学符号。

在我看来,预测时间的论点(双重解决方案的预测比原始解决方案的预测更快)是无稽之谈。仅当您首先使用线性内核时,比较才有意义,因为否则您无法使用原始内核进行预测(或者至少我不清楚它是如何工作的)。但是如果你有一个线性内核,那么计算内核点积,并且对于对偶来说比对原始的要慢得多,因为你需要至少计算 2 个(通常更多的点)。然后依靠简单的点积会快得多wTx. 事实上,如果你有一个线性内核,你只需计算w明确地将其用于预测,就像您使用原始解决方案一样。

两个真正的论点是:

  1. 可以应用内核技巧(其他人已经提到过)

  2. 对偶问题的优化过程更加直接,并且可以通过梯度下降轻松完成

我将阐明第二点,因为对此很少有人说。

原始问题的主要问题是尽管它具有凸性,但它不能使用标准梯度下降轻松优化。如果您尝试使用梯度下降方法来解决这两个问题(原始问题和对偶问题),您可以轻松检测到这一点。顺便提一句。你制定的对偶也有一个问题,但这可以如下解决。

实际上,优化原始算法存在三件烦人的事情,至少在尝试使用梯度下降来解决它时:

  1. 没有平凡的有效初始解事实上,已经有一个初始解决方案必须是一个完美的分离器。您可以使用感知器算法找到一个。在对偶中,您可以初始化所有αi:=0,这也是常见的做法。值得注意的是,这对应于设置w=0,这不是原始的可行解决方案。然而,在对偶中这不是问题,因为只有最优解需要在原始中是可行的。

  2. 标准梯度更新规则ww+η没有多大意义,即使问题是凸的,也不会帮助您收敛到最佳状态。问题是梯度w本身,所以你实际上只会缩短或拉伸w但不改变它的方向。但后者通常是必要的,除非您的初始解决方案已经具有正确的斜率。

  3. 门槛w0目标函数中不出现,其梯度为0,但应根据变化进行更新w.

综上所述,我个人不优化 primal 的原因是,即使它是凸的,也没有直接的梯度下降方法可以做到这一点。注意这个问题在软边距分类器中并不普遍,因为在这里你可以初始化w=0并且还有更合理的梯度步骤。问题只是处理线性约束很烦人。

你提出的对偶问题在用GD解决时也很烦人,因为你仍然有平衡约束yiαi=0. 您可以在添加时摆脱它1列到数据并将其视为w. 如果你这样做,你就不再有拉格朗日最优的条件,并且可以通过简单的批量梯度下降轻松有效地完成优化。