svm损失和交叉熵损失

本文介绍了多分类SVM的损失函数及其正则化,解释了为何需要正则化避免W不唯一的问题。同时,探讨了交叉熵损失在Softmax分类器中的应用,说明了两者在性能差异上的微妙区别。SVM关注的是分类间隔,而交叉熵损失则追求更精确的类别概率。
摘要由CSDN通过智能技术生成

多分类svm损失

损失函数:
Li=jyimax(0,sjsyi+Δ)
解释:
SVM想要正确分类的分数 syi 比不正确分类的分数 sj 至少要高 Δ
举例来说:假设通过分类我们得到一个分数向量,s=[13,−7,11],正确的分类是第一个, Δ 是10,那么损失等于:
Li=max(0,713+10)+max(0,1113+10)
第二个分类的损失是0,因为[-7 - 13 + 10]=-10<0,正确的分类13得分比不正确的分类得分-7要高20,大于10,因此损失是0.
第三个分类的损失是8,因为[11 - 13 + 10]=8>0,正确的分类13得分比不正确的分类得分11要高2,小于10,因此损失是8.
也就是说,SVM想要正确分类的分数 syi 比不正确分类的分数 sj 至少要高 Δ

这里写图片描述

Multiclass SVM 想要正确分类的分数syi比不正确分类的分数 sj 至少要高 Δ 。如果某一类的得分落在红色区域,或者是大于正确分类得分,则产生损失,如果再绿色区域,则不产生损失。

正则化

这种损失函数有一个bug。假设我们有了一个W,可以使得损失是0,但是任何λW(λ>1)都会使得损失等于0,例如正确的分类比不正确分类得分高10,那么使得W变成2W,那么正确的分类比不正确分类得分高20,因此损失还是0.也就是说,W不唯一。为了使得W唯一,我们可以将损失函数加上正则化惩罚。通常是L2范式,它会惩罚过大的权重:
L=1NiLi+λklW2k,l
防止过拟合

交叉熵损失

交叉熵损失通常适用于Softmax 分类器。损失函数:
Li=log(efyijefj)
举例,和上一个例子一样通过分类器得到分数向量s=[13,−7,11],正确的分类是第一个。首先将得分取指数,然后归一化,假如得到[0.3,0.1,0.6],则损失是 log(0.3) 。我们可以看出如果第一个分类的得分是1,其他两个分类得分是0,则损失是0.因此,这个损失函数想要正确分类的得分越高越好。
交叉熵函数是衡量真实分布p与假设分布q之间的不一致性:

H(p,q)=xp(x)logq(x)
真实分布p=[0,…1,…,0],假设分布 q=efyi/jefj ,因为H(p,q)=H(p)+DKL(p||q),而H(p)=0,因此最小化交叉熵损失和最小化KL散度一样。
实战技巧:
因为 efyi jefj 可能很大,所以实际中乘以一个 C :
efyijefj=CefyiCjefj=efyi+logCjefj+logC
通常 logC=maxjfj .
代码:

f = np.array([123, 456, 789]) # example with 3 classes and each having large scores
p = np.exp(f) / np.sum(np.exp(f)) # Bad: Numeric problem, potential blowup

# instead: first shift the values of f so that the highest number is 0:
f -= np.max(f) # f becomes [-666, -333, 0]
p = np.exp(f) / np.sum(np.exp(f)) # safe to do, gives the correct answer

比较

这里写图片描述

SVM和Softmax之间的性能差异通常很小,不同的人对于哪个分类器工作得更好会有不同的意见。与Softmax分类器相比,SVM是一个更局部的目标,可以被认为是一个错误或一个特征。考虑一个实现分数[10,-2,3]和第一类是正确的例子。 SVM(例如,具有期望的余量Δ=1)将看到,与其他类相比,正确的类已经具有高于余量的分数,并且它将计算零损失。 SVM不关心个别分数的细节:如果它们改为[10,-100,-100]或[10,9,9],则SVM将是无关的,因为满足1的余量,因此损失是零。然而,这些情况不等同于Softmax分类器,它将为分数[10,9,9]比[10,-100,-100]积累更高的损失。换句话说,Softmax分类器从不完全满意它产生的分数:正确的类可以总是具有较高的概率,并且不正确的类总是较低的概率,并且损失将总是变得更好。然而,一旦满足边缘,SVM就ok了,并且它不会精确地超越该约束的精确得分。这可以直观地被认为是一个特征:例如,可能花费大部分“努力”在将车辆与卡车分离的困难问题上的汽车分类器不应该受到青蛙例子的影响,其已经指定非常低分数到,并且可能聚集在数据的完全不同侧。

原文地址

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值