Binary cross entropy 二元交叉熵是二分类问题中常用的一个Loss损失函数,在常见的机器学习模块中都有实现。本文就二元交叉熵这个损失函数的原理,简单地进行解释。

首先是二元交叉熵的公式 :
Loss=−1N∑i=1Nyi⋅log⁡(p(yi))+(1−yi)⋅log(1−p(yi))Loss = - \frac{1}{N}\sum_{i=1}^{N}y_i \cdot \log(p(y_i)) + (1 - y_i) \cdot log(1-p(y_i)) Loss=−N1​i=1∑N​yi​⋅log(p(yi​))+(1−yi​)⋅log(1−p(yi​))

其中,yyy 是二元标签 0 或者 1, p(y)p(y)p(y) 是输出属于yyy 标签的概率。作为损失函数,二元交叉熵是用来评判一个二分类模型预测结果的好坏程度的,通俗的讲,即对于标签y为1的情况,如果预测值p(y)趋近于1,那么损失函数的值应当趋近于0。反之,如果此时预测值p(y)趋近于0,那么损失函数的值应当非常大,这非常符合log函数的性质。

下面以单个输出为例子,在标签为 y=1y=1y=1 的情况下Loss=−log⁡(p(y))Loss = -\log(p(y))Loss=−log(p(y)), 当预测值接近1时,Loss=0Loss = 0Loss=0, 反之 LossLossLoss 趋向于正无穷。

同样的单个输出为例,当标签 y=0y=0y=0时,损失函数 Loss=−log⁡(1−p(y))Loss = -\log(1-p(y))Loss=−log(1−p(y)),当预测值接近0时,Loss=0Loss = 0Loss=0,反之LossLossLoss 趋向于正无穷。


之后,再对所有计算出的单个输出损失求和求平均,就可以求出模型针对一组大小为N的输出的Loss了。

快速理解binary cross entropy 二元交叉熵相关推荐

  1. Cross Entropy Loss 交叉熵损失函数公式推导

    表达式 输出标签表示为{0,1}时,损失函数表达式为: $L = -[y log \hat{y} + (1-y)log(1- \hat{y})]$ 二分类 二分类问题,假设 y∈{0,1} 正例:$P ...

  2. sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss)

    sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss) # 广义线性模型中的各种连接函数: ...

  3. Binary Cross Entropy真的适合多标签分类吗?

    个人曾在负责一个多标签文本分类项目时对于多标签分类(multi-label classification)的loss选择.forward尾层处理感到迷惑,当时查找了一下资料确定了一种方案: 1.以类别 ...

  4. binary_crossentropy(二元交叉熵)的定义

    binary_crossentropy(二元交叉熵)的定义 https://www.cnblogs.com/sunrise-keephungary/p/10056027.html

  5. Binary Cross Entropy

    参考Understanding binary cross-entropy / log loss 一.Introduction 训练一个二元分类器( binary classifier)的时候,往往会用 ...

  6. 均方误差越大越好_直观理解为什么分类问题用交叉熵损失而不用均方误差损失?...

    交叉熵损失与均方误差损失 常规分类网络最后的softmax层如下图所示,传统机器学习方法以此类比, 一共有\(K\)类,令网络的输出为\([\hat{y}_1,\dots, \hat{y}_K]\), ...

  7. 机器学习常见损失函数,二元交叉熵,类别交叉熵,MSE,稀疏类别交叉熵

    一 损失函数介绍 损失函数用于描述模型预测值与真实值的差距大小.一般有有两种常见的算法--均值平方差(MSE)和交叉熵.下面来分别介绍每个算法的具体内容. 1 均值平方差 均值平方差(Mean Squ ...

  8. smooth l1(huber)+binary cross entropy详解(tensorflow+pytorch)

    前言 上篇讲到yolo v2 loss中使用了两个loss分别时wh使用的smoothl1 loss以及其他的BCEloss,这里做个扩展介绍,并对比pytorch以及tensorflow的api接口 ...

  9. 交叉熵损失函数(Cross Entropy Loss)

    基础不牢,地动山摇,读研到现在有一年多了,发现自己对很多经常打交道的知识并不了解,仅仅是会改一改别人的代码,这使我感到非常焦虑,自此开始我的打基础之路.如果博客中有错误的地方,欢迎大家评论指出,我们互 ...

最新文章

  1. JavaScript初学者编程题(18)
  2. 动态保持视频文件存取容量VC
  3. 零基础python从入门到精通 pdf-跟老齐学Python从入门到精通
  4. spring mvc学习(23):eclipse创建Maven项目没有src/main/java并不能新建的问题
  5. Web前端笔记-解决Vue编写的输入框(input、textarea等)使用JS设置value时提交表单无效的问题
  6. mongodb 3.0版本安装
  7. c++ string详解 assign
  8. Access安全性之QA详解
  9. 内存、时间复杂度、CPU/GPU以及运行时间
  10. 【leetcode】复写零
  11. (七)、Java异常类型及处理
  12. 随机梯度下降法(SGD)
  13. DAY 11 | 自学前端第十一天
  14. 《全网搜索》更新日志 - [AllWebSearch] Change Log,历时15年最长时间的一次考古
  15. Qt程序在arm板上运行
  16. python解数学方程_用Python如何解数学方程
  17. 大快人心,这种恶心广告,终于要被制裁了?工信部出手了
  18. python strip函数用法_python中strip函数的用法
  19. 用c语言编写s7-1200 plc程序教程,S7-1200编程指南.pdf
  20. Springboot使用Specification连表查询LEFT

热门文章

  1. css中变量_CSS中的变量
  2. Java Double类parseDouble()方法的示例
  3. Java SecurityManager getSecurityContext()方法与示例
  4. c#数组获取元素的索引_获取元素集合 从C#中的指定索引
  5. 远控免杀专题2---msfvenom的隐藏参数
  6. uva 10954——Add All
  7. 使用touch更新文件的时间
  8. TCP第四次挥手为什么要等待2MSL
  9. 【C++11新特性】 C++11智能指针之shared_ptr
  10. (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题