点击蓝字关注我们

AI研习图书馆,发现不一样的精彩世界

学习
笔记

常见损失函数总结-图像分类篇【上】

一、前言在深度学习中,损失函数扮演着至关重要的角色。通过最小化损失函数,使模型达到收敛状态,减少模型预测值的误差。因此,不同的损失函数,对模型的影响是十分重大的。接下来,重点总结一下在实习工作实践中经常用到的损失函数:

  • 图像分类:softmax,weighted softmax loss,focal loss,soft softmax loss,L-softmax Loss,Hinge,Exponential loss与Logistic loss
  • 目标检测:Focal loss,L1/L2损失,IOU Loss,GIOU ,DIOU,CIOU
  • 图像识别:Triplet Loss,Center Loss,Sphereface,Cosface,Arcface

什么是损失函数?深度学习中的损失函数(loss function)是用来评估模型的预测值-f(x)与真实值-y的不一致程度,损失函数越小,代表模型的鲁棒性越好,损失函数能指导模型学习。 二、常见图像分类损失函数2.1、0-1 loss

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

当标签与预测类别相等时,loss为0,否则为1。可以看出,0-1 loss无法对x进行求导,在依赖于反向传播的深度学习任务中,无法被使用,0-1 loss更多的是启发新的loss的产生。2.2、熵与交叉熵loss物理学中的熵,表示一个热力学系统的无序程度。为了解决对信息的量化度量问题,香农在1948年提出了“信息熵”的概念,它使用对数函数表示对不确定性的测量。熵越高,表示能传输的信息越多,熵越少,表示传输的信息越少,可以直接将熵理解为信息量。

对于单个的信息源,信源的平均不确定性就是单个符号不确定性-logpi的统计平均值,信息熵的定义如下:

假设有两个概率分布p(x)和q(x),其中p是已知的分布,q是未知的分布,则其交叉熵函数是两个分布的互信息,可以反应其相关程度。至此,引出了分类任务中最常用的loss,即log loss,又名交叉熵loss,后统一称为交叉熵:

在图像分类中,经常使用softmax+交叉熵作为损失函数:

其中p(x)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">p(x)表示真实概率分布,q(x)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">q(x)表示预测概率分布。交叉熵损失函数通过缩小两个概率分布的差异,来使预测概率分布尽可能达到真实概率分布。后来,谷歌在交叉熵的基础上,提出了label smoothing(标签平滑)

在实际中,需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:

  1. 无法保证模型的泛化能力,容易造成过拟合;
  2. 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难适应,会造成模型过于相信预测的类别。

因此,为了减少这种过于自信,同时减缓人为标注的误差带来的影响,需要对p(x)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">p(x)进行变化:其中,δ(k,y)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">δ(k,y)为Dirac函数,u(k)" role="presentation" style=" display: inline; line-height: normal; word-spacing: normal; overflow-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">u(k)为均匀分布。简单而言,降低标签y的置信度,提高其余类别的置信度。从而,交叉熵变成:

2.3、softmax loss及其变种假如log loss中的f(x)的表现形式是softmax概率的形式,那么交叉熵loss就是熟知的softmax with cross-entropy loss,简称softmax loss,所以说softmax loss只是交叉熵的一个特例。softmax loss被广泛用于分类分割等任务,且发展出了很多的变种,有针对不平衡样本问题的weighted softmax loss,focal loss,针对蒸馏学习的soft softmax loss,促进类内更加紧凑的L-softmax Loss等一系列的改进。

限于篇幅,更多精彩,请关注下期内容~

推荐阅读文章

[1] AI入门-人工智能的前世今生[2] AI入门-深度学习综述[3] AI入门-计算机视觉学习指南[附资源][4] 深度学习框架总结—国际篇[5] 深度学习-CNN结构设计技巧[6] 资源分享-深度学习及数据分析等资源合集

[7] 今日分享—统计学习方法

[8] 算法总结—人脸检测算法

Bilibili : 洛必达数数CSDN博客:算法之美DLGitHub:statisticszhang关注AI研习图书馆,发现不一样的精彩世界

display函数怎么使用_损失函数—深度学习常见损失函数总结【图像分类|上】相关推荐

  1. 多分类svm的hinge loss公式推导_损失函数—深度学习常见损失函数总结【图像分类|下】...

    点击蓝字关注我们 AI研习图书馆,发现不一样的精彩世界 学习 笔记 常见损失函数总结-图像分类下篇 一.前言 在深度学习中,损失函数扮演着至关重要的角色.通过最小化损失函数,使模型达到收敛状态,减少模 ...

  2. 深度学习常见损失函数总结+Pytroch实现

    文章目录 一.引言 二.损失函数 1.均方差损失(Mean Squared Error Loss) 2.平均绝对误差损失(Mean Absolute Error Loss) 3.交叉熵(Cross E ...

  3. 深度学习机器臂控制_人工智能深度学习算法在工业机械臂上的应用

    从功能上来说,你这个应用非常适合采用深度学习,事实上,深度学习本质上就是用来做分类识别的,尤其是针对零件与零件之间,图像上差异比较小的时候(比如你需要自动分拣A,B,C三种零件,但其形状差别很小),更 ...

  4. 神经网络模型中class的forward函数何时调用_总结深度学习PyTorch神经网络箱使用...

    ↑ 点击蓝字 关注极市平台来源丨计算机视觉联盟编辑丨极市平台 极市导读 本文介绍了Pytorch神经网络箱的使用,包括核心组件.神经网络实例.构建方法.优化器比较等内容,非常全面.>>加入 ...

  5. 获取分辨率函数是什么_使用深度学习来实现超分辨率的介绍

    编辑:zero 关注 搜罗最好玩的计算机视觉论文和应用,AI算法与图像处理 微信公众号,获得第一手计算机视觉相关信息 本文转载自:公众号:AI公园 作者:Bharath Raj 编译:ronghuai ...

  6. 深度学习模型建立过程_所有深度学习都是统计模型的建立

    深度学习模型建立过程 Deep learning is often used to make predictions for data driven analysis. But what are th ...

  7. 深度学习将灰度图着色_通过深度学习为视频着色

    深度学习将灰度图着色 零本地设置/ DeOldify / Colab笔记本 (Zero Local Setup / DeOldify / Colab Notebook) "Haal Kais ...

  8. 深度学习:在图像上找到手势_使用深度学习的人类情绪和手势检测器:第1部分

    深度学习:在图像上找到手势 情感手势检测 (Emotion Gesture Detection) Has anyone ever wondered looking at someone and tri ...

  9. 深度学习之损失函数小结

    深度学习之损失函数小结 开篇 损失函数在深度学习中的作用相当于引领模型学习的方式,其重要程度不言而喻: 下图为一些损失函数的关系: Sigmoid和Softmax损失 Sigmoid公式:S(x)=1 ...

最新文章

  1. 【MATLAB】单元数组类型
  2. 巩固一下C语言中的指针
  3. jQuery中实现全选功能时使用attr( )改变checked值只能生效一次的问题
  4. 【鬼网络】之Linux网络设置
  5. 应理解计算机专业的学科特点,职业高中计算机专业测验试题编写的策略初探.doc...
  6. 调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...
  7. Java并发编程-ReadWriteLock读写锁
  8. 语义分割网络-Segnet
  9. Unity3D射击小游戏Demo开发
  10. 北京邮电大学计算机考研拟录取名单,北京邮电大学研究生拟录取名单2021公示...
  11. react+ant启动服务时太慢解决方案
  12. 浅析爱心代码的绘制思路——python实现
  13. 物联网芯片的协议之WLAN及其调制
  14. 福利来了 | 开发者社区布道师计划,奖品丰厚
  15. ajax发送请求的数据结构
  16. Scrapy爬取IT桔子死亡公司库及资本机构数据
  17. 华为云CDN,给企业发展按下“加速键”
  18. iMX6ULL RTL8723BU WiFi蓝牙模块
  19. 2022-2028全球军用级电脑行业调研及趋势分析报告
  20. 职场选择,也许该考虑一下“增长黑客”?

热门文章

  1. java的set接口_Java集合-Set接口
  2. 电气期刊论文实现:热电联产经济调度【有代码】
  3. 免疫算法(二进制)算例(源码实现)
  4. wxWidgets:操作档案manipulate archives的示例应用程序
  5. boost::units模块单位/数量操作和转换的测试程序
  6. boost::statechart模块实现无效转换测试
  7. boost::smart_ptr模块智能指针测试程序
  8. boost::mpi模块对gather() 和gatherv() 集合的测试
  9. boost::mp11::mp_fold相关用法的测试程序
  10. boost::fusion::filter_view用法的测试程序