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

article/2025/9/10 3:50:28

交叉熵

期望:

期望就是所有随机变量的均值。

E(X)=X1*P(X1)+X2*P(X2)+X3*P(X3)

熵:

熵表示所有信息量的期望。

信息量如何计算呢?

概率值取Log,然后加个负号,就是信息量

      I(X0)=-log(P(X0))

I(X0)代表信息熵

公式理解:概率越小,信息越大,概率越大,信息越小。

与正常思考反着来,因为概率大,所以这条信息重要性越小,因为都知道。所以信息量小。

                                因为概率小,所以这条信息很重要,因为概率小不确定,所以包含的信息量大

熵的公式:

熵就是在信息量的基础上求一个期望,(也就是先乘概率值再累计求和)熵的公式定义如下

以上的log函数全部底为2 

举例:

对于二项分布,只有两种可能的情况,一个发生的概率为P(x),另一个发生的概率为1-P(x),此时的信息量计算过程如下

在这里不要把这个看成二分类交叉熵。 

交叉熵就是损失函数。信息量是各种情况熵的期望。熵的公式里面填的数字都是概率值。两种情况的事件,概率值只有两种,P(x)  和  1-P(x) ,带进去如上。

相对熵(KL散度)

KL散度的定义:

同一个随机变量X,有两个单独的概率分辨P(x)和Q(x)。用KL散度来衡量P(x)和Q(x)两个独立分辨之间的差异。KL散度值越小,表示P和Q的分布越接近。

直观理解:

KL之所以说是对比两个分布之间的差异。应该是相减 。但是体现在log里面的相除。log拆分开来的话不就是相减了吗!

交叉熵 Cross Entropy

交叉熵是做为损失函数来使用的。

表示对于数据预测分类情况的类别真实类别情况之间的距离。

此时P(X)代表真实样本,Q(X)代表预测样本(注意这句话!!!!下面第三步要用的到)

我们使用梯度下降优化的目的,就是使得预测分类的结果尽可能的逼近真实的分类结果。也就是KL散度的值越小越好。

第一步:

  带入KL散度公式,

第二步简化

最右边这个P(xi)/Q(xi)拆开,从除变成减,两边都有P(xi),求和符号也带着

 

现在设                   

 

 因为在上面已经提到熵的定义 公式。可以往上面翻翻看。所以

 第三步

 

 我们发现H(x)即是对P(x)进行求取熵,但是P(x)是一个真实的样本。那么他的初始值都已经固定了。P(X)也就是一个常数,而常数在接下来的LOSS中是没有任何意义的。那么就可以将这个去除。

 这就是交叉熵。

交叉熵的应用

交叉熵在分类中常被使用,通常和Softmax在一起使用,softmax获取概率,带入到交叉熵中。根据交叉熵的值,不断的调整。

BCE 二分类交叉熵损失函数。

对于在二分类损失函数中应用,交叉熵损失函数为以下形式。

 SoftWare交叉熵损失函数。

交叉熵经常搭配softmax使用,将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。

参考

https://blog.csdn.net/Albert233333/article/details/127148805


http://chatgpt.dhexx.cn/article/6AobEJlT.shtml

相关文章

深度学习中的损失函数(交叉熵)

0、前景介绍 对于线性回归模型适用于输出为连续值的情景,但是在模型输出是一个像图像类别这样的离散值时。对于这样离散值的预测问题,通常使用一些例如sigmoid/softmax的分类模型。 1. 图像分类任务 假设下面两个模型都是通过softmax的方式得到对于每…

图示Softmax及交叉熵损失函数

Softmax函数 Softmax是将神经网络得到的多个值,进行归一化处理,使得到的值在之间,让结果变得可解释。即可以将结果看作是概率,某个类别概率越大,将样本归为该类别的可能性也就越高。Softmax就如下图(借鉴李…

最全的交叉熵损失函数(Pytorch)

损失函数 引言BCELossBCEWithLogitsLossNLLLossCrossEntropyLoss总结参考 引言 这里主要讲述pytorch中的几种交叉熵损失类,熵是用来描述一个系统的混乱程度,通过交叉熵我们就能够确定预测数据与真是数据之间的相近程度。交叉熵越小,表示数据越接近真实样…

简单的交叉熵损失函数,你真的懂了吗?

个人网站:红色石头的机器学习之路 CSDN博客:红色石头的专栏 知乎:红色石头 微博:RedstoneWill的微博 GitHub:RedstoneWill的GitHub 微信公众号:AI有道(ID:redstonewill&#xf…

交叉熵损失概念

交叉熵是信息论中的一个概念,要想了解交叉熵的本质,需要先从最基本的概念讲起。 1. 信息量 首先是信息量。假设我们听到了两件事,分别如下: 事件A:巴西队进入了2018世界杯决赛圈。 事件B:中国队进入了2…

softmax交叉熵损失函数深入理解(二)

0、前言 前期博文提到经过两步smooth化之后,我们将一个难以收敛的函数逐步改造成了softmax交叉熵损失函数,解决了原始的目标函数难以优化的问题。Softmax 交叉熵损失函数是目前最常用的分类损失函数,本博文继续学习Softmax 交叉熵损失函数的改…

史上最全交叉熵损失函数详解

在我们自学神经网络神经网络的损失函数的时候会发现有一个思路就是交叉熵损失函数,交叉熵的概念源于信息论,一般用来求目标与预测值之间的差距。比如说我们在人脑中有一个模型,在神经网络中还有一个模型,我们需要找到神经网络模型…

交叉熵损失函数原理详解

交叉熵损失函数原理详解 之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问题中经常使用的一种损失函数,对于其内部的原理总是模模糊糊,而且一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softm…

损失函数——交叉熵损失函数

一篇弄懂交叉熵损失函数 一、定义二、交叉熵损失函数:知识准备:1、信息熵:将熵引入到信息论中,命名为“信息熵”2、 KL散度(相对熵): 交叉熵:结论: Softmax公式Sigmoid常…

交叉熵损失函数详解

我们知道,在二分类问题模型:例如逻辑回归「Logistic Regression」、神经网络「Neural Network」等,真实样本的标签为 [0,1],分别表示负类和正类。模型的最后通常会经过一个 Sigmoid 函数,输出一个概率值&am…

交叉熵损失函数(CrossEntropy Loss)(原理详解)

监督学习主要分为两类: 分类:目标变量是离散的,如判断一个西瓜是好瓜还是坏瓜,那么目标变量只能是1(好瓜),0(坏瓜)回归:目标变量是连续的,如预测西瓜的含糖率…

nn.CrossEntropyLoss()交叉熵损失函数

1、nn.CrossEntropyLoss() 在pytorch中nn.CrossEntropyLoss()为交叉熵损失函数,用于解决多分类问题,也可用于解决二分类问题。在使用nn.CrossEntropyLoss()其内部会自动加上Sofrmax层 nn.CrossEntropyLoss()的计算公式如下: 其中&#xff0c…

损失函数——交叉熵损失函数(CrossEntropy Loss)

损失函数——交叉熵损失函数(CrossEntropy Loss) 交叉熵函数为在处理分类问题中常用的一种损失函数,其具体公式为: 1.交叉熵损失函数由来 交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性。首先…

损失函数——交叉熵损失(Cross-entropy loss)

交叉熵损失(Cross-entropy loss)是深度学习中常用的一种损失函数,通常用于分类问题。它衡量了模型预测结果与实际结果之间的差距,是优化模型参数的关键指标之一。以下是交叉熵损失的详细介绍。 假设我们有一个分类问题&#xff0…

【Pytorch】交叉熵损失函数 CrossEntropyLoss() 详解

文章目录 一、损失函数 nn.CrossEntropyLoss()二、什么是交叉熵三、Pytorch 中的 CrossEntropyLoss() 函数参考链接 一、损失函数 nn.CrossEntropyLoss() 交叉熵损失函数 nn.CrossEntropyLoss() ,结合了 nn.LogSoftmax() 和 nn.NLLLoss() 两个函数。 它在做分类&a…

一文读懂交叉熵损失函数

进行二分类或多分类问题时,在众多损失函数中交叉熵损失函数较为常用。 下面的内容将以这三个问题来展开 什么是交叉熵损失以图片分类问题为例,理解交叉熵损失函数从0开始实现交叉熵损失函数 1,什么是交叉熵损失 交叉熵是信息论中的一个重…

交叉熵损失函数

目录 一、交叉熵损失函数含义 二、交叉熵损失函数定义为:​ 三、交叉熵损失函数计算案例 一、交叉熵损失函数含义 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的。给定两个 概率分布p和q,通过q来表示p的交叉熵为 交叉熵刻画…

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

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

js遍历数组中的对象并拿到值

拿到一组数组,数组中是对象,想拿到这个对象里面的某个值,可以参考以下例子: 这样就拿到所有n1的值. 想拿到这个对象里面所有对应的值如下: 也可以这样取值: 往数组里面push多个值: js中!!用法 …

js遍历数组以及获取数组对象的key和key的值方法

数组: let arr [{ appendData: { "Expiration Date mm- dd - yyyy(2D)": "03-04-2025" }},{appendData: { "Manufacturer(21P)": "MURATA" }}]arr.forEach((value,i)>{ //数组循环for(var pl in value){ //数组对象遍…