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

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


回答:

我将逐一回答这些问题

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

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

还是说它更为复杂?

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

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

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

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

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

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

松弛变量又如何?

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

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

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

总结如下:

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

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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