一、前言

深度学习系列文章陆陆续续已经发了两篇,分别是激活函数篇和卷积篇,纯干货分享,想要入门深度学习的童鞋不容错过噢!书接上文,该篇文章来给大家介绍“ 选择对象的标准 ”-- 损失函数,损失函数种类繁多,各式各样,不仅包括单损失函数,而且也包括多损失函数,但是最常使用的还是经典的均方误差损失函数和交叉熵损失函数,所以本篇文章重点介绍这两种损失函数,至于其余单损失函数和多损失函数,我也会简单介绍一下,并提供相应的经典论文供大家自行阅读!

二、什么是损失函数、为什么使用损失函数

其实,我们在现实生活中会在无形之中已经为某些事情制作了判定标准,比如如果有人问你现在有多幸福,你会如何回答呢?一般的人可能会给出诸如“还可以吧”或者“不是那么幸福”等笼统的回答。如果有人回答“我现在的幸福指数是10.23”的话,可能会把人吓一跳吧。因为他用一个数值指标来评判自己的幸福程度。这里的幸福指数只是打个比方,实际上神经网络的学习也在做同样的事情。

神经网络的学习通过某个指标表示现在的状态。然后,以这个指标为基准,寻找最优权重参数。和刚刚那位以幸福指数为指引寻找“最优人生”的人一样,神经网络以某个指标为线索寻找最优权重参数。神经网络的学习中所用的指标称为损失函数(loss function)。这个损失函数可以使用任意函数,但一般用均方误差和交叉熵误差等。

损失函数是表示神经网络性能的“恶劣程度”的指标,即当前的神经网络对监督数据在多大程度上不拟合,在多大程度上不一致。以“性能的恶劣程度”为指标可能会使人感到不太自然,但是如果给损失函数乘上一个负值,就可以解释为“在多大程度上不坏”,即“性能有多好”。并且,“使性能的恶劣程度达到最小”和“使性能的优良程度达到最大”是等价的,不管是用“恶劣程度”还是“优良程度”,做的事情本质上都是一样的。

三、单损失函数

3.1 均方误差损失函数

可以用作神经网络损失函数的函数有很多,其中最有名的莫过于均方误差了,均方误差如下式所示:

yk是表示神经网络的输出,tk表示监督数据,k表示数据的维数。均方误差会计算神经网络的输出和正确解监督数据的各个元素之差的平方,再求总和。

3.2、交叉熵损失函数

相较于均方误差损失函数,交叉熵损失函数在实际应用中用的会更多,在这一年的学习研究深度学习过程中,看过的论文中,若使用单损失函数,绝大多数都会用到交叉熵损失;即使是多损失函数,交叉熵函数也会是其中一部分,这足以说明交叉熵函数在深度学习领域的重要地位。交叉熵损失函数如下式表示:

log表示以e为底数的自然对数(log e)。yk是神经网络的输出,tk是正确解标签。并且,tk中只有正确解标签的索引为1,其他均为0。

当然,另一种表示形式会将交叉熵损失解释的更加直白一些,另一种表示形式如下:

Note:(如何理解交叉熵损失,这很重要)

  • 当y=1时,C = -loga。我们肯定是想让-loga尽可能地小,这就意味着,loga要尽可能地大,这也意味着a要足够大,但a再大也不可能大于1,所以,我们想要a尽可能地接近1。

  • 当y=0时,C = -log(1-a)。我们肯定是想让-log(1-a)尽可能地小,这就意味着,log(1-a)要尽可能地大,这也意味着a要足够小,但a再小也不可能小于0,所以,我们想要a尽可能地接近0。

3.3 绝对值损失函数

绝对值损失函数是计算预测值与目标值的差的绝对值,该损失函数在深度神经网络中用的非常少,基本可以忽略不记了。

3.4 对数损失函数

对数损失函数的标准形式如下:

(1) log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。
(2) 健壮性不强,相比于hinge loss对噪声更敏感。
(3) 逻辑回归的损失函数就是log对数损失函数。
引用

3.5 指数损失函数

指数损失函数的定义如下:

该损失函数地特征是对离群点、噪声非常敏感。但经常用在AdaBoost算法中。

推荐论文

推荐的论文都是深度学习方面的经典论文,非常适合深度学习入门。论文的写法,如何做消融实验都值得大家去学习。这些论文中使用的损失函数绝大多数都是交叉熵损失函数,从这里足以看出交叉熵损失函数的重要之处。

《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》
《Network In Network》
《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
《Dense Fully Convolutional Network for Skin Lesion Segmentation》

四、多损失函数

多损失函数常用于多分枝的网络模型中。这些模型中,大多数都设计了两个分支,例如一个分支用来提取上下文特征信息,另一分支用于提取边缘信息,两者信息显然是不同的,所以需要设计两个损失函数分别来对网络模型进行计算。在这里,我会分享一些前沿的论文供大家参考阅读。

推荐论文

《Skin lesion segmentation via generative adversarial networks with dual discriminators》
《MATTHEWS CORRELATION COEFFICIENT LOSS FOR DEEP CONVOLUTIONAL NETWORKS: APPLICATION TO SKIN LESION SEGMENTATION》

参考文献

《深度学习入门 - 基于Python的理论与实现》
https://zhuanlan.zhihu.com/p/58883095
《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》
《Network In Network》
《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》
《Dense Fully Convolutional Network for Skin Lesion Segmentation》
《Skin lesion segmentation via generative adversarial networks with dual discriminators》
《MATTHEWS CORRELATION COEFFICIENT LOSS FOR DEEP CONVOLUTIONAL NETWORKS: APPLICATION TO SKIN LESION SEGMENTATION》

计划 – 深度学习系列

都2021年了,不会还有人连深度学习还不了解吧?(一)-- 激活函数篇
都2021年了,不会还有人连深度学习还不了解吧?(二)-- 卷积篇
都2021年了,不会还有人连深度学习还不了解吧?(三)-- 损失函数篇
都2021年了,不会还有人连深度学习还不了解吧?(四)-- 上采样篇
都2021年了,不会还有人连深度学习还不了解吧?(五)-- 下采样篇
都2021年了,不会还有人连深度学习还不了解吧?(六)-- Padding篇
都2021年了,不会还有人连深度学习还不了解吧?(七)-- 评估指标篇
都2021年了,不会还有人连深度学习还不了解吧?(八)-- 优化算法篇
都2021年了,不会还有人连深度学习还不了解吧?(九)-- 注意力机制篇
都2021年了,不会还有人连深度学习还不了解吧?(十)-- 数据归一化篇

觉得写的不错的话,欢迎点赞+评论+收藏,这对我帮助很大!

都2021年了,不会还有人连深度学习都不了解吧(三)- 损失函数篇相关推荐

  1. 都2021年了,不会还有人连深度学习都不了解吧(五)-- 下采样篇

    导读 该篇文章重点介绍CNN中下采样方式,下采样是CNN中必不可少的阶段之一,CNN中常用的下采样方式有平均池化和最大池化,同时平均池化和最大池化也是注意力机制的重要组件. 目前深度学习系列已经更新了 ...

  2. 都2021年了,不会还有人连深度学习都不了解吧(一)- 激活函数篇

    一.前言 本人目前研一,研究方向为基于深度学习的医学图像分割,转眼间已接触深度学习快1年,研一生活也即将结束,期间看了大量的英文文献,做了大量的实验,也算是对深度学习有了一个初步的了解吧.接下来的一段 ...

  3. 都2021年了,不会还有人连深度学习都不了解吧(二)- 卷积篇

    一.前言 上篇文章详细阐述了激活函数是什么.常用的激活函数有哪些以及为什么要使用激活函数,相信大家对此有了一定的了解.在此基础上,我们趁热打铁,继续学习深度学习其它必须的知识.该篇文章讲述卷积操作及其 ...

  4. 都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇

    导读 本篇文章主要介绍CNN中常见的填充方式Padding,Padding在CNN中用的很多,是CNN必不可少的组成部分,使用Padding的目的主要是为了调整输出的大小,是必须搞清楚的知识点.如果你 ...

  5. 都2021年了不会还有人用门禁卡吧!(手把手教你用手机代替门禁卡)

    目录 一.软硬件准备 NFC Tool 蓝牙版读卡器 安卓NFC手机 二.大致流程 三.详细步骤 0x01 NFC Tool 破解母卡获取Dump文件 0x02 NFC Tool 读取母卡卡号,写入非 ...

  6. 都2021年了,你还在考虑电赛飞行器赛题,备赛是否有必要用基于TI处理芯片的飞控问题?

    无名创新售后群问题节选 @无名小哥 能问下今年国赛会不会指定某一款飞控呀? 答:都2021年了,你还在考虑电赛飞行器赛题备赛是否有必要用基于TI处理芯片的飞控问题? 暂不论官方是否会限定TI芯片的飞控 ...

  7. 劲爆!有人不用深度学习做强AI?道翰天琼认知智能机器人平台API接口大脑为您揭秘

    劲爆!有人不用深度学习做强AI?道翰天琼认知智能机器人平台API接口大脑为您揭秘 认知智能是计算机科学的一个分支科学,是智能科学发展的高级阶段,它以人类认知体系为基础,以模仿人类核心能力为目标,以信息 ...

  8. Java培训深度学习都要学什么

    java的知识点有很多,如果是有java基础的同学,进行深度学习是非常有必要的,比较职场技能更新迭代非常的快,那么java培训深度学习都要学什么呢?来看看下面的详细介绍. Java培训深度学习都要学什 ...

  9. 开源后5个月,Google的深度学习都有哪些改变?

    开源后5个月,Google的深度学习都有哪些改变? 发布时间: 2016-4-17 13:37:05   2016年4月14日,Google发布了分布式TensorFlow.Google的博文介绍了T ...

最新文章

  1. 自动化运维——一键安装MySQL
  2. JavaScript模块化开发整理
  3. Java 高频面试题:聊一聊 JUC 下的 LinkedBlockingQueue
  4. 学php好不,怎么学好php
  5. 了解如何在20分钟内创建您的第一个Angular应用
  6. python找出录取率最高的年份_Python分析42年高考数据,告诉你高考为什么这么难?...
  7. android代码打开数据库,android – 如何正确关闭并重新打开Room数据库
  8. JVM学习-分代收集算法
  9. oracle 字符格式化,Oracle 字段格式化[日期,金额]
  10. 如何修改MySQL已有表的字符集
  11. QQ浏览器下拉词推广是什么?
  12. 1 源码安装Zabbix agent 3.4
  13. 别人推荐的一首好听的歌
  14. 把服务器sql数据库导出excel文件,从sql中导出到excel表格数据-如何把SQLServer表数据导出为Excel文件...
  15. 034. asp.netWeb用户控件之三通过用户控件实现用户注册和登录
  16. javascript毫秒计时器_JS制作计时器毫秒
  17. 高速串行收发器的预加重与均衡
  18. python研究背景与意义_课题研究的背景和意义
  19. 地址解析协议(ARP)
  20. 输入的数字或者英文字符间距都特别大,怎么解决

热门文章

  1. C# 获取utc时间,以及utc datetime 互相转化
  2. hibernate主配置文件的配置
  3. 「Python」10个python项目
  4. [译]Javascript数列的push和pop方法
  5. spark on mesos 两种运行模式
  6. 使用IDEA运行Spark程序
  7. hdu 1500 Chopsticks
  8. stdout和stderr标准输出的区别
  9. [云炬学英语]每日一句2020.8.28
  10. VTK修炼之道68:体绘制讨论_梯度不透明度传输函数