首先需要说明的是PyTorch里面的BCELoss和CrossEntropyLoss都是交叉熵,数学本质上是没有区别的,区别在于应用中的细节。

BCE适用于0/1二分类,计算公式就是 “ -ylog(y^hat) - (1-y)log(1-y^hat) ”,其中y为GT,y_hat为预测值。这样,当gt为0的时候,公式前半部分为0,y^hat需要尽可能为0才能使后半部分数值更小;当gt为1时,后半部分为0,y^hat需要尽可能为1才能使前半部分的值更小,这样就达到了让y^hat尽量靠近gt的预期效果。当然,显然这要求输入必须在0-1之间,所以为了让网络的输出确保在0-1之间,我们一般都会加一个Sigmoid,而更具体一点来说,使用BCELoss的话只需要网络输出一个节点即可,不像CE Loss那样,往往是有n_class个类就需要网络最终输出n_class个节点。

而CE因为需要用在多分类上,所以计算公式就变成了sum(-ylog(y^hat))。可能有些同学很敏锐的发现了,这个函数实际上只是在对相应gt=1的那个节点的值做约束,希望这一点的输出能尽量为1;而其他原本gt为0的节点因为y=0,在计算到sum中的时候无论其相应输出节点是多少都没有关系,那这是不是意味着CE的公式还有漏洞呢?话虽这么说,但其实是因为我们忘记了CE之前还有Softmax这个函数,这个函数会让输入的n_class个节点中大的更大,小的更小,并且可以确保最终所有节点的输出的总和为1,这样一来只要对应gt=1的那个节点输出足够靠近1,其他的节点自然输出就会趋近于0了。

上面的两个例子都是在分类任务中说的,而在分割任务中,BCE和CE的另一个区别就可以说是,BCE只需要输出一个通道,而CE需要输出n_class个通道。

BCE和CE交叉熵损失函数的区别的更多相关文章

  1. 【转载】深度学习中softmax交叉熵损失函数的理解

    深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning   版权声明:本文为博主原 ...

  2. 深度学习原理与框架-神经网络结构与原理 1.得分函数 2.SVM损失函数 3.正则化惩罚项 4.softmax交叉熵损失函数 5. 最优化问题(前向传播) 6.batch_size(批量更新权重参数) 7.反向传播

    神经网络由各个部分组成 1.得分函数:在进行输出时,对于每一个类别都会输入一个得分值,使用这些得分值可以用来构造出每一个类别的概率值,也可以使用softmax构造类别的概率值,从而构造出loss值, ...

  3. [ch03-02] 交叉熵损失函数

    系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 3.2 交叉熵损失函数 交叉熵(Cross Entrop ...

  4. 关于交叉熵损失函数Cross Entropy Loss

    1.说在前面 最近在学习object detection的论文,又遇到交叉熵.高斯混合模型等之类的知识,发现自己没有搞明白这些概念,也从来没有认真总结归纳过,所以觉得自己应该沉下心,对以前的知识做一个 ...

  5. softmax交叉熵损失函数求导

    来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福 ...

  6. 吴裕雄--天生自然 pythonTensorFlow自然语言处理:交叉熵损失函数

    import tensorflow as tf # 1. sparse_softmax_cross_entropy_with_logits样例. # 假设词汇表的大小为3, 语料包含两个单词" ...

  7. 简单易懂的softmax交叉熵损失函数求导

    参考: https://blog.csdn.net/qian99/article/details/78046329

  8. 交叉熵损失函数,以及pytorch CrossEntropyLoss的理解

    实际运用例子: https://zhuanlan.zhihu.com/p/35709485 pytorch CrossEntropyLoss,参考博客如下: https://mathpretty.co ...

  9. 【联系】二项分布的对数似然函数与交叉熵(cross entropy)损失函数

    1. 二项分布 二项分布也叫 0-1 分布,如随机变量 x 服从二项分布,关于参数 μ(0≤μ≤1),其值取 1 和取 0 的概率如下: {p(x=1|μ)=μp(x=0|μ)=1−μ 则在 x 上的 ...

随机推荐

  1. pxe+kickstart无人值守批量安装linux

    一.原理和概念: 1.PXE:         PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 ...

  2. CSS 常见样式 特殊用法 贯穿线&徽章&箭头

    ### 贯穿渐变线,中间插值- 如图: > ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190427200554843.png) ![在这里插入图片描述 ...

  3. redis之哨兵 springboot配置

    转载自https://blog.csdn.net/m0_37367413/article/details/82018125 springboot整合redis哨兵方式配置 2018年08月24日 14 ...

  4. 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?

    GitHub 17k Star 的Java工程师成神之路,不来了解一下吗! GitHub 17k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 17k Star 的Java工 ...

  5. pytest自学第二期

    2.1 通过python解释器调用 pytest 我不知道有什么用:-) 以后就这样,如果有自己学过但是不知道的东西,就挂在那里晒着鞭尸,一直不会就一直鞭尸,直到自己参透了其中的道理再回到这里补全 在 ...

  6. 利用Z.Expressions.Eval表达式求值

    Z.Expression.Eval是一个开源的(OpenSource),可扩展的(Extensible),超轻量级(Super lightweight)的公式化语言解析执行工具包. 使用方法:1.从n ...

  7. Oracle添加键值对盲注

    前言 遇到一种注入点,存在于POST参数中,却不能用sqlmap扫出: 分析 request参数格式: %24Q_value1=test1&orderCol=&order=+ASC+& ...

  8. element弹框的的this.$alert、this.$prompt方法用法

    调用$alert方法即可打开消息提示,它模拟了系统的 alert,无法通过按下 ESC 或点击框外关闭 调用$prompt方法即可打开消息提示,它模拟了系统的 prompt

  9. Kubernetes Pod水平自动伸缩(HPA)

    HPA简介 HAP,全称 Horizontal Pod Autoscaler, 可以基于 CPU 利用率自动扩缩 ReplicationController.Deployment 和 ReplicaS ...

  10. Python-鸡兔同笼问题

    鸡兔同笼问题 -- 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? --鸡和兔在一个笼子里,从上面数,有35个头:从下面数,有94只脚.问笼中各有几只鸡和兔 如何逻辑整理? -- 鸡头和兔子 ...