svm损失函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svm损失函数相关的知识,希望对你有一定的参考价值。

作者:杜客
链接:https://zhuanlan.zhihu.com/p/20945670
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

SVM的损失函数定义如下:


技术分享

举例:用一个例子演示公式是如何计算的。假设有3个分类,并且得到了分值技术分享。其中第一个类别是正确类别,即技术分享。同时假设技术分享是10(后面会详细介绍该超参数)。上面的公式是将所有不正确分类(技术分享)加起来,所以我们得到两个部分:

技术分享

可以看到第一个部分结果是0,这是因为[-7-13+10]得到的是负数,经过技术分享函数处理后得到0。这一对类别分数和标签的损失值是0,这是因为正确分类的得分13与错误分类的得分-7的差为20,高于边界值10。而SVM只关心差距至少要大于10,更大的差值还是算作损失值为0。第二个部分计算[11-13+10]得到8。虽然正确分类的得分比不正确分类的得分要高(13>11),但是比10的边界值还是小了,分差只有2,这就是为什么损失值等于8。简而言之,SVM的损失函数想要正确分类类别技术分享的分数比不正确类别分数高,而且至少要高技术分享。如果不满足这点,就开始计算损失值。

那么在这次的模型中,我们面对的是线性评分函数(技术分享),所以我们可以将损失函数的公式稍微改写一下:


技术分享

其中技术分享是权重技术分享的第j行,被变形为列向量。然而,一旦开始考虑更复杂的评分函数技术分享公式,这样做就不是必须的了。


在结束这一小节前,还必须提一下的属于是关于0的阀值:技术分享函数,它常被称为折叶损失(hinge loss)。有时候会听到人们使用平方折叶损失SVM(即L2-SVM),它使用的是技术分享,将更强烈(平方地而不是线性地)地惩罚过界的边界值。不使用平方是更标准的版本,但是在某些数据集中,平方折叶损失会工作得更好。可以通过交叉验证来决定到底使用哪个

以上是关于svm损失函数的主要内容,如果未能解决你的问题,请参考以下文章

损失函数

损失函数

svm损失函数

计算 SVM 损失函数的梯度

多分类SVM损失函数: Multiclass SVM loss

SVM 的损失函数的梯度