【AIGC】信息量、熵、交叉熵、KL散度、二值交叉熵(Binary Cross-Entropy,BCE)

【MSE/BCE/CE】均方差、交叉熵损失函数理解 文章目录1 均方误差(Mean Squared Error, MSE)1.1 MSE介绍1.2 MSE为何不常用于分类1.3 那什么常用于分类呢?2 二值交叉熵损失(Binary Cross Entropy Loss, BCE)2.1 BCE介绍2.2 pytorch中的BCELoss3 交叉熵损失(Cross Entropy Loss, CE)3.1 CE介绍3.2 分类损失到底怎么得到的3.3 pytorch中的CELoss4 解释BCE并不是只能学习0或1的label5 参考链接: 1 均方误差(Me 阅读详情

本文详细的推导了二值交叉熵(BCE)和二值交叉熵损失函数(BCE Loss)之间的关系。

一、 理论基础

A : = f ( ⋅ ) A:=f(\cdot) A:=f(⋅) 表示 A A A定义为 f ( ⋅ ) f(\cdot) f(⋅),这是人们为了某些目的而将 A A A定义成 f ( ⋅ ) f(\cdot) f(⋅)的,有意义的定义往往能揭示一些规律。

1. 信息量

对于事件 x x x,假设它的信息量表示为 I ( x ) I(x) I(x),它发生的概率表示为 p ( x ) p(x) p(x)。

基于我们的常识可以知道:

  1. 一个事件 x i x_i xi​发生的概率越小,它包含的信息量 I ( x i ) I(x_i) I(xi​)应该越大 = > I =>I =>I应该和 p p p成反比 = > => =>即 I I I和 1 p \frac{1}{p} p1​成正比
  2. 两个事件 x i , x j x_i, x_j xi​,xj​的信息量 I ( x i ) + I ( x j ) I(x_i)+I(x_j) I(xi​)+I(xj​)相加,应该和这两个事件同时发生有关(注意:两个事件同时发生的概率等于两个事件的概率之积 p ( x i ) p ( x j ) p(x_i)p(x_j) p(xi​)p(xj​)) = > I =>I =>I应该能把加法转换为乘法 = > => =>可用 l o g log log实现

基于上面两个性质,可以有 I ( x ) : = l o g 1 p ( x ) I(x):=log\frac{1}{p(x)} I(x):=logp(x)1​ ,log的底取任何>1的值其实都没关系,但为了让它更有意义,通常取 2 2 2为底,因为这样,就能使得抛硬币正面朝上这样只有 1 2 \frac{1}{2} 21​ 概率的事件的信息量刚好为1,并且可以赋予其"比特"的单位(注意,单位也是定义的,人们会把一些有意义的事情给上单位)。所以说,抛硬币正面朝上的信息量为1比特。

所以,最终定义信息量为:
I ( x ) : = l o g 2 1 p ( x ) = − l o g 2 p ( x ) I(x):=log_2\frac{1}{p(x)}=-log_2p(x) I(x):=log2​p(x)1​=−log2​p(x)

2. 熵(也叫香农熵)

熵这个概念是针对一个事件集合 X X X而定义的(即有一系列事件 x ∈ X x \in X x∈X),

熵定义为这些事件携带信息量的平均值(也叫期望)。所以有:
H ( p ( x ) ) : = ∑ x ∈ X p ( x ) I ( x ) = − ∑ x ∈ X p ( x ) l o g 2 p ( x ) H(p(x)):=\sum_{x\in X}p(x)I(x)=-\sum_{x\in X}p(x)log_2p(x) H(p(x)):=x∈X∑​p(x)I(x)=−x∈X∑​p(x)log2​p(x)
或简写版:
H ( p ) : = ∑ p x I x = − ∑ p x l o g 2 p x H(p):=\sum p_xI_x=-\sum p_xlog_2p_x H(p):=∑px​Ix​=−∑px​log2​px​
这样,熵越大,表示这个系统包含的信息越多,系统越不稳定。

熵越小,表示这个系统包含的信息越少,系统越稳定。

在这里插入图片描述
如上图所示,中国和法国比赛悬念比较小,所以信息量少,结果比较稳定。(虽然中国赢了有更大的信息量,但发生的概率太小,整体基本上是法国赢)

而德国对荷兰的比赛则55开,比较不稳定,谁最终夺冠是个信息量很大的事。

所以德国VS荷兰这个系统的熵>法国VS中国的熵

3. 交叉熵

对于事件 x x x,
假设它发生的真实概率(ground truth probability)表示为 p ( x ) p(x) p(x)
假设它的观测概率为 q ( x ) q(x) q(x)(即通过多次试验得到的概率或者通过算法预测出来的概率)

则交叉熵定义为:
H ( p ( x ) , q ( x ) ) : = ∑ x ∈ X p ( x ) I q ( x ) = − ∑ x ∈ X p ( x ) l o g 2 q ( x ) H(p(x),q(x)):=\sum_{x\in X}p(x)I^q(x)=-\sum_{x\in X}p(x)log_2q(x) H(p(x),q(x)):=x∈X∑​p(x)Iq(x)=−x∈X∑​p(x)log2​q(x)
或简写版:
H ( p , q ) : = ∑ p x I x q = − ∑ p x l o g 2 q x H(p,q):=\sum p_xI^q_x=-\sum p_xlog_2q_x H(p,q):=∑px​Ixq​=−∑px​log2​qx​

I q ( x ) I^q(x) Iq(x)表示以 q q q为概率的信息量。

举个例子:
假设抛硬币正面为 h h h,反面为 t t t。我们知道真实概率 p ( h ) = p ( t ) = 0.5 p(h)=p(t)=0.5 p(h)=p(t)=0.5。
现在有两枚硬币,由于粘了不同程度的泥土导致抛出的概率不一样。通过实验,得到:
在这里插入图片描述
这里,我们就可以看出一点点门道了,即观测概率 q q q越接近真实概率 p p p。交叉熵相对越小。而这个结论是可以被证明的(见后面的KL散度)。
简化版

4. KL散度(或相对熵)

KL散度定义为交叉熵和香农熵的差。
D ( p ( x ) ∣ ∣ q ( x ) ) = H ( p ( x ) , q ( x ) ) − H ( p ( x ) ) = ∑ x ∈ X p ( x ) I q ( x ) − ∑ x ∈ X p ( x ) I ( x ) = ∑ x ∈ X p ( x ) l o g 2 1 q ( x ) − ∑ x ∈ X p ( x ) l o g 2 1 p ( x ) = ∑ x ∈ X p ( x ) l o g 2 p ( x ) q ( x ) \begin{aligned} D(p(x)||q(x))=H(p(x),q(x))-H(p(x))&=\sum_{x\in X}p(x)I^q(x)-\sum_{x\in X}p(x)I(x)\\ &=\sum_{x\in X}p(x)log_2\frac{1}{q(x)}-\sum_{x\in X}p(x)log_2\frac{1}{p(x)}\\ &=\sum_{x\in X}p(x)log_2\frac{p(x)}{q(x)} \end{aligned} D(p(x)∣∣q(x))=H(p(x),q(x))−H(p(x))​=x∈X∑​p(x)Iq(x)−x∈X∑​p(x)I(x)=x∈X∑​p(x)log2​q(x)1​−x∈X∑​p(x)log2​p(x)1​=x∈X∑​p(x)log2​q(x)p(x)​​
简写版:
D ( p ∣ ∣ q ) = H ( p , q ) − H ( p ) = ∑ p x I x q − ∑ p x I x = ∑ p x l o g 2 1 q x − ∑ p x l o g 2 1 p x = ∑ p x l o g 2 p x q x \begin{aligned} D(p||q)=H(p,q)-H(p)&=\sum p_xI^q_x-\sum p_xI_x\\ &=\sum p_xlog_2\frac{1}{q_x}-\sum p_xlog_2\frac{1}{p_x}\\ &=\sum p_xlog_2\frac{p_x}{q_x} \end{aligned} D(p∣∣q)=H(p,q)−H(p)​=∑px​Ixq​−∑px​Ix​=∑px​log2​qx​1​−∑px​log2​px​1​=∑px​log2​qx​px​​​

性质1:

D ( p ∣ ∣ q ) ≥ 0 D(p||q)\ge 0 D(p∣∣q)≥0 当且仅当 q = p q=p q=p时等号成立。
证明:吉布斯不等式

性质2:

D ( p ∣ ∣ q ) ≠ D ( q ∣ ∣ p ) D(p||q)\neq D(q||p) D(p∣∣q)=D(q∣∣p)

性质3:

由于 H ( p ) H(p) H(p)是个常量,q是一个变量,通常可表示为函数 f ( θ ) f(\theta) f(θ),所以通过选取不同 q θ q_\theta qθ​(简便起见,这么写,不代表 θ \theta θ是事件)最小化 D ( p ∣ ∣ q θ ) D(p||q_\theta) D(p∣∣qθ​)等价于最小化 H ( p , q θ ) H(p,q_\theta) H(p,qθ​),即:
▽ θ D ( p ∣ ∣ q θ ) = ▽ θ H ( p , q θ ) − ▽ θ H ( p ) = ▽ θ H ( p , q θ ) \triangledown_\theta D(p||q_\theta)=\triangledown_\theta H(p,q_\theta)-\triangledown_\theta H(p)=\triangledown_\theta H(p,q_\theta) ▽θ​D(p∣∣qθ​)=▽θ​H(p,qθ​)−▽θ​H(p)=▽θ​H(p,qθ​)

关于事件空间的误解

(注意,很多教程没有讲清楚事件空间和采样试验(见下一节) 的区别,这里拉出来强调下。)

事件空间是指 X X X,即事件 x x x的可取值的集合。

由于观测值样本空间只能是真实值样本空间的子集,所以不存在有些教程里说的要确定取值的问题。比如下面:

当观测值和真实值一样时:
在这里插入图片描述
如果观测数更多:
在这里插入图片描述
如果观测数更少:
在这里插入图片描述

总是取事件空间更大的值。(注意上面的图在事件空间体现这块是有问题的,横轴表示事件空间。不可能出现观测值在真实值中不存在的情况,比如第一幅图,真实值只有1,它却观测到了0.4或者0.8;最后一幅图,观测到的是1,真实值从图上看又没有1。)

实际上根据公式 x ∈ X x\in X x∈X这里的 X X X指的是真实事件空间。对于 p p p不存在的情况 i i i, p i p_i pi​取0,对于 q q q不存在的情况 j j j, q j q_j qj​取0代入公式即可,不必要关注所谓的取大取小的问题。

5. 二值交叉熵(Binary Cross-Entropy,BCE)和BCE损失函数

二值交叉熵是交叉熵的一种特殊情况,即真实样本空间只有两个取值,一般来说是 [ 0 , 1 ] [0,1] [0,1]。有 p ( 0 ) + p ( 1 ) = 1 , q ( 0 ) + q ( 1 ) = 1 p(0)+p(1)=1,q(0)+q(1)=1 p(0)+p(1)=1,q(0)+q(1)=1
H ( p ( x ) , q ( x ) ) = ∑ x ∈ [ 0 , 1 ] p ( x ) I q ( x ) = p ( 0 ) I q ( 0 ) + p ( 1 ) I q ( 1 ) = − ( p ( 0 ) l o g 2 q ( 0 ) + ( 1 − p ( 0 ) ) l o g x ( 1 − q ( 0 ) ) ) 或 = − ( ( 1 − p ( 1 ) ) l o g x ( 1 − q ( 1 ) ) + p ( 1 ) l o g 2 q ( 1 ) ) = − ( p ( x ) l o g 2 q ( x ) + ( 1 − p ( x ) ) l o g x ( 1 − q ( x ) ) ) \begin{aligned} H(p(x),q(x))=\sum_{x\in [0,1]}p(x)I^q(x)&=p(0)I^q(0)+p(1)I^q(1)\\ &=-(p(0)log_2q(0)+(1-p(0))log_x(1-q(0)))或=-((1-p(1))log_x(1-q(1))+p(1)log_2q(1))\\ &=-(p(x)log_2q(x)+(1-p(x))log_x(1-q(x))) \end{aligned} H(p(x),q(x))=x∈[0,1]∑​p(x)Iq(x)​=p(0)Iq(0)+p(1)Iq(1)=−(p(0)log2​q(0)+(1−p(0))logx​(1−q(0)))或=−((1−p(1))logx​(1−q(1))+p(1)log2​q(1))=−(p(x)log2​q(x)+(1−p(x))logx​(1−q(x)))​
其中x可取0或者1。

或简写版:
H ( p , q ) = − ( p x l o g 2 q x + ( 1 − p x ) l o g 2 ( 1 − q x ) ) H(p,q)=-(p_xlog_2q_x+(1-p_x)log_2(1-q_x)) H(p,q)=−(px​log2​qx​+(1−px​)log2​(1−qx​))
其中 x x x可取 0 0 0或 1 1 1。

有两点要注意:

  1. H中的累加符号没有了
  2. 也就是说,我们可以只关注一种结果,0或者1。

为什么我们在其他文献或者教材里看到的BCE是长下面这样呢?
1 N ∑ i = 0 N ( y i l o g 2 y ^ i + ( 1 − y i ) l o g 2 ( 1 − y ^ i ) ) \frac{1}{N}\sum_{i=0}^N(y_ilog_2\hat{y}_i+(1-y_i)log_2(1-\hat{y}_i)) N1​i=0∑N​(yi​log2​y^​i​+(1−yi​)log2​(1−y^​i​))
其中: N N N为采样数, y i y_i yi​为真实标签(0或1), y ^ i \hat{y}_i y^​i​为预测概率。

事实上,严格的来说,上面的公式并不是交叉熵,而是基于交叉熵构造的BCE损失函数, q ( x ) q(x) q(x)这个观测值或者预测值是由未知变量的函数决定的(比如sigmoid函数 q ( x ) ( θ ) = 1 1 + e − θ x ^ q(x)(\theta)=\frac{1}{1+e^{-\theta \hat{x}}} q(x)(θ)=1+e−θx^1​),假设做了N次实验,那么损失函数定义为:
L o s s ( θ ) : = 1 N ∑ i = 0 N H ( p i ( x ) , q i ( x ) ) = 1 N ∑ i = 0 N H ( p i ( x ) , q i ( x ) ( θ ) ) Loss(\theta):=\frac{1}{N}\sum_{i=0}^NH(p_i(x),q_i(x))=\frac{1}{N}\sum_{i=0}^NH(p_i(x),q_i(x)(\theta)) Loss(θ):=N1​i=0∑N​H(pi​(x),qi​(x))=N1​i=0∑N​H(pi​(x),qi​(x)(θ))
代入BCE公式得:
L o s s ( θ ) = − 1 N ∑ i = 0 N ( p i ( x ) l o g 2 q i ( x ) ( θ ) + ( 1 − p i ( x ) ) l o g x ( 1 − q i ( x ) ( θ ) ) ) Loss(\theta)=-\frac{1}{N}\sum_{i=0}^N(p_i(x)log_2q_i(x)(\theta)+(1-p_i(x))log_x(1-q_i(x)(\theta))) Loss(θ)=−N1​i=0∑N​(pi​(x)log2​qi​(x)(θ)+(1−pi​(x))logx​(1−qi​(x)(θ)))

注意这里的 i i i代表的事每次实验。举个例子,假设下面有N张照片,我们预测它是不是猫。即x=1表示是猫,x=0表示不是猫。那么i就表示第i张照片。注意每个 x i x_i xi​都有两个取值。

在这里插入图片描述

由第4节的性质3可知,最小化上面的损失函数,其实就是最小化每一个KL散度 ▽ θ D ( p i ∣ ∣ q i ( θ ) ) \triangledown_\theta D(p_i||q_i(\theta)) ▽θ​D(pi​∣∣qi​(θ)),
即设计这么个损失函数就是为了找最好的 θ \theta θ使得 q i ( θ ) q_i(\theta) qi​(θ)在每个测试点上都能拟合真实的 p i p_i pi​。

现在只剩下疑问:原公式中只有概率,标签怎么出现到公式里的?

首先,我们要明确这里的真实事件空间是什么。

如果我们把事件定义成"a=它是1”,“b=它是0”,
类比“h=抛硬币正面朝上”和"t=抛硬币反面朝上", p ( h ) = p ( t ) = 0.5 p(h)=p(t)=0.5 p(h)=p(t)=0.5
那么对于一张照片,它是不是猫,真实概率要么是100%要么是0%。

所以 p ( a ) = 100 % = 1 p(a)=100\%=1 p(a)=100%=1或者 p ( a ) = 0 % = 0 p(a)=0\%=0 p(a)=0%=0(刚好和标签0,1对应上)

那么,
H ( p ( x ) , q ( x ) ) = − ( p ( x ) l o g 2 q ( x ) + ( 1 − p ( x ) ) l o g x ( 1 − q ( x ) ) ) = − ( x l o g 2 q ( x ) + ( 1 − x ) l o g x ( 1 − q ( x ) ) ) \begin{aligned} H(p(x),q(x))&=-(p(x)log_2q(x)+(1-p(x))log_x(1-q(x)))\\ &=-(xlog_2q(x)+(1-x)log_x(1-q(x))) \end{aligned} H(p(x),q(x))​=−(p(x)log2​q(x)+(1−p(x))logx​(1−q(x)))=−(xlog2​q(x)+(1−x)logx​(1−q(x)))​
x x x取 1 1 1或 0 0 0,即对应图片是不是猫的真实标签。

这样,标签的值就写进公式了。

即:
L o s s ( θ ) = − 1 N ∑ i = 0 N ( p i ( x ) l o g 2 q i ( x ) ( θ ) + ( 1 − p i ( x ) ) l o g x ( 1 − q i ( x ) ( θ ) ) ) = − 1 N ∑ i = 0 N ( x i l o g 2 q i ( x ) ( θ ) + ( 1 − x i ) l o g 2 ( 1 − q i ( x ) ( θ ) ) ) \begin{aligned} Loss(\theta)&=-\frac{1}{N}\sum_{i=0}^N(p_i(x)log_2q_i(x)(\theta)+(1-p_i(x))log_x(1-q_i(x)(\theta)))\\ &=-\frac{1}{N}\sum_{i=0}^N(x_ilog_2q_i(x)(\theta)+(1-x_i)log_2(1-q_i(x)(\theta))) \end{aligned} Loss(θ)​=−N1​i=0∑N​(pi​(x)log2​qi​(x)(θ)+(1−pi​(x))logx​(1−qi​(x)(θ)))=−N1​i=0∑N​(xi​log2​qi​(x)(θ)+(1−xi​)log2​(1−qi​(x)(θ)))​

或简写版
L o s s ( θ ) = = − 1 N ∑ i = 0 N ( x i l o g 2 q x i ( θ ) + ( 1 − x i ) l o g 2 ( 1 − q x i ( θ ) ) ) \begin{aligned} Loss(\theta)&= &=-\frac{1}{N}\sum_{i=0}^N(x_ilog_2q_{x_i}(\theta)+(1-x_i)log_2(1-q_{x_i}(\theta))) \end{aligned} Loss(θ)​=​=−N1​i=0∑N​(xi​log2​qxi​​(θ)+(1−xi​)log2​(1−qxi​​(θ)))​

参考

可视化理解Binary Cross-Entropy
【10分钟】了解香农熵,交叉熵和KL散度
打包理解“信息量”、“比特”、“熵”、“KL散度”
Understanding binary cross-entropy / log loss: a visual explanation
维基百科-Cross Entropy
个视频彻底搞懂交叉熵、信息熵、相对熵、KL散度、交叉熵损失、交叉熵

二元交叉熵损失函数(Binary Cross Entropy Loss,BCELoss)是交叉熵损失函数(CrossEntropyLoss)的特殊情况 一直以来看到还以为是很复杂的东西,原来其实是,也就是二元交叉熵损失函数其实就是交叉熵损失函数。 阅读详情

相关推荐

交叉熵损失和二元交叉熵损失

交叉熵损失和二元交叉熵损失的简单讨论

飞机火车巴雷特的博客 3万+

机器学习 - 交叉熵Cross Entropy

机器学习 - 交叉熵Cross Entropy 1. 二值交叉熵 Binary Cross Entropy 假设训练数据 D={(x1,y1),(x2,y2),...,(xn,yn)}D={(x1,y1),(x2,y2),...,(xn,yn)}D = \{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\} , 其中 x∈Rnx∈Rnx \in R^n ...

长风破浪会有时,直挂云帆济沧海 9444

图像分割中的一些损失函数

BCE损失函数通过比较模型输出的概率值和真实的标签值来衡量模型的表现。BCE−1N∑i1Nyi⋅log⁡yi1−yi⋅log⁡1−yiBCE−N1​i1∑N​yi​⋅logy​i​1−yi​⋅log1−y​i​NNN是图像中的像素总数。yiy_iyi​是第iii个像素的真实标签(0 或 1)。yi\hat{y}_iy​i​是模型预测的第iii。

985小菜鸡 3701

二值交叉熵

二值交叉熵

weixin_46453541的博客 1025

CSP历年真题201503-1-图像旋转(C/C++)

一、问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。 输入格式 二、输入格式 输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。 接下来n行每行包含m个整数,表示输入的图像。 三、输出格式 输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。 四、...

GTboy100的博客 1670

【AI落地】AI生成测试用例,claude or gpt?(提效至少 50%)

gpt生成测试用例?当然好使啦,用好了提效50%+,用不好就让他变好!

青禾tester 1969

二值交叉熵损失函数

二值交叉熵损失函数

小姑仔的博客 4024

YOLOv11在RK3588芯片上的NPU加速与INT8量化部署全面指南

RK3588 NPU适配YOLOv11的关键技术要点 摘要:本文详细分析了Rockchip RK3588 NPU的硬件架构特性及其对YOLOv11模型的适配优化方案。RK3588 NPU采用三核设计,具备6TOPS算力,包含192个MAC单元和128KB专用SRAM。YOLOv11作为最新目标检测模型,其CSPNet-v5骨干网络、PANet特征金字塔和SiLU激活函数需要特殊适配处理。文章系统介绍了从PyTorch模型导出、ONNX优化到RKNN模型转换的完整流程,重点阐述了NPU不支持的算子处理方案和量

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1358

交叉熵损失

交叉熵损失BCELossBCEWithLogitsLossCrossEntropyLoss BCELoss 全称为Binary CrossEntropy Loss,二值交叉熵损失。 l(x,y)={l1,...,lN}T l(x, y) =\{l_1,..., l_N\}^T l(x,y)={l1​,...,lN​}T ln=−wn[ynlog(xn)+(1−yn)log(1−xn)] l_n = -w_n[y_n log(x_n) + (1-y_n)log(1-x_n)] ln​=−wn​[yn​log

u011994454的博客 2223

基于FDTD的涡旋光束发射器设计

为实现涡旋光束在小型设备中的应用,提出一种圆柱孔光栅蚀刻硅微环谐振腔结构,器件半径仅为4.1μm。建立一个理论模型,利用偶极子点表示沿微环腔内壁的光栅元件散射辐射,推导输出光场表达式,建模结果验证该结构可在不同波长下选择性地产生各种拓扑数的涡旋光束。此外,对器件进行性能分析与参数优化,结果表明,微环波导宽度过小会大大增加微环的辐射损耗。当微环波导宽度为450nm、耦合间距为100nm时,1 579nm波长附近的谐振峰输出功率为16.3dB,Q值为15 800。

qq_61890005的博客 827

部署OpenClaw时设置环境变量提示export: not valid in this context的完整解决方案

OpenClaw环境变量设置错误解决方案 问题概述 在部署OpenClaw时设置环境变量出现"export: not valid in this context"错误,通常由以下原因导致: 在非交互式shell中使用export命令 在命令替换或管道中使用export 脚本文件包含Windows换行符(CRLF) 解决方案 修正脚本执行方式:确保export命令在正确的shell上下文中使用 使用source命令:通过. setup_openclaw.sh或source setup_op

博客 458

损失函数-交叉熵的推导和二分类交叉熵

损失函数-交叉熵和二分类交叉熵

无能狂怒博客 2015

OpenClaw 多代理协同工作模式配置指南

OpenClaw 采用。

形上得其象,形下合于数;阴阳自济,玄理自明。 1万+

【pytorch损失函数(1)】之nn.BCELoss二进制交叉熵和 nn.BCEWithLogitsLoss

可以看出梯度都与sigmoid函数的梯度有关,如下图所示,sigmoid函数在两端的梯度均接近0,这导致反向传播的梯度也很小,这就这就不利于网络训练,这就是 梯度消失问题。在面对不同的分类问题的时候,选择的loss function也不一样,二分类和多标签分类通常使用sigmoid函数而多分类则一般使用softmax函数(互斥性质)。目标值 y的范围是0-1之间。的到的一个一个样本的分类结果,这个结果的通俗解释就是:为第一类的概率为0.2,为第二类的概率为0.5,为第三类的结果过0.3。

AbiUni(YY熊) 1万+

《谷歌数据分析方法》脑图笔记

目录壹、脑图笔记贰、《谷歌数据分析方法》脑图文稿[^1]一、 反思数据分析二、选择数据分析工具的最佳策略第一步:选择数据分析工具前要回答的3个关键问题第二步:选择数据分析工具前要问供应商的10个问题第三步:如何有效地试用数据分析工具第四步:确定合作前的协议,检查供应商的服务条款三、点击流分析的精彩世界:指标8个关键网站指标数据分析指标揭秘关键网站指标的战略性策略四、成功的关键:衡量绩效关注“少数关键指标”衡量非电子商务网站的成功衡量B2B网站五、调研和测试永不过时的3个最佳调研问题选择线上调研供应商的8个建

积跬步,慕至千里的博客 2927

QGIS004:【05矢量属性表】-保留字段、删除字段、添加唯一值索引字段、添加字段到属性表、添加自增量字段、添加XY字段到图层、文本型转浮点型、重构字段、重命名字段

摘要:QGIS矢量属性表工具箱包括保留字段、删除字段、添加唯一值索引字段、添加字段到属性表、添加自增量字段、添加XY字段到图层、文本型转浮点型、重构字段、重命名字段等选项,本文介绍各选项的基本操作。

qq_31762031的博客 2312

BCELoss、BCEWithLogitsLoss / 二元交叉熵损失函数(Binary Cross Entropy Loss)

BCELoss 在图片多标签分类时,如果3张图片分3类,会输出一个3*3的矩阵。 先用Sigmoid给这些值都搞到0~1之间: 假设Target是: 下面我们用BCELoss来验证一下Loss是不是0.7194! BCEWithLogitsLoss BCEWithLogitsLoss就是把Sigmoid-BCELoss合成一步。我们直接用刚刚的input验证一下是不是0.7193: Pytorch详解BCELoss和BCEWithLogitsLoss_豪哥的博...

Drug discovery 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

交叉熵的故事

《关于交叉熵的故事》   做视觉三年多了,自己能力虽然提升了,但是总感觉没有沉淀下来一些可见的东西,所以从去年年末开始写博客,或者是翻译论文,或者是整理对一些知识理解的文章,总的来说赠人玫瑰,手有余香吧,还是挺有收获的,所以还是会继续坚持,把一些相对抽象的数学公式以故事的形式呈现出来,这也感谢很多前辈的文章。 Key Words:熵、KL散度、交叉熵、BCE Beijing, 2020 作者:RaySue Code: Agile Pioneer   信息量   交叉熵是信息论中的一个.

雄关漫道真如铁 而今迈步从头越 641

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

「损失函数loss」检测分割跟踪常见的Loss合集

Cross Entropy Loss 交叉熵损失函数是分类中非常经典的一种loss,其计算公式如下: LCE=−ylog(y′)−(1−y)log(1−y′)L_{CE}=-y log(y')-(1-y)log(1-y')LCE​=−ylog(y′)−(1−y)log(1−y′) 其中y表示某个类别上的GT(值为0或1),y‘表示经过神经网络预测得到的对应类别的置信度(因为做过softmax处理,所以值在(0,1)之间)。当y=0时,上式中只有第二项,此时y‘越接近于0,则loss越小;当y=1时,上式只有

jackzhang11的博客 4591

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【目标检测】----损失函数

log的底数为ey表示样本 i 的标签,正类为1,负类为0(注:BCE并不是只能学习0或1的label),使用的是one_hot编码p​表示样本 i 预测为正类的概率,是经过sigmoid后的数N 表示样本个数,这里是取了均值的假设x为输入特征,y为标签,当标签为1时,概率为p。那么标签为0时的概率为1-p。利用最大似然估计将其结合:P(y|x)= p(1-p)我们希望的是概率 P(y|x) 越大越好。

weixin_42454048的博客 2548

bce是什么

BCE(二元交叉熵)是深度学习中常用的损失函数之一,适用于二分类和多标签分类任务。结合了 Sigmoid 激活函数,提供了更加稳定和高效的计算方式,适用于未经过激活处理的模型输出。通过计算预测概率与真实标签之间的差异,BCE 损失函数帮助模型更好地学习分类任务。

m0_57236802的博客 4364

nn.BCELoss与nn.CrossEntropyLoss的区别

以前我浏览博客的时候记得别人说过,BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary CrossEntropyLoss的缩写,BCELoss CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntropyLoss可以用于二分类,也可以用于多分类。 不过我重新查阅了一下资料,发现同样是处理二分类问题,BCELoss与Cr...

步步拾遗 3万+

交叉熵/二分类交叉熵及各自对应的focal loss(附pytorch代码)

对于二分类问题,使用softmax或者sigmoid,在实验结果上到底有没有区别(知乎上相关问题讨论还不少)。最近做的相关项目也用到了这一块,从结果上来说应该是没什么区别,但是在模型上还是存在一定差异性的(可以应用于多模型融合、在相关比赛项目当中还是可以使用的)。相关知识和代码总结如下。 以下主要分为4个部分:交叉熵损失、二分类交叉熵损失、Focal loss及二分类Focal loss 1. C...

Enjoy_endless 9203

CE(Cross-Entropy)、BCE(Binary Cross-Entropy 即Sigmoid+CE)、CCE(Categorical Cross-Entropy 即Softmax+CE)

tensorflow 2.0 画出model网络模型的拓扑图 tensorflow 2.0 的回调函数callbacks(TensorBoard、ModelCheckpoint) TensorBoard视觉化网络每层权重分布、视觉化网络层结构 MSE(均方误差)、MAE(平均绝对误差) from_logits CE(Cross-Entropy)、BCE(Binary Cross-Ent...

あずにゃん梓喵的博客 4199

二值交叉熵损失函数证明

在理解Logistic回归算法原理中我们指出了Logistic回归的损失函数定义(在这里重新约定符号): 对于单个样本而言,令为样本的期望输出,记为y;为样本的实际输出,记为y_hat,那么Logistic回归的损失函数就可以表示为: 而对于全体样本集的成本函数,就可以表示为: 与损失函数不同的是,它描述了在全体样本上集上,模型的参数w和b与优化目标之间的关系,在这两个公式中,成本函数其实是损

zhangxu 2万+

【深度学习】交叉熵损失函数Cross-Entropy Loss

本文详细介绍了交叉熵损失函数在分类任务中的应用,重点分析二分类和多分类场景下的计算原理与实现。二分类交叉熵通过sigmoid函数将输出映射为概率,计算预测与真实标签的差异;多分类交叉熵则通过softmax函数实现多类别概率归一化。文章通过垃圾邮件分类和动物分类等实例展示了两种交叉熵的具体计算过程,并给出PyTorch代码实现示例。两种交叉熵本质上都衡量模型预测概率与真实分布的差异,预测越准确损失值越小。文中还讨论了样本权重处理不平衡数据的方法,为实际应用提供了参考。

Yngz_Miao的博客 4044
上一篇: 【Algorithm】最容易理解的蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)算法
下一篇: 【AIGC】关于LLM你必须知道的特性-偏差(bias)
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值