【交叉熵损失函数】关于交叉熵损失函数的一些理解

article/2025/9/9 21:43:41

目录

  • 0. 前言
  • 1.损失函数(Loss Function)
    • 1.1 损失项
    • 1.2 正则化项
  • 2. 交叉熵损失函数
    • 2.1 softmax
    • 2.2 交叉熵

0. 前言

有段时间没写博客了,前段时间主要是在精读一些计算机视觉的论文(比如yolov1),以及学cs231n这门AI和计算机视觉领域的经典课程。我发现很多事情不能着急,质变需要量变的积累,违背事物发展的客观规律,往往适得其反。

今天在学习cs231n的时候看到了关于交叉熵损失函数的讲解,发现之前虽然经常用到这个损失函数,但却对里面的细节很模糊,学完之后更清晰了一些,所以做个总结笔记,方便以后快速回顾。学习就是不断重复的过程。

1.损失函数(Loss Function)

损失函数作用是:衡量真实值和模型预测值之间的差异

为什么要有损失函数呢?

以分类任务为例,在神经网络中,模型前向传播求出每一类别的得分(score),然后将score带入损失函数中,求出Loss。再使用梯度下降法,反向传播,通过降低损失值(Loss)对模型的参数进行优化。

损失函数通常由损失项正则化项组成。

1.1 损失项

损失项的目的就是之前说的,为了衡量真实值和模型预测值之间的差异

1.2 正则化项

正则化项的目的是对高次项的特征进行惩罚,减轻过拟合的程度,进而可以提高模型的泛化能力。

常用的正则化有L1正则化和L2正则化。假如现在要训练一个线性模型,y = Wx + b,其中W就是我们要训练的参数(由w1,w2,…wn n个参数组成),b是偏置项。

则L1正则化就是

在这里插入图片描述

L2正则化为:

在这里插入图片描述

2. 交叉熵损失函数

交叉熵损失函数是多分类问题中很常用的损失函数,而交叉熵损失函数又离不开softmax函数。因为在多分类问题中,神经网络最后一层全连接层的原始输出只是每一类的得分(score)向量。比如以MINIST手写数字识别为例,我们构建的神经网络的最后一层肯定只有10个神经元(每个神经元输出0-9数字的得分)。

注意,这里10个神经元输出的只是得分,而非该图片属于该数字的概率。那要输出概率该怎么办呢?这就要用到sofrmax处理了。

2.1 softmax

softmax函数定义为:

在这里插入图片描述

比如对于一个猫cat,狗dog,马horse的三分类问题,我们的神经网络最后一层给出每类得分为[10,9, 8],那softmax应该这么求:

在这里插入图片描述

表示的含义是:模型推测该图片是猫的概率为67%,狗的概率为24%,马的概率为9%

用ex求出的值恒为正,可以表示概率。

在这里插入图片描述
另外,从上面的例子也可以看出softmax可以把得分差距拉的更大:最后的全链接层得分输出为:[10,9,8],相差其实不大。而经过softmax之后输出为:[0.67,0.24,0.09],相对而言差距更大了。

2.2 交叉熵

终于说到交叉熵了,前面说了,交叉熵损失函数离不开softmax,应该先经过softmax求出每类的概率,再求交叉熵,可是为什么要这样呢?

这得从信息论中交叉熵的定义说起。交叉熵H(p,q)的定义为:

在这里插入图片描述
注意,这里的log是以e为底的!

其中p为真实概率分布,而q为预测的概率分布。既然是概率,那肯定得满足:每个值在0-1之间,且所有值的和为1。

说到这里,我们再拐回去看softmax函数的定义:

在这里插入图片描述

可以经过softmax层后的输出的每个值在0-1之间,且所有值的和为1。

这就是为什么在交叉熵损失函数中需要先进行softmax处理了,因为这是交叉熵本身的定义决定的(输入必须为概率)。

再来看交叉熵损失函数:
在这里插入图片描述
在机器学习中,真实概率分布p(xi)就是训练集的标签,预测的概率分布q(xi)就是我们模型预测的结果。再以刚刚的猫、狗、马三分类为例,我们提供一张猫的照片,则真实概率分布p(xi)的向量为[1, 0, 0],而我们模型预测的概率分布q(xi)的向量为:[0.67, 0.24, 0.09]。

则对于该预测结果的交叉熵损失函数为:

在这里插入图片描述

-log(x)函数

在这里插入图片描述
因为是-log(q(x)),而q(x)是概率,在0-1之间,所以我们只看0-1之间的函数样子。

不难看出:

(1)当预测结果正确时,该正确类别的概率越大(q(x)越接近1),交叉熵损失函数越小。

(2)当预测结果正确,但正确类别的概率不够大时(q(x)较小),交叉熵损失函数较大。

(3)当预测结果错误时,交叉熵损失函数也很大。

END:)

参考

交叉熵损失函数原理详解


http://chatgpt.dhexx.cn/article/aREXJyOa.shtml

相关文章

CrossEntropy交叉熵损失函数及softmax函数的理解

参考链接1 参考链接2 参考链接3 参考链接4 (一)什么是Sigmoid函数和softmax函数? 提到二分类问题容易想到逻辑回归算法,而逻辑回归算法最关键的步骤就是将线性模型输出的实数域映射到[0, 1]表示概率分布的有效实数空间&#xff…

【基础篇】交叉熵损失函数(Cross Entropy Loss)

文章目录 1. 理论知识2. 代码 1. 理论知识 我们需要关注那些按常理来说不太可能发生的事情。『信息量』就是用来度量事件的不确定性, 事件包含的信息量应与其发生的概率负相关 。假设 X X X是一个离散型随机变量,它的取值集合为 { x 1 , x 2 , . . . ,…

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

交叉熵 期望: 期望就是所有随机变量的均值。 E(X)X1*P(X1)X2*P(X2)X3*P(X3) 熵: 熵表示所有信息量的期望。 信息量如何计算呢? 概率值取Log,然后加个负…

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

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的交叉熵为 交叉熵刻画…