【问题标题】:What's the relationship between an SVM and hinge loss?SVM 和铰链损失之间有什么关系?
【发布时间】:2016-03-23 09:36:19
【问题描述】:

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

【问题讨论】:

标签: machine-learning svm logistic-regression


【解决方案1】:

我会一次回答一件事

SVM 是否像简单地优化铰链损失的判别分类器一样简单?

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

还是比这更复杂?

不,这“只是”,但是有不同的方式来看待这个模型,从而得出复杂而有趣的结论。特别是,这种损失函数的特定选择导致非常有效的核化,这对于 log loss(逻辑回归)和 mse(线性回归)都不是这样。此外,您还可以展示非常重要的理论性质,例如与 Vapnik-Chervonenkis 降维相关的那些,从而降低过度拟合的可能性。

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

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

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

支持向量如何发挥作用?

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

松弛变量呢?

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

为什么你不能拥有深度 SVM,而你却不能拥有具有 sigmoid 激活函数的深度神经网络?

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

总结一下:

  • 有深度 SVM,简单来说,这是一个典型的深度神经网络,顶部有 SVM 层。
  • 没有将 SVM 层放在“中间”这样的事情,因为训练标准实际上只应用于网络的输出。
  • 使用“典型”SVM 内核作为激活函数在深度网络中并不流行,因为它们的局部性(相对于非常全局的 relu 或 sigmoid)

【讨论】:

  • 优秀的答案。这用一个简洁的解释解释了我所有的问题。谢谢你,我现在感觉聪明多了。
  • SVM 的全部力量来自效率?对我来说,它是最慢的之一,并且必须将内核矩阵保留在内存 + 整个训练集上,它也很重......(顺便说一句,可爱的解释)
  • 您不必必须将 gram 矩阵保存在内存中,这只是一个幼稚的解决方案。你可以即时计算它,你可以近似它,你可以高度并行化它等等。另请注意,你正在评论 2017 年的一个论点,当时人们不会训练 500B 语言模型,我们的数据集(通常)会小得多:))
猜你喜欢
  • 2017-03-23
  • 2019-09-09
  • 2019-01-14
  • 2021-09-09
  • 2018-06-10
  • 2022-11-03
  • 2020-05-20
  • 2018-08-09
  • 2013-10-30
相关资源
最近更新 更多