内核化SVM是否有可能实现Gradient Descent(如果有的话,人们为什么要使用二次编程)?


21

人们在处理带内核的SVM时为什么使用二次编程技术(例如SMO)?梯度下降有什么问题?不能与内核一起使用还是速度太慢(为什么?)。

这里有一些上下文:为了更好地理解SVM,我使用了Gradient Descent通过以下成本函数来训练线性SVM分类器:

J(w,b)=Ci=1mmax(0,1y(i)(wtx(i)+b))+12wtw

我正在使用以下符号:

  • w是模型的特征权重,是其偏差参数。b
  • x(i)是第训练实例的特征向量。ith
  • y(i)是实例的目标类(-1或1)。ith
  • m是训练实例的数量。
  • C是正则化超参数。

我从该方程式导出了一个(子)梯度向量(关于和),而Gradient Descent效果很好。wb

现在,我想解决非线性问题。我可以在成本函数中用替换所有点积,其中是内核函数(例如高斯RBF,),然后使用演算来导出(子)梯度向量并继续进行Gradescent Descent?üŤvķüvķķüv=Ë-γü-v2

如果太慢,那为什么呢?成本函数不是凸的吗?还是因为梯度变化太快(Lipschitz不是连续的),所以算法在下降过程中会不断跳越谷底,因此收敛非常慢?但是,即使那样,又怎么会比二次编程的时间复杂度O({n_ \ text {samples}} ^ 2 \ times n_ \ text {features})更糟Øñ样本2×ñ特征呢?如果是局部最小值的问题,采用模拟退火的随机GD不能克服它们吗?

Answers:


6

将为和,其中,其中是原始输入矩阵的映射,。这样就可以通过原始公式解决SVM。使用损失的符号:瓦特 φ X= Üķ 瓦特瓦特 = ûķ Ù ķ = φ X φ Xφ X Xw=ϕ(x)uwtϕ(x)=utKwtw=utKuK=ϕ(x)tϕ(x)ϕ(x)x

J(w,b)=Ci=1mmax(0,1y(i)(utK(i)+b))+12utKu

× ù× 1K是一个矩阵,而是一个矩阵。两者都不是无限的。m×mu×1个

确实,对偶通常可以更快地解决,但是原始模型也具有优势,例如近似解(在对偶公式中不能保证)。


现在,为什么双重优势如此突出并不明显:[1]

过去十年中大多数研究都涉及双重优化的历史原因尚不清楚。我们认为这是因为SVM最初是在其硬边际公式中引入的[Boser et al。,1992],因此双重优化(由于约束)似乎更为自然。但是,一般而言,即使训练数据是可分离的,也应首选软边际支持向量机:由于考虑了更多的训练点,因此决策边界更加稳健[Chapelle et al。,2000]。


Chapelle(2007)认为,原始优化和对偶优化的时间复杂度均为,最坏的情况是,但他们分析了二次和近似铰链损耗,因此没有适当的铰链损耗,因为它无法与牛顿法一起使用。 ø Ñ 3 Øññsv+ñsv3Øñ3


[1] Chapelle,O.(2007)。训练原始的支持向量机。神经计算,19(5),1155-1178。


1
+1您是否还可以扩展时间复杂性
seanv507 '16

@ seanv507,谢谢,的确,我应该已经解决了,我将尽快更新此答案。
Firebug

4

如果将变换应用于所有输入权重向量(),则会得到以下成本函数:x i ϕx(i)

J(w,b)=Ci=1mmax(0,1y(i)(wtϕ(x(i))+b))+12wtw

内核伎俩内容替换通过。由于权重向量是转化,所述核技巧不能被施加到上面的成本函数ķ Ûv瓦特ϕ(u)tϕ(v)K(u,v)w

上面的成本函数对应于SVM目标的原始形式

minw,b,ζCi=1mζ(i)+12wtw

受和 forζ 0 = 1 y(i)(wtϕ(x(i))+b)1ζ(i)ζ(i)0一世=1个

双数形式是:

minα12αtQα1tα

受制于和对于0 α c ^=12ytα=00αiCi=1,2,,m

其中是一个全为1的向量,是一个矩阵,元素为。Q× Q Ĵ = ý Ý Ĵ φ X ·&φ X Ĵ 1Qm×mQij=y(i)y(j)ϕ(x(i))tϕ(x(j))

现在,我们可以通过如下计算来使用内核技巧:Qij

Qij=y(i)y(j)K(X(一世XĴ

因此,内核技巧只能用于SVM问题的对偶形式(加上一些其他算法,例如逻辑回归)。

现在,您可以使用现有的二次编程库来解决此问题,或者使用拉格朗日乘数来获取无约束函数(双重成本函数),然后使用梯度下降或任何其他优化技术来搜索最小值。最有效的方法之一似乎是libsvm库实现的SMO算法(用于内核化SVM)。


1
我不确定您为什么标记您的答案“社区Wiki”。这似乎是对您问题的完美答案。
Sycorax说恢复Monica

谢谢@GeneralAbrial。我将答案标记为Community Wiki,以避免在提出问题之前怀疑自己知道答案。
MiniQuark

1
您应该始终做自己认为正确的事情,但是提出并回答自己的问题是完全正确的做法。
Sycorax说恢复Monica

等一下,您不能将权重向量转换为以便和,其中,然后优化样本权重?瓦特 φ X = Üķ 瓦特瓦特 = ûķ Ù ķ = φ φ ùw=ϕ(x)uwtϕ(x)=uKwtw=utKuK=ϕtϕu
Firebug

2

我可能是错的,但是我看不到如何用内核替换点积而不将其变成双重问题。

内核将输入隐式映射到某个特征空间,其中变为,然后损失函数变为 如果应用了高斯核,则 将具有无限尺寸,。xϕ(x)
J(w,b)=Ci=1mmax(0,1y(i)(wtϕ(x(i))+b))+12wtw
ϕ(x(i))w

直接使用梯度下降来优化无限维向量似乎很困难。

更新
Firebug的答案提供了一种在原始公式中用内核替换点积的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.