快速理解binary cross entropy 二元交叉熵
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=−N1i=1∑Nyi⋅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 二元交叉熵相关推荐
- Cross Entropy Loss 交叉熵损失函数公式推导
表达式 输出标签表示为{0,1}时,损失函数表达式为: $L = -[y log \hat{y} + (1-y)log(1- \hat{y})]$ 二分类 二分类问题,假设 y∈{0,1} 正例:$P ...
- sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss)
sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss) # 广义线性模型中的各种连接函数: ...
- Binary Cross Entropy真的适合多标签分类吗?
个人曾在负责一个多标签文本分类项目时对于多标签分类(multi-label classification)的loss选择.forward尾层处理感到迷惑,当时查找了一下资料确定了一种方案: 1.以类别 ...
- binary_crossentropy(二元交叉熵)的定义
binary_crossentropy(二元交叉熵)的定义 https://www.cnblogs.com/sunrise-keephungary/p/10056027.html
- Binary Cross Entropy
参考Understanding binary cross-entropy / log loss 一.Introduction 训练一个二元分类器( binary classifier)的时候,往往会用 ...
- 均方误差越大越好_直观理解为什么分类问题用交叉熵损失而不用均方误差损失?...
交叉熵损失与均方误差损失 常规分类网络最后的softmax层如下图所示,传统机器学习方法以此类比, 一共有\(K\)类,令网络的输出为\([\hat{y}_1,\dots, \hat{y}_K]\), ...
- 机器学习常见损失函数,二元交叉熵,类别交叉熵,MSE,稀疏类别交叉熵
一 损失函数介绍 损失函数用于描述模型预测值与真实值的差距大小.一般有有两种常见的算法--均值平方差(MSE)和交叉熵.下面来分别介绍每个算法的具体内容. 1 均值平方差 均值平方差(Mean Squ ...
- smooth l1(huber)+binary cross entropy详解(tensorflow+pytorch)
前言 上篇讲到yolo v2 loss中使用了两个loss分别时wh使用的smoothl1 loss以及其他的BCEloss,这里做个扩展介绍,并对比pytorch以及tensorflow的api接口 ...
- 交叉熵损失函数(Cross Entropy Loss)
基础不牢,地动山摇,读研到现在有一年多了,发现自己对很多经常打交道的知识并不了解,仅仅是会改一改别人的代码,这使我感到非常焦虑,自此开始我的打基础之路.如果博客中有错误的地方,欢迎大家评论指出,我们互 ...
最新文章
- JavaScript初学者编程题(18)
- 动态保持视频文件存取容量VC
- 零基础python从入门到精通 pdf-跟老齐学Python从入门到精通
- spring mvc学习(23):eclipse创建Maven项目没有src/main/java并不能新建的问题
- Web前端笔记-解决Vue编写的输入框(input、textarea等)使用JS设置value时提交表单无效的问题
- mongodb 3.0版本安装
- c++ string详解 assign
- Access安全性之QA详解
- 内存、时间复杂度、CPU/GPU以及运行时间
- 【leetcode】复写零
- (七)、Java异常类型及处理
- 随机梯度下降法(SGD)
- DAY 11 | 自学前端第十一天
- 《全网搜索》更新日志 - [AllWebSearch] Change Log,历时15年最长时间的一次考古
- Qt程序在arm板上运行
- python解数学方程_用Python如何解数学方程
- 大快人心,这种恶心广告,终于要被制裁了?工信部出手了
- python strip函数用法_python中strip函数的用法
- 用c语言编写s7-1200 plc程序教程,S7-1200编程指南.pdf
- Springboot使用Specification连表查询LEFT
热门文章
- css中变量_CSS中的变量
- Java Double类parseDouble()方法的示例
- Java SecurityManager getSecurityContext()方法与示例
- c#数组获取元素的索引_获取元素集合 从C#中的指定索引
- 远控免杀专题2---msfvenom的隐藏参数
- uva 10954——Add All
- 使用touch更新文件的时间
- TCP第四次挥手为什么要等待2MSL
- 【C++11新特性】 C++11智能指针之shared_ptr
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题