美文网首页程序员
损失函数和优化-损失函数(2)

损失函数和优化-损失函数(2)

作者: 慕木七 | 来源:发表于2018-08-06 16:36 被阅读198次

    引言

    这一节的笔记,主要讲解除了SVM以外的另一种损失函数——softmax损失函数。

    softmax损失函数

    如上一小节的最后所言,在softmax损失函数中,我们将赋予这些得分一些额外的含义,并且会用这些分数针对我们的类别计算概率分布。

    在谈论softmax损失函数之前,我们先简单说明一下它的由来,它是由逻辑斯谛函数推广得到的。逻辑斯谛函数主要用来处理二分类的问题,而softmax则适用于处理多分类的问题。

    选择使用softmax分类器或者多个逻辑斯谛分类器取决于所有类别之间是否互斥。互斥选择前者,不互斥有交叉则选择后者。

    softmax损失函数

    我们将用softmax损失函数处理分数,即先进行指数化处理以使它们转化为正数,然后用这些指数的和对分数进行归一化处理。

    这些分数经过softmax损失函数处理后,我们能得到所有类别的相应的概率分布(介于0-1),而所有类别的概率和相加为1。

    比较由这个函数推导出的概率分布和真实的概率分布(目标概率分布)。如对猫的图片来说,猫这一类别的目标概率应该为1,其他类别的目标概率应该都是0。

    我们需要做的,就是尽量使我们通过softmax损失函数计算出的概率分布匹配上述的目标概率分布,即正确的类别应该具有几乎全部的概率。

    我们可以用多种方式来列这个方程,可以在目标概率分布与计算出的概率分布间计算KL散度以比较它们的差异,或可以做最大似然估计。

    而在此处,我们希望正确类别的概率应该比较高并接近1,即损失函数的计算结果为真实类别概率的对数再取负数。

    因为log函数单调,所以当我们针对正确类别最大化log P,即希望函数值增大,但损失函数是用来度量坏的程度而非好的程度,所以增加一个负号,使它更加符合预设。即针对正确类别的SVM损失函数将会变成-log P。(此处的log实际为ln)

    使用softmax对分数进行转化处理,并得到正确类别的损失函数是-log P

    实例说明

    以猫类别为例的softmax回归

    将使用线性分类器后得到的3个类别分数,先进行指数化处理得到正数,再进行归一化处理,三个类别的概率分布相加为1,此时我们可以得到Li=-log(P),其中P为猫这一正确分类的分数,即0.13,计算得到结果:0.89。

    softmax回归问题集

    1. softmax损失函数的最小值和最大值是多少?
    • 答案:最小值为0,最大值为无穷大。
    • 解释:概率P的取值范围为0-1。
    • 拓展:在实际操作中,如果想要让正确分类的概率为1,需要使正确分类的分数趋近于无穷大,而其他分类的分数趋近于无穷小。计算机并不擅长∞操作,因此损失函数为0,只能是理论上的最小损失,而最大损失为无穷大。
    1. 如果所有的S都很小,近乎于0,损失值是多少?
    • 答案:-ln(1/C) = lnC。
    • 解释:如果分数都很小,且接近于0,那么经过指数化和归一化处理后,所有类别得到的概率分布几乎相等,为1/C,其中C为类别数。

    两种损失函数的比较

    损失函数间的比较

    在线性分类上面,二者的设置看起来是相等的,我们将W和输入向量相乘得到分值向量。二者的区别就在于,如何解释这些分值进而量化度量到底有多坏。

    所以对于SVM来说,是要深入研究并观察正确分类的分值和不正确分类的分值的边距。

    而对于softmax或交叉熵损失,我们计算概率分布,以得到正确分类的负对数概率。

    Softmax vs. SVM
    • 在SVM损失函数中,正确类别(如车)的分数会比其他类别的分数高很多,即使改变了这个分数,也不会改变结果。因为SVM只关心正确的分值要比不正确的分值高出一个安全边际。

    • softmax损失函数的目标是使概率质量函数(离散分布值)等于1,所以,即使给正确分类很高的分数,同时给不正确的分类很低的分数,softmax依然会在正确分类上积累越来越多的概率质量,从而继续使正确分类的分数逼近无穷大,使不正确分类的分值逼近负无穷。

    在实际应用中:

    • SVM在当数据点超过阈值成为正确分类后即停止,不再关心该数据点。

    • softmax总是试图不断提高每个数据点,使他们的表现越来越好。

    在实践中选择哪个函数并不会造成很大影响,至少在很多深度学习的应用中他们的执行很相似,但我们还是应该记住这些差异。

    概括

    概括
    • 我们有一些xs和ys的数据集。
    • 用线性分类器得到了一个分数函数,根据我们的输入x计算分数S。
    • 用损失函数(softmax或SVM或其他)来定量计算我们的预测跟实际目标y相比有多糟糕。
    • 我们会给损失函数增加一个正则项,试图在匹配训练数据和更简单的模型间进行权衡。
      以上过程我们通常称之为监督学习。

    在我们接下来的学习中,将需要指定

    • 结构上可能很复杂的函数f
    • 衡量算法做得如何的损失函数
    • 给定任意值的参数
    • 惩罚模型的复杂性的正则项
      将这些结合起来找到最终令损失函数最小化的参数W。

    问题在于,我们如何才能发现这个使损失函数最小化的参数W?

    这就引导出我们下一节的主题——优化。

    相关文章

      网友评论

        本文标题:损失函数和优化-损失函数(2)

        本文链接:https://www.haomeiwen.com/subject/pdzwvftx.html