引言

  • 该文只是简单为本人学习交叉熵损失函数以及focal loss等相关问题的一个补充,所以介绍的不够全面,待后续持续补充

一句话概括就是:

BCE用于“是不是”问题,例如LR输出概率,明天下雨or不下雨的概率;CE用于“是哪个”问题,比如多分类问题。

BCE与CE表达形式:

BCE:BCE+sigmoid

  • sigmoid一般用于二分类问题,下方y^即为sigmoid形式(单个样本)
    y ^ = 1 1 + e − Z (1.1) \hat{y} = \frac{1}{1+e^{-Z}}\tag{1.1} y^​=1+e−Z1​(1.1)
    Z = w x (1.2) Z = wx\tag{1.2} Z=wx(1.2)
    L B C E = − [ y ∗ ln ⁡ y ^ + ( 1 − y ) ln ⁡ ( 1 − y ^ ) ] (1.3) L_{BCE} = -[y*\ln{\hat{y}} + (1-y)\ln{(1- \hat{y}})]\tag{1.3} LBCE​=−[y∗lny^​+(1−y)ln(1−y^​)](1.3)
  • 这个就是交叉上损失函数一般见到的形式,y是真实标签值,y^是估计值
  • 可以参考参考资料,本文是交叉熵损失函数的补充,此处不做细节展示。

CE:CE+softmax

  • softmax函数是sigmoid函数的一个延伸,用于多分类(单个样本)
    y ^ = e − x i ∑ k = 1 n e − x k (2.1) \hat{y} = \frac{e^{-x_{i}}}{\sum_{k=1}^ne^{-x_{k}}}\tag{2.1} y^​=∑k=1n​e−xk​e−xi​​(2.1)
  • k是样本编号,i是样本类别,因为场景是多分类
    L C E = − y ln ⁡ y ^ (2.2) L_{CE} = - y\ln{\hat{y}}\tag{2.2} LCE​=−ylny^​(2.2)
  • 注意多分类中y是one-hot编码

关于CE损失函数的梯度变化

  • 下图为多个样本的情况推导,BCE的推导可以看参考资料

总结

  • 在分类问题中,如果遇到类别间不互斥的情况,只能采用“sigmoid+BCE”;如果遇到类别间互斥的情况(只能有一类胜出),“sigmoid+BCE”化为多个二分类问题与“softmax+CE”直接进行分类都是有被用到的方法
  • 仅看损失形式上,BCE好像既考虑了正样本损失又考虑了负样本的损失,而CE只考虑了正样本损失。 但其实,二者所使用的激活函数不同,前者使用sigmoid,后者使用softmax,softmax其形式上本身就考虑负类的信息在里面。
  • CE在二分类情况下本质上和BCE没有太大的区别,但可能优化上有细微不同。

参考资料

  • 本文参考资料
    https://zhuanlan.zhihu.com/p/471360465
    https://zhuanlan.zhihu.com/p/421830591
  • 相关文章(交叉熵&focal loss&ghm)
    https://blog.csdn.net/Lian_Ge_Blog/article/details/125979891?spm=1001.2014.3001.5501
    https://blog.csdn.net/Lian_Ge_Blog/article/details/126060517?spm=1001.2014.3001.5501

CE Loss与BCE Loss的区别相关推荐

  1. CE Loss,BCE Loss以及Focal Loss的原理理解

    一.交叉熵损失函数(CE Loss,BCE Loss) 最开始理解交叉熵损失函数被自己搞的晕头转向的,最后发现是对随机变量的理解有偏差,不知道有没有读者和我有着一样的困惑,所以在本文开始之前,先介绍一 ...

  2. Pytorch Feature loss与Perceptual Loss的实现

    本文主要改动自:https://github.com/sowmyay/medium/blob/master/CV-LossFunctions.ipynb 首先回顾下特征损失(Feature loss) ...

  3. BCE loss和 CE理解

    1. BCE loss:Binary Cross Entropy Loss BCE loss pytorch官网链接 1.1 解释 pytorch中调用如下.设置weight,使得不同类别的损失权值不 ...

  4. BCE loss与交叉熵损失区别

    参考:https://blog.csdn.net/f156207495/article/details/88874911 以前我浏览博客的时候记得别人说过,BCELoss与CrossEntropyLo ...

  5. MSE(MeanSquaredError) loss 与 CE(CrossEntropyLoss) loss

    文章目录 前言 一.MSE Loss是什么 二.CE Loss是什么 总结 前言 前两天在论文中看到一篇文章的loss函数形式,在结果中将MSE loss和 CE loss的表现进行了对比,分别采用两 ...

  6. 损失函数 | BCE Loss(Binary CrossEntropy Loss)

    BCE(Binary CrossEntropy)损失函数 图像二分类问题--->多标签分类 Sigmoid和Softmax的本质及其相应的损失函数和任务 多标签分类任务的损失函数BCE Pyto ...

  7. 【文献阅读】医学图像分割中的loss函数选择-Loss odyssey in medical image segmentation loss

    参考文献:Loss odyssey in medical image segmentation loss 函数代码库 github-SegLoss 本文在四个典型的三维分割任务上对20个一般的损失函数 ...

  8. 常用损失函数总结(L1 loss、L2 loss、Negative Log-Likelihood loss、Cross-Entropy loss、Hinge Embedding loss、Margi)

    常用损失函数总结(L1 loss.L2 loss.Negative Log-Likelihood loss.Cross-Entropy loss.Hinge Embedding loss.Margi) ...

  9. loss盘点: asl loss (Asymmetric Loss) 代码解析详细版

    1. BCE公式部分 可以简单浏览下这篇博客的文章: https://blog.csdn.net/qq_14845119/article/details/114121003 这是多分类 经典 BCEL ...

最新文章

  1. CPU为什么是方形而不是圆形的?
  2. LeetCode 1933. 判断字符串是否可分解为值均等的子串
  3. 金立手机又推新品!翻盖手机A326发布 意图复刻经典
  4. 关于IEnumeratorT泛型枚举器 和 IEnumerableT
  5. auto.js下载安装教程
  6. SQLiteDev与.NET日期格式,该字符串未被识别为有效的 DateTime
  7. 读《About Face 4 交互设计精髓》20
  8. 最新PC微信多开——OD修改dll程序跳转逻辑实现多开
  9. 49个Excel常用技巧
  10. SSL 1384 炮兵阵地
  11. discuz模板介绍
  12. 真实如刀的洞见:和扶墙老师聊技术、组织和商业
  13. 上篇: php 微信公众号 基于Thinkphp3.2框架开发
  14. python快速入门【三】-----For 循环、While 循环
  15. 华清远见-重庆中心-JavaScript知识点梳理
  16. 互联网日报 | 蔚来汽车股价年内涨幅近十倍;小米成立可穿戴部;恒大物业拟12月2日港交所上市...
  17. HttpWebRequest 介绍
  18. 从零开始的DIY智能家居 - 基于 ESP32 的土壤湿度传感器
  19. Numpy中的多项式表示及拟合
  20. mysql数据库监控程序_mysql数据库监控利器lepus天兔工具安装和部署

热门文章

  1. 微信小程序做页内跳转外部网络连接/<web-view>的使用(使用与企业小程序)
  2. int型转换为long型遇到的一个小问题
  3. PSP游戏卡 列表展示
  4. C++面试问题补充记录
  5. Pgsql中数组字段当作查询条件和输出数组
  6. laravel 模型查询结果当作key
  7. 剖析强化学习 - 第六部分
  8. HTML 学习笔记 0
  9. gdft补液_目标导向液体容量治疗及进展.ppt
  10. 不再是“乔布斯第二”,多西已成“多西第一”