Q:损失函数有几种?原理是什么?有什么特点?

损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

  其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的Φ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θ值。下面主要列出几种常见的损失函数。

  理解:损失函数旨在表示出logit和label的差异程度,不同的损失函数有不同的表示意义,也就是在最小化损失函数过程中,logit逼近label的方式不同,得到的结果可能也不同。

1、分类任务损失

1.1   0-1 loss

0-1 loss是最原始的loss,它直接比较输出值与输入值是否相等,对于样本i,它的loss等于:

1.2  0熵与交叉熵loss

香农在1948年提出了“信息熵”的概念,它使用对数函数表示对不确定性的测量。熵越高,表示能传输的信息越多,熵越少,表示传输的信息越少,我们可以直接将熵理解为信息量。为什么选择对数函数而不是其他函数呢?首先,不确定性必须是概率P的单调递降函数,假设一个系统中各个离散事件互不相关,要求其总的不确定性等于各自不确定性之和,对数函数是满足这个要求的。将不确定性f定义为log(1/p)=-log(p),其中p是概率。

说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现出它的公式:

推导过程:

我们知道,在二分类问题模型:例如逻辑回归「Logistic Regression」、神经网络「Neural Network」等,真实样本的标签为 [0,1],分别表示负类和正类。模型的最后通常会经过一个 Sigmoid 函数,输出一个概率值,这个概率值反映了预测为正类的可能性:概率越大,可能性越大。

Sigmoid 函数的表达式和图形如下所示:

其中 s 是模型上一层的输出,Sigmoid 函数有这样的特点:s = 0 时,g(s) = 0.5;s >> 0 时, g ≈ 1,s << 0 时,g ≈ 0。显然,g(s) 将前一级的线性输出映射到 [0,1] 之间的数值概率上。这里的 g(s) 就是交叉熵公式中的模型预测输出 。

我们说了,预测输出即 Sigmoid 函数的输出表征了当前样本标签为 1 的概率:

很明显,当前样本标签为 0 的概率就可以表达成:

重点来了,如果我们从极大似然性的角度出发,把上面两种情况整合到一起:

不懂极大似然估计也没关系。我们可以这么来看:

当真实样本标签 y = 0 时,上面式子第一项就为 1,概率等式转化为:

当真实样本标签 y = 1 时,上面式子第二项就为 1,概率等式转化为:

两种情况下概率表达式跟之前的完全一致,只不过我们把两种情况整合在一起了。

重点看一下整合之后的概率表达式,我们希望的是概率 P(y|x) 越大越好。首先,我们对 P(y|x) 引入 log 函数,因为 log 运算并不会影响函数本身的单调性。则有:

我们希望 log P(y|x) 越大越好,反过来,只要 log P(y|x) 的负值 -log P(y|x) 越小就行了。那我们就可以引入损失函数,且令 Loss = -log P(y|x)即可。则得到损失函数为:

非常简单,我们已经推导出了单个样本的损失函数,是如果是计算 N 个样本的总的损失函数,只要将 N 个 Loss 叠加起来就可以了:

这样,我们已经完整地实现了交叉熵损失函数的推导过程。

1.3 softmax loss及其变种

假如log loss中的f(xij)的表现形式是softmax概率的形式,那么交叉熵loss就是我们熟知的softmax with cross-entropy loss,简称softmax loss,所以说softmax loss只是交叉熵的一个特例。

softmax loss被广泛用于分类分割等任务,而且发展出了很多的变种,有针对不平衡样本问题的weighted softmax loss, focal loss,针对蒸馏学习的soft softmax loss,促进类内更加紧凑的L-softmax Loss等一系列改进,早在一年前就撰写过综述如下:

【技术综述】一文道尽softmax loss及其变种

1.3.1 softmax loss

原始的softmax loss非常优雅,简洁,被广泛用于分类问题。它的特点就是优化类间的距离非常棒,但是优化类内距离时比较弱。

鉴于此,就有了很多对softmax loss的改进,下面一一道来。

1.3.2 weighted softmax loss【1】

这第一个改进就是weighted,怎么说?假如我们是一个分类问题,只有两类,但是两类的样本数目差距非常之大。比如边缘检测问题,这个时候,明显边缘像素的重要性是比非边缘像素大的,此时可以针对性的对样本进行加权。wc就是这个权重,像刚才所说,c=0代表边缘像素,c=1代表非边缘像素,则我们可以令w0=1,w1=0.001,即加大边缘像素的权重。

1.3.3 soft softmax loss【2】

当T=1时,就是softmax的定义,当T>1,就称之为soft softmax,T越大,因为Zk产生的概率差异就会越小。

1.3.4  Large-Margin Softmax Loss【3】称为L-Softmax loss

1.3.5 angular softmax loss【4】也称A-softmax loss

它就是在large margin softmax loss的基础上添加了两个限制条件||W||=1和b=0,使得预测仅取决于W和x之间的角度θ

1.3.6 L2-constrained softmax loss【5】

1.3.7 additive margin softmax loss【7】

1.3.8 argface additive angular margin【8】

到此可以说为了改进softmax loss用尽了手段了,至于有没有用,具体效果大家去尝试吧,附上未完整的GitHub链接。

https://github.com/longpeng2008/Caffe_Long

1.4、KL散度

Kullback和Leibler定义了KL散度用于估计两个分布的相似性,定义如下;

Dkl是非负的,只有当p与q处处相等时,才会等于0。上面的式子也等价于

其中l(p,p)是分布p的熵,而l(p,q)就是p和q的交叉熵。假如p是一个已知的分布,则熵是一个常数,此时dkl(p|q)与l(p,q)也就是交叉熵只有一个常数的差异,两者是等价的。

同时值得注意的是,KL散度并不是一个对称的loss,即dkl(p|q) != dkl(q|p),KL散度常被用于生成式模型。

1.5 Hinge loss

Hinge loss主要用于支持向量机中,它的称呼来源于损失的形状,定义如下:

如果分类正确,loss=0,如果错误则为1-f(x),所以它是一个分段不光滑的曲线。Hinge loss被用来解SVM问题中的间距最大化问题。

1.6 Exponential loss与Logistic loss

Exponential loss是一个指数形式的loss,它的特点就是梯度比较大,主要用于Adaboost集成学习算法中,定义如下:

logistic loss取了Exponential loss的对数形式,它的定义如下:

logistic loss 梯度相对变化更加平缓。

此外还有sigmoid cross_entropy_loss,可以被用于多标签分类任务或者不需要创建类间竞争机制的分类任务,在Mask RCNN中就被用了。

以上就涵盖了大部分常用的分类任务损失,多半都是对数的形式,这是由信息熵的定义,参数似然估计的本质决定的。

2. 回归任务损失

在回归任务中,回归的结果是一些整数或者实数,并没有先验的概率密度分布,常使用的loss是L1 loss和L2 loss。

2.1、L1 loss

Mean absolute loss(MAE)也被称为L1 Loss,是以绝对误差作为距离:

由于L1 loss具有稀疏性,为了惩罚较大的值,因此常常将其作为正则项添加到其他loss中作为约束。L1 loss的最大问题是梯度在零点不平滑,导致会跳过极小值。

2.2、L2 loss

Mean Squared Loss/ Quadratic Loss(MSE loss)也被称为L2 loss,或欧氏距离,它以误差的平方和作为距离:

L2 loss也常常作为正则项。当预测值与目标值相差很大时, 梯度容易爆炸,因为梯度里包含了x−t。

2.3、L1 loss与L2 loss的改进

原始的L1 loss和L2 loss都有缺陷,比如L1 loss的最大问题是梯度不平滑,而L2 loss的最大问题是容易梯度爆炸,所以研究者们对其提出了很多的改进。

在faster rcnn框架中,使用了smooth L1 loss来综合L1与L2 loss的优点,定义如下:

在x比较小时,上式等价于L2 loss,保持平滑。在x比较大时,上式等价于L1 loss,可以限制数值的大小。

为了增强L2 loss对噪声(离群点)的鲁棒性,研究者提出了Huber loss,定义如下:

Huber对于离群点非常的有效,它同时结合了L1与L2的优点,不过多出来了一个delta参数需要进行训练。

2.4、perceptual loss

L2 loss逐步被人眼感知loss所取代。人眼感知loss也被称为perceptual loss(感知损失),它与MSE采用图像像素进行求差的不同之处在于所计算的空间不再是图像空间。

研究者们常使用VGG等网络的特征,令φ来表示损失网络,Cj表示网络的第j层,CjHjWj表示第j层的特征图的大小,感知损失的定义如下:

可以看出,它有与L2 loss同样的形式,只是计算的空间被转换到了特征空间。

深度学习——知识点总结3(损失函数Loss)相关推荐

  1. 经验 | 深度学习中常见的损失函数(loss function)总结

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:机器学习算法与自然语言处理出品    单位 | 哈工大SCIR实 ...

  2. yolo-mask的损失函数l包含三部分_【AI初识境】深度学习中常用的损失函数有哪些?...

    这是专栏<AI初识境>的第11篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 今天来说说深度学习中常见的损失函数(loss),覆盖分类,回归任务以及生成对抗网络,有了目 ...

  3. 「AI初识境」深度学习中常用的损失函数有哪些?

    https://www.toutiao.com/a6695152940425937411/ 这是专栏<AI初识境>的第11篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. ...

  4. 【AI初识境】深度学习中常用的损失函数有哪些?

    这是专栏<AI初识境>的第11篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 今天来说说深度学习中常见的损失函数(loss),覆盖分类,回归任务以及生成对抗网络,有了目 ...

  5. 深度学习中常见的损失函数

    文章来源于AI的那些事儿,作者黄鸿波 2018年我出版了<TensorFlow进阶指南 基础.算法与应用>这本书,今天我把这本书中关于常见的损失函数这一节的内容公开出来,希望能对大家有所帮 ...

  6. 深度学习知识点总结-激活函数

    深度学习知识点总结 专栏链接: https://blog.csdn.net/qq_39707285/article/details/124005405 本专栏主要总结深度学习中的知识点,从各大数据集比 ...

  7. 深度学习知识点总结:深度学习常用公式总结

    深度学习知识点总结 专栏链接: 深度学习知识点总结_Mr.小梅的博客-CSDN博客 本专栏主要总结深度学习中的知识点,从各大数据集比赛开始,介绍历年冠军算法:同时总结深度学习中重要的知识点,包括损失函 ...

  8. 深度学习机器学习面试题——损失函数

    深度学习机器学习面试题--损失函数 提示:重要的深度学习机器学习面试题,大厂可能会在笔试面试中考 说一下你了解的损失函数? 说说你平时都用过什么损失函数,各自什么特点? 交叉熵函数与最大似然函数的联系 ...

  9. 【深度学习知识点扫盲】病态、病态条件

    [深度学习知识点扫盲]病态.病态条件 文章目录 [深度学习知识点扫盲]病态.病态条件 花书内容 1. 概念定义 1.1 病态/ 良态问题 1.2 适定/ 非适定问题 2.数学解释 2.1 良态/病态矩 ...

最新文章

  1. android .9图制作
  2. python编程和plc哪个好-plc和python
  3. 一个项目中能提出哪些数据库优化_如何有效进行项目集管理?
  4. ITK:计算图像中的局部噪声
  5. debug LUW1 - do binding workflow
  6. html:(6):body标签和p标签
  7. 特征筛选11——ExtraTrees筛选特征
  8. React中受控组件和非受控组件
  9. C#分布式缓存二:Asp.Net中使用Couchbase
  10. 【渝粤教育】电大中专中药制剂学作业 题库
  11. 计算机电子电路原理图,电路图讲解 电路图基础知识【图】
  12. 【海康威视】WPF客户端二次开发:【1】监控视频画面预览(SDK初始化、设备登录、监控画面预览)
  13. 人工智能数据标注案例之人脸识别案例
  14. php 图片抠图,php imagick api蒙板抠图
  15. foobar2000播放APE格式音乐的解决办法
  16. total-vm anon-rss file-rss shmem-rss含义
  17. android什么叫服务器,Android系统中神秘的Bootloader究竟是什么
  18. PPT中如何将图片灰化(黑白化)
  19. python解题时间_1小时还是30秒?Python给你的另一种数据处理选择
  20. 如何理解照片后期处理

热门文章

  1. 前端学习笔记 HTML5 保姆级教程
  2. HarmonyOS第三方组件——鸿蒙图片裁剪组件ohos-Image-Cropper
  3. PC/UVa 题号: 110106/10033 Interpreter (解释器)题解 c语言版
  4. 毕业转行,在一家公司零基础开始学习seo,记录贴
  5. layui省市县三级联动,如何设置select选择时,值为省市县code码
  6. 战舰帝国服务器维护,【图片】9月17日更新公告亲爱的司令官:《战舰帝国》于9月17日维护,成功更新后可以获得200个钻石的更新补偿_战舰帝国吧_百度贴吧...
  7. 没有对比就没有伤害:《明日之后》竟成最良心国产末日手游?
  8. stimulsoft oracle,报表仪表设计器Stimulsoft的处理数据功能
  9. MyBatis知识汇总(第四篇)分页:LIMT(SQL方式),RowBounds(Java对象方式)
  10. win101909要不要更新_近年最稳的Win10更新?Win10 1909值得升级吗