SVM 和铰链损失之间有什么关系?

What's the relationship between an SVM and hinge loss?

我和我的同事正在努力思考逻辑回归和 SVM 之间的区别。显然他们正在优化不同的 objective 函数。 SVM 是否像说它是一个仅优化铰链损失的判别分类器一样简单?还是比这更复杂?支持向量如何发挥作用?松弛变量呢?为什么你不能拥有深度 SVM,就像你不能拥有带有 sigmoid 激活函数的深度神经网络一样?

我会一次回答一个问题

Is an SVM as simple as saying it's a discriminative classifier that simply optimizes the hinge loss?

SVM 只是一个线性分类器,使用 L2 正则化优化铰链损失

Or is it more complex than that?

不,是 "just",但是可以通过不同的方式查看此模型,从而得出复杂而有趣的结论。特别是,损失函数的这种特定选择导致 极其有效的内核化 ,这对于对数损失(逻辑回归)和 mse(线性回归)都不成立。此外,您还可以展示非常重要的理论特性,例如与 Vapnik-Chervonenkis 降维相关的特性,从而减少过度拟合的可能性。

直观的看这三种常见的损失:

  • 铰链:max(0, 1-py)
  • 日志:y log p
  • mse: (p-y)^2

只有第一个具有 属性 一旦某些东西被正确分类 - 它有 0 个惩罚。即使它正确地对样本进行了分类,所有剩余的仍然会惩罚您的线性模型。为什么?因为他们与回归的关系比分类更相关,所以他们想要完美预测,而不仅仅是正确.

How do the support vectors come into play?

支持向量只是放置在决策边界附近的样本(粗略地说)。对于线性情况,它变化不大,但由于 SVM 的大部分功能在于 它的内核化 - SV 非常重要。一旦你引入内核,由于铰链损失,SVM解决方案可以高效获得,并且支持向量是唯一从训练集中记住的样本,从而用训练数据的子集构建非线性决策边界。

What about the slack variables?

这只是铰链损失的另一种定义,当您想要核化解决方案并显示凸性时更有用。

Why can't you have deep SVM's the way you can't you have a deep neural network with sigmoid activation functions?

可以,但是由于 SVM 不是概率模型,其训练可能有点棘手。此外,SVM 的全部优势来自 效率 全局解决方案 ,一旦创建深度网络,两者都会丢失。然而,有这样的模型,特别是 SVM(具有平方铰链损失)现在通常是深度网络最顶层的选择 - 因此整个优化实际上是一个深度 SVM。在两者之间添加更多层与 SVM 或其他成本无关——它们完全由它们的激活定义,例如,您可以使用 RBF 激活函数,只是它已被多次证明会导致弱模型(局部特征)被检测到)。

总结一下:

  • 有深度 SVM,简单地说,这是一个典型的深度神经网络,上面有 SVM 层。
  • 没有放置 SVM 层这样的东西 "in the middle",因为训练标准实际上只应用于网络的输出。
  • 由于 局部性(与非常全局的 relu 或 sigmoid 相反),"typical"SVM 核作为激活函数在深度网络中并不流行