摘要:本篇内容和大家一起学习下机器学习和深度学习中常用到的几种loss函数。

本文分享自华为云社区《【MindSpore易点通】网络实战之交叉熵类Loss函数》,作者:Skytier 。

本篇内容和大家一起学习下机器学习和深度学习中常用到的几种loss函数,根据计算分类方式以及场景的不同,我分为了以下三部分进行分析。

CrossEntropy Loss

交叉熵函数是在分类模型中常用的一种损失函数,其表达式为:

其中用到了信息熵的概念,信息量是一个事件发生所带来的信息,而信息熵则是在结果出来之前对可能产生的信息量的期望,考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。

因此我们可以得到信息熵的计算表达式为:

其中P(xi)表示为在时间点x的发生概率,信息熵是用来衡量事物不确定性的。信息熵越大,事物越具不确定性,事物越复杂。

可以理解为对于同一个随机变量x,有两个概率分布,判断这两个概率分布的差异。假设两个概率分布对应为p(x),q(x), 如何表示这两个分布的差异,我们可以使用信息熵判断,于是相对熵产生。

p(x)分布的信息熵为:

q(x)分布的信息熵为:

相对熵为:

p(x)为样本真实分布,q(x)为预测分布

于是得到相对熵公式为:

交叉熵的函数表示为:

我们观察可以看出,这里与相对熵较为相似,由于我们进行模型训练,有监督训练,样本标签已经确定,相当于真实的概率的分布P(x)已经得知,因此这边的为固定值,相当于常量,那么可以继续优化表达式。

在我们模型训练中完整的相对熵表达式为:

对于其做为损失函数,常量可以忽略,因此得到了交叉熵的表现形式。

对于在二分类损失函数中应用,交叉熵损失函数为以下形式。

了解完交叉熵的基本计算原理,下面关联下另一种以交叉熵为基础的loss函数:BCELoss、BCEWithLogitsLoss和softmax_cross_entropy_with_logits。

BCELoss和SoftMarginLoss

这两种函数都是基于交叉熵的二分类loss函数,所以放在一起分析。

BCELoss中文名称是二分类交叉熵损失,它是用于做二分类模型的损失函数,因为是二分类,可以用0、1表示两个类别。如果想用于多分类的模型,可以将类别拆分成两两一组进行使用。先来看下BCELoss的表达式。

式子中的pt表示模型的预测值;target表示真实值,;w是权重值,一般是1。因为用0、1表示两个类别,所以在预测值和真实值相同时,其中一项将会为0,上面这个表达式是计算的单个样本。当一个batch的N个样本时,还需要累加再取平均数。

SoftMarginLoss对于包含N个样本的batch数据D(x,y), x代表模型输出, y代表真实的类 ,表达式如下:

式子中的x.nelement( )代表x中元素的个数N

如果单个样本对应一个二分类,则x.nelement( )=N

如果单个样本对应M个二分类,则x.nelement( )=M∗N

我们通过累加前的单个加数来分析

·当x[i]与y[i]同号,即预测正确时,x[i]与y[i]乘积越大,那么loss会越小,分类确信度就会越高;

·同理,当x[i]与y[i]异号,即预测错误时,loss越大。

BCEWithLogitsLoss和softmax_cross_entropy_with_logits

BCEWithLogitsLoss将sigmoid操作和与BCELoss组合到了一起使用。计算过程和原理是与BCELoss类似的,在BCELoss的计算表达计算式的基础中增加一个sigmoid计算,表达式如下。

softmax_cross_entropy_with_logits是在交叉熵前做一次softmax计算。具体的执行流程大概分为两个部分:

第一部分是对网络模型最后一层的输出做一个softmax,softmax的用处通常是求取输出属于某一类的概率,对于单样本而言,输出就是一个num_classes 大小的向量([Y1,Y2,Y3,...]其中Y1,Y2,Y3,...分别代表了是属于该类的概率)。softmax的计算表达式如下:

第二部分是将softmax的输出向量[Y1,Y2,Y3,...]和样本的实际标签做一个交叉熵计算

y`i指实际标签中第i个的值;yi指softmax的输出向量[Y1,Y2,Y3...]中,第i个元素的值。从而可以计算出loss值。

总结

本篇首先对交叉熵原理做了解析,再基于交叉熵的基础,引出了第二部分BCELoss和SoftMarginLoss的二分类loss函数,以及第三部分可用于多分类场景的BCEWithLogitsLoss和softmax_cross_entropy_with_logits损失函数。

点击关注,第一时间了解华为云新鲜技术~

一起学习ML和DL中常用的几种loss函数相关推荐

  1. DL中常用的三种K-Lipschitz技术

    文章目录 Lipschitz continuity Weight clipping Gradient penalty Spectral Normalization 理论推导 Power iterati ...

  2. Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令

    ls 显示文件和目录列表 -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 touch 生成一个空文件 e ...

  3. ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练)

    ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练) 目录 模型训练评估中常用的两种方法代码实现 T1.留一法一次性切分训练 T2.K折交叉验证训 模型训练评估中 ...

  4. Python编程语言学习:for循环中常用方法经验技巧(利用enumerate函数对列表实现自带索引等)之详细攻略

    Python编程语言学习:for循环中常用方法经验技巧(利用enumerate函数对列表实现自带索引等)之详细攻略 目录 for循环中常用方法经验技巧 1.利用enumerate函数对列表实现for循 ...

  5. pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言     很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...

  6. python中常用的九种预处理方法

    本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...

  7. 数据处理中常用的Excel基本操作及函数

    数据处理中常用的Excel基本操作及函数-生信基础版 文章目录 数据处理中常用的Excel基本操作及函数-生信基础版 第一部分:键盘快捷键操作 一.CTRL系列 二.其他系列 第二部分:Excel函数 ...

  8. UML中常用的几种图

    浅谈UML中常用的几种图 1 UML简介 2 UML常见图分类 3 用况图(用例) 4 类图 简单类图使用 举例 5 其他辅助用图 时序图(顺序图) 协作图(Collaboration Diagram ...

  9. python数据预处理的方法_python中常用的九种数据预处理方法

    python中常用的九种预处理方法分享 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardizat ...

最新文章

  1. python九九乘法口诀表-python打出九九乘法口诀表
  2. Android异常与性能优化相关面试问题-内存管理面试问题详解
  3. VTK:Utilities之FilenameFunctions
  4. 第二部分 自动内存管理机制
  5. 自学软件测试!自学到什么程度可以出去找工作...拿到阿里offer才知道这就够用了...
  6. html5中加入音频,在H5场景中插入自定义音频和视频(任意画面)
  7. 系统架构师-基础到企业应用架构-系统建模[中篇](下)
  8. CentOS6.4 LVS+keepalived高可用负载均衡服务配置
  9. 什么是EJB?EJB到底是什么?
  10. QTcpSocket
  11. 加州大学洛杉机分校计算机科学,加州大学洛杉矶分校计算机科学排名第14(2020年TFE美国排名)...
  12. 计算机图形表示的原理
  13. 【深度】最新万字综述自动驾驶,深度解构核心技术!
  14. 汽车数据聚类分析——天池竞赛
  15. 一款APP从设计稿到切图过程全方位揭秘
  16. IECIE电子烟展——深圳第六届电子烟博览会
  17. 保险行业的“偿二代”
  18. Qt - 从零到壹的 打地鼠 游戏
  19. Android游戏源码合集(主要是AndEngine和Libgdx的)
  20. Kinect体感机器人(三)—— 空间向量法计算关节角度

热门文章

  1. android develope enviroment in mac os
  2. 亚航cookie加密 acw_sc_v3值
  3. 江苏事业单位招聘考计算机专业课,江苏事业单位专技岗-计算机类考情分析
  4. 我们将会长期的做改造星球?
  5. 解密中企动力:80余家公司近万人个个都干营销 不骗你
  6. BZOJ#4237. 稻草人
  7. 数据库主键采用整型还是字符串?
  8. 预告:今天(6月21日)20点,做客 刘润直播间 聊聊“进化的故事”
  9. 百度音乐非公开的api
  10. 【监控利器Prometheus】——Prometheus+Grafana监控服务器资源