美文网首页程序员
损失函数和优化-损失函数(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)

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

  • 损失函数概述

    常用的损失函数 1.L1损失(绝对损失函数) 和 L2 损失(平方损失函数) L1范数损失函数,也被称为 最小绝对...

  • 损失函数和优化-损失函数(1)

    写在前面 这一节的内容比较多,仔细理解以及整理起来也着实相较之前多费了些力气,但这些力气都花得值得。 像这节中提到...

  • 3.1 损失函数和优化:损失函数

    用一个函数把W当做输入,然后看一下得分,定量地估计W的好坏,这个函数被称为“损失函数”。损失函数用于度量W的好坏。...

  • 深度学习中的各种优化算法

    优化算法的目的是为了优化损失函数,损失函数衡量的是模型与数据的偏离程度,主要思想是计算损失函数关于参数的导数(多个...

  • 【深度学习】

    1, 两个重要的函数:得分函数和损失函数损失函数: hinge损失,softmax 损失。hinge损失: max...

  • 机器学习:常见的损失函数

    损失函数简要介绍 0-1损失 绝对值损失 log对数损失函数 平方损失函数 指数损失函数 Hinge损失函数 损失...

  • 人工智能之数学(三) ------ 凸优化

    一.机器学习中的优化问题 损失函数 : 模型与实际数据匹配程度越好,损失函数就越小,如果相差较大,损失函数也会相对...

  • 数据挖掘算法基础—损失函数的说明

    1.关于损失函数的说明 损失函数是数据挖掘优化的基础,基本上对损失函数求个偏导,也就是我们说的梯度,就是优化目标函...

网友评论

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

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