38

Multiclass SVM Loss笔记

 5 years ago
source link: http://blog.stupidme.me/2018/08/09/multiclass-svm-loss/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

此文章为 罗周杨 原创,转载请注明作者和出处

在前面的Linear Classify学习中,我们通过训练,可以得到参数 W ,那么,我们怎么评价这个 W 是否足够好呢?如果不好,我们该怎么调整呢?

这就需要我们定义一个 损失函数(loss or cost function) 来度量,并且通过最小化损失函数,来调整 W ,使我们的分类结果最准确。

对于每一对训练数据,我们可以定义一个损失函数,表示为: L_{i} ,那么所有训练数据的损失,则表示成平均损失:

L = \frac{1}{N}\sum_{i=1}^{N}L_{i}(f(x_{i},W),y_{i})

这个损失函数,表示了我们的 W 的好坏程度。

Multiclass SVM Loss

对于每一对训练数据 x_{i}y_{i} ,我们可以定义一个分数函数,用来评价我们的模型好坏程度:

s=f(x_{i},W)

那么我们的 Multiclass SVM Loss 可以表示为:

L_{i}=\sum_{j\neq y_{i}}\max(0,s_{j}-s_{y_{i}}+\Delta)

注:

Multiclass SVM的核心思想就是:分类正确的分数s0必须比任何一个分类错误的分数s1高出 \Delta ,否则损失为0

那么,对于所有的训练样本,我们可以得到损失函数:

L=\frac{1}{N}\sum_{i=1}^{N}\sum_{j\neq y_{i}}\max(0,s_{j}-s_{y_{i}}+\Delta)

s=f(x_{i};W)

所以可以得到损失函数:

L=\frac{1}{N}\sum_{i=1}^{N}\sum_{j\neq y_{i}}\max(0,f(x_{i};W)-f(x_{y_{i};W})+\Delta)

现在有一个问题,如果我们的损失函数max操作后,再平方一次,这样算是一个新的分类算法吗? 。平方有一个作用就是把差异放大。同理,还有其他类似的操作也可以达到类似的效果。

那么该如何选择呢?具体问题具体分析。

我们的Multiclass SVM的损失函数算是定义好了,但是上述损失函数存在一个问题**这样训练出来的权重 W 不唯一。

道理很简单,假设 W 能够让我们的分类全部正确,那么 2W 显然也可以让我们的分类全部正确,因为对于 2WW ,我们的损失函数中的 \Delta 没有改变,如果 2W 的分数函数是 W 的2倍,那么他们的差值也变成2倍,那么如果原来的差值大于 \Delta ,那么2倍的差值显然大于 \Delta ,也就是说 分类结果不会改变

显然,把 系数2 推广到其他数字,也是同样的道理。也就是说这种损失函数没办法确定一个唯一的 W ,使我们的结果最准确。

那么怎么办呢?

Regularization Loss

为了解决这个问题,我在原来的损失后面加上一项损失叫做 Regularization Loss

我们前面的损失函数,是和数据有关的损失,叫做 数据损失 ,我们加上的这一项损失,和数据无关,但是和权重 W 有关,我们叫做 Regularization ,它表示成 \lambda R(W)

从数学上也很容易理解,加上一项约束,能够表示更复杂的关系。我们的Regularization算是一种惩罚措施,能够对突出的值进行惩罚,使我们的模型表现更好。

那么我们的Regularization函数是什么样子的呢?和损失函数自己一样,我们的Regularization loss函数也有很多种表达。但是最常见的一种是 L2 Regularization

R(W)=\sum_{k}\sum_{l}W_{k,l}^2

意识很明确:对于权重的每一个值的平方和。

当然,还有其他的Regularization,例如:

L1:

R(W)=\sum_{k}\sum_{l}|W_{k,l}|

Elastic(L1+L2):

R(W)=\sum_{k}\sum_{l}\beta W_{k,l}^2+|W_{k,l}|

上面这几种不仅深度学习里面出现,一般的机器学习也很常见。当然常见的regularization除此之外,还有 Max Norm RegularizationDropout ,以及 Fancier:Batch normalization

那么看看我们最终的损失函数吧:

L=\frac{1}{N}\sum_{i=1}^{N}\sum_{j\neq y_{i}}[\max(0,f(x_{i};W)-f(x_{y_{i};W})+\Delta)]+\lambda\sum_{k}\sum_{l}W_{k,l}^2

联系我

个人公众号,你可能会感兴趣:

jA36neI.jpg!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK