支持向量机与铰链损失之间的关系是什么?

我和我的同事正在努力理解逻辑回归与支持向量机之间的区别。显然,它们优化的是不同的目标函数。支持向量机是否可以简单地描述为一个优化铰链损失的判别分类器?还是说它更为复杂?支持向量是如何起作用的?松弛变量又如何?为什么不能像构建深层神经网络那样构建深层支持向量机呢?


回答:

我将逐一回答这些问题

支持向量机是否可以简单地描述为一个优化铰链损失的判别分类器?

支持向量机只是一个优化铰链损失并带有L2正则化的线性分类器

还是说它更为复杂?

不,它“只是”这样,但是有不同的方式来看待这个模型,从而得出复杂而有趣的结论。特别是,这种特定的损失函数选择导致了极其高效的核化,这对于对数损失(逻辑回归)和均方误差(线性回归)来说是不成立的。此外,你可以展示非常重要的理论属性,例如与Vapnik-Chervonenkis维度减少相关的属性,这导致了过拟合的可能性更小。

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

  • 铰链:max(0, 1-py)
  • 对数:y log p
  • 均方误差:(p-y)^2

只有第一个具有这样的特性:一旦某样本被正确分类,它的惩罚为0。其余的即使正确分类样本,仍然会对你的线性模型进行惩罚。为什么?因为它们与回归的关系更大,而不是分类,它们想要的是完美的预测,而不仅仅是正确的分类。

支持向量是如何起作用的?

支持向量只是靠近决策边界的样本(宽泛地说)。对于线性情况,这并没有太大变化,但由于支持向量机的大部分力量在于其核化——因此支持向量变得极为重要。一旦引入核函数,由于铰链损失,支持向量机的解可以高效地获得,并且支持向量是训练集中唯一被记住的样本,从而用训练数据的子集构建非线性决策边界。

松弛变量又如何?

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

为什么不能像构建深层神经网络那样构建深层支持向量机呢?

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

总结如下:

  • 确实存在深层支持向量机,这只是一个典型的深层神经网络,顶层是支持向量机层。
  • 没有在中间插入支持向量机层这样的做法,因为训练标准实际上只应用于网络的输出。
  • 在深层网络中使用“典型”的支持向量机核作为激活函数并不流行,因为它们的局部性(与非常全局的relu或sigmoid相反)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注