如何通过反向传播训练 SVM?

机器算法验证 机器学习 神经网络 支持向量机 梯度下降 反向传播
2022-03-21 00:48:01

我想知道是否可以使用反向传播来训练一个 SVM(比如一个线性的,让事情变得简单)?

目前,我遇到了障碍,因为我只能考虑将分类器的输出写为

f(x;θ,b)=sgn(θx(b+1))=sgn(g(x;θ,b))

因此,当我们尝试计算“向后传递”(传播误差)时,我们得到

Ex=Ef(x;θ,b)f(x;θ,b)x=Ef(x;θ,b)sgn(g(x;θ,b))g(x;θ,b)g(x;θ,b)x=δdsgn(z)dzθ=δ0θ=0
因为导数sgn(x)
dsgn(x)dx={0if x02δ(x)if x=0

同样,我们发现E/θ=E/b=0,这意味着我们不能传回任何信息,也不能执行梯度更新!

是什么赋予了?

2个回答

您是正确的,如果您尝试直接优化 SVM 在训练案例上的准确性,也称为 0-1 损失,那么梯度就会消失。这就是为什么人们不这样做。:)

但是,您尝试做的还不是真正的 SVM。它只是一个通用的线性分类器。当您将 0-1 损失函数替换为称为铰链损失的凸代理时,特别会出现 SVM ;这相当于边际最大化的概念,这是 SVM 概念的核心。这个损失函数(几乎)是可微的;唯一的问题是,如果任何输出恰好位于铰链点,(a)在最合理的假设下发生的概率为零,并且(b)那么您可以使用 0 或 1 作为导数(或介于两者之间的任何值),在在这种情况下,您在技术上是在进行次梯度下降。

由于您在谈论反向传播,我假设您至少对优化神经网络有点熟悉。神经网络分类器也会出现同样的问题。这就是为什么人们也在那里使用其他损失函数的原因。

如果您只对线性情况感兴趣,那么逻辑回归 (LR) 是一个更好的选择,因为它既是凸的又是分析的(如果您对正则化感兴趣,您可能需要对它进行脊)。但是,当您选择非线性时,就会出现棘手的部分。对于非线性情况,没有合理的方法可以同时保持凸性和分析性,您需要牺牲两者之一。在神经网络中,您牺牲了凸性,而在支持向量机中,您牺牲了全态。

严格来说,LR和SVM之间没有区别,svms只是预测一个点位于线的哪一边,LRs还考虑到它们离边界有多远(在边界-边线上,sigmoid给你的概率是0.5在 LR 的情况下)。支持向量机被迫做出这种妥协,因为对于非线性内核,与弯曲超平面的距离直觉(代数变体是一个更好的术语)与线性情况不同,实际上是解决与超曲面的最短距离的问题到一个特定的点非常困难(比 SVM 本身更难),但另一方面,Vapnik 意识到仅仅预测一个点位于边界的哪一侧是非常容易的,就像在 O(1) 时间内一样。这是 SVM 背后的真正洞察力,使其成为统计学习理论中唯一可用的凸优化替代方案。但我的感觉是你牺牲太多了,全态性和概率性都丢失了。但是对于特定情况,例如地面实况支持向量机是非常可靠的,并且与非凸模型不同,它也是完全可证伪的科学模型。

Tldr:是的,平均值定理可以拯救非解析函数。在凸非解析情况下,平均值定理变成不等式,在子梯度上设置一些边界条件,使用它来进行子梯度下降