交叉熵总览

本文介绍了在PyTorch中torch.nn.functional模块的binary_cross_entropy和cross_entropy两种交叉熵损失函数,着重讲解了它们在二分类和多分类问题中的使用方法,以及输入数据的预处理要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在修改网络的时候遇到了几种交叉熵分别是:

  • torch.nn.functional.binary_cross_entropy
  • torch.nn.functional.cross_entropy
    接下来分别对其进行介绍

一、二分类交叉熵损失

torch.nn.functional.binary_cross_entropy其中的binary的意思就是二进制。适用于二分类问题,其中每个样本只能属于两个类别之一
下面举例说明:# 示例用法

loss = F.binary_cross_entropy(torch.sigmoid(output), target)

其中输入label的位置也就是上面torch.sigmoid(output)部分可以看出,这个位置的输入需要经过归一化,将值映射到0-1之间的对样本的预测。而target位置呢需要输入float的数据类型,表示真实标签。其运算公式是:
在这里插入图片描述

二、多分类交叉熵损失

torch.nn.functional.cross_entropy适合多分类问题。下面举例

loss = F.cross_entropy(output, target)

output位置的输入是模型输入的原始分数即可,不需要经过softmax的激活函数。输入的target即为样本的标签,要求其元素的数据类型为整数类型,表示每个样本的真实类别。
计算公式是:
在这里插入图片描述
总的来说,主要区别在于输入的形式和适用问题的类型。binary_cross_entropy 用于二分类问题,需要经过 sigmoid 激活函数,而 cross_entropy 用于多分类问题,不需要 softmax 激活函数。选择合适的函数取决于你的问题和模型的输出形式。

### 交叉熵的概念 交叉熵是一种衡量两个概率分布之间差异的方法,在机器学习中广泛应用于分类任务。具体来说,对于给定的真实标签的概率分布 \( p \) 和预测标签的概率分布 \( q \),二者的交叉熵定义为: \[ H(p, q) = -\sum_x p(x)\log(q(x)) \] 其中 \( x \) 表示所有可能的状态。 在多类分类问题中,当真实标签采用 one-hot 编码形式时,即只有一个类别被标记为1而其他均为0,则上述公式可以简化为仅考虑实际类别对应的那一项[^3]。 ### 计算方式 针对神经网络输出层经过 softmax 函数处理后的结果向量 \( y_i \),以及对应样本的真实标签 \( t_i \),则单个训练样例上的平均交叉熵损失可表示为: \[ L(y,t) = -t \cdot \log{(y)} \] 这里 \( t \) 是one-hot编码的目标向量;\( y \) 则是由模型产生的预测概率向量。如果目标属于第 k 类,则有: \[ L_k(y,t) =-\log⁡(y[k]) \] 这表明我们只关心正确类别的对数似然值,并取负号作为最小化目标[^5]。 ### 应用场景 #### 图像识别 图像识别是典型的监督学习任务之一,通过大量标注过的图片数据集来训练卷积神经网络(CNNs), 使用交叉熵作为损失函数能够有效地指导权重更新过程,使得最终得到的决策边界尽可能区分不同类型的对象[^4]。 #### 自然语言处理(NLP) 无论是情感分析还是文本分类等NLP子领域内,都可以看到交叉熵的身影。它帮助构建更精准的语言模型,提高翻译质量、意图理解等方面的表现。 #### 迁移学习 迁移学习旨在利用源域的知识辅助目标任务的学习。某些情况下,即使特征空间不完全相同也可以借助预训练好的深层架构并调整最后一层以适应新的分类需求。此时同样适用交叉熵来进行微调阶段的误差反传优化工作[^2]。 ```python import torch.nn.functional as F output = model(input_data) # 假设model已经定义好并且input_data准备好 target = ... # target应为LongTensor类型的一维张量 loss = F.cross_entropy(output, target) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值