交叉熵(Cross Entropy)

交叉熵信息论和机器学习中的一个重要概念,常用于衡量两个概率分布之间的差异,尤其作为分类模型(如逻辑回归神经网络)的损失函数。给定一个真实概率分布 p 和一个预测概率分布 q,交叉熵的公式为:

H(p,q)=−∑ip(i)log⁡q(i)

其中:

  • p(i) 是真实分布中事件 i 的概率(对于分类问题,通常是一个one-hot编码的向量,其中真实类别的概率为1,其他为0)。
  • q(i)是模型预测的分布中事件 i的概率(通常通过Softmax或Sigmoid函数获得)。
  • 求和范围 i 覆盖所有可能的类别或事件。
  • 对数底通常为自然对数(即 log⁡=ln⁡),单位为nats;有时使用 log⁡2,单位为bits。

特殊情况:二分类问题

在二分类问题中,真实标签 y∈{0,1},模型预测 y^ ​ 表示类别1的概率(则类别0的概率为 1−y^ ​)。交叉熵损失函数简化为:

L=−[ylog⁡(y^)+(1−y)log⁡(1−y^)]

推导过程:从最大似然估计(MLE)角度

交叉熵损失函数的推导可以从最大似然估计(Maximum Likelihood Estimation, MLE)的角度进行。MLE是一种频率派参数估计方法,目标是找到参数 θ 使得观测数据的概率(似然)最大化。这与交叉熵的联系在于:​最小化交叉熵等价于最大化对数似然,而负对数似然(Negative Log-Likelihood, NLL)就是交叉熵损失。下面我一步步解释推导过程。

步骤1: 定义似然函数

假设我们有一个分类模型(如逻辑回归或神经网络),参数为 θ。给定训练数据集 {(xj,yj)}j=1N ,其中 xj是输入特征, yj是真实标签(对于多分类问题, yj是one-hot向量)。模型输出预测概率分布 q(i∣xj;θ)(即对输入 xj,模型预测类别 i 的概率)。

在独立同分布(i.i.d.)假设下,整个数据集的似然函数是各个数据点似然的乘积:

L(θ)=∏j=1Np(yj|xj;θ)

这里, p(yj∣xj;θ) 是在参数 θ 下观测到标签 yj的条件概率。模型通过预测分布 q 来近似这个概率,因此:

p(yj|xj;θ)=q(yj|xj;θ)

对于一个具体类别 i,如果真实标签 yj​ 对应于类别 k(即 yj,k=1 ,其他 yj,k′=0 ,对于 k′≠k),则:

q(yj|xj;θ)=∏kq(k|xj;θ)yj,k

其中:

  • ∏k​ 表示对所有类别 k 求积。
  • yj,k 是真实标签的指示变量(当 yj=k 时 yj,k=1 ,否则为0)。

由于真实标签是one-hot的,只有真实类别 k 的项有效(即 q(k∣xj;θ)1),其他为1。因此,整个数据集的似然可简化为:

L(θ)=∏j=1Nq(yj|xj;θ)

步骤2: 最大似然估计和对数转换

最大化似然函数 L(θ) 等价于最大化对数似然(因为对数函数是单调递增的):

log⁡L(θ)=∑j=1Nlog⁡(q(yj|xj;θ))

为了优化方便,我们通常最小化负对数似然(NLL):

−log⁡L(θ)=−∑j=1Nlog⁡(q(yj|xj;θ))

步骤3: 等价于交叉熵

现在考虑真实分布 p 和预测分布 q。对于每个数据点 (xj,yj):

  • 真实分布 pj是一个Dirac分布(或one-hot分布):如果真实标签是类别 k,则 pj(k)=1 ,且 pj(i)=0 对于 i≠k。
  • 预测分布 qj 是模型输出的概率分布 q(i∣xj;θ)。

单个数据点的交叉熵定义为:

H(pj,qj)=−∑ipj(i)log⁡qj(i)

由于 pjpj​ 是one-hot的(只有真实类别 k 的 pj(k)=1),其他项为0,因此:

H(pj,qj)=−(1⋅log⁡qj(k)+∑i≠k0⋅log⁡qj(i))=−log⁡qj(k)

但 qj(k)=q(yj∣xj;θ)(模型对真实类别的预测概率),所以:

H(pj,qj)=−log⁡q(yj|xj;θ)

整个数据集的平均交叉熵损失是:

1N∑j=1NH(pj,qj)=−1N∑j=1Nlog⁡q(yj|xj;θ)

而负对数似然是:

−log⁡L(θ)=−∑j=1Nlog⁡q(yj|xj;θ)

因此,​最小化平均交叉熵损失 1N∑jH(pj,qj) 等价于最小化负对数似然 −log⁡L(θ)(仅差一个常数因子 1N ),进而等价于最大化似然函数 L(θ)

结论

从最大似然角度:

  • 交叉熵损失函数的推导本质是:​最大化数据似然 → 最小化负对数似然 → 等价于最小化交叉熵
  • 这解释了为什么在分类问题中,交叉熵是常用的损失函数:它直接来源于MLE框架,通过优化模型参数 θ使预测分布 q 逼近真实分布 p。

是否与贝叶斯有关?

是的,交叉熵和最大似然估计与贝叶斯推断有关联,但也有区别:

最大似然估计(MLE)是频率派方法

    • MLE 只关注最大化似然函数 p(data∣θ) ,不考虑参数的先验分布。
    • 因此,推导交叉熵损失直接从MLE出发,不涉及贝叶斯要素。

贝叶斯视角的关联

    • 贝叶斯推断的核心是后验分布: p(θ∣data)∝p(data∣θ)⋅p(θ) ,其中 p(data∣θ) 是似然, p(θ) 是先验。
    • 在优化上,最大化后验(Maximum a Posteriori, MAP)估计等价于最小化: −log⁡p(θ∣data)=−log⁡p(data∣θ)−log⁡p(θ)+constant
    • 这里,−log⁡p(data∣θ) 就是负对数似然(即交叉熵损失),而 −log⁡p(θ) 是先验的负对数(相当于正则化项,如L2正则对应高斯先验)。
    • 因此,在MAP估计中,最小化交叉熵损失(似然部分)被包含在内,但额外添加了先验项。例如,在逻辑回归中,使用交叉熵损失加上L2正则,就是MAP估计(高斯先验下)。

总结关系

    • 交叉熵本身源自频率派的MLE,但贝叶斯方法在MAP估计中会使用交叉熵作为似然部分的基础。
    • 两者都利用了对数似然的概念,但贝叶斯方法额外引入了先验,提供更丰富的参数不确定性建模。

腾讯元宝 - 轻松工作 多点生活腾讯元宝是基于腾讯混元大模型的AI应用,可以帮你写作绘画文案翻译编程搜索阅读总结的全能助手https://yuanbao.tencent.com/bot/app/share/chat/c7ePnR7HxLAR

### 交叉熵损失概述 #### 定义 交叉熵损失是一种广泛应用于分类问题中的损失函数,在机器学习尤其是深度学习领域非常常见。该损失函数衡量的是模型预测的概率分布与真实标签之间的差异程度。 #### 公式推导 对于二元分类问题,使用的具体形式称为二元交叉熵损失(Binary Cross Entropy Loss, BCELoss),其表达式可以写作: \[ \text{BCE}(y,\hat y)=-(y\log(\hat y)+(1-y)\log(1-\hat y)) \] 这里 \(y\) 表示真实的类别标签(0 或者 1),而 \(\hat y\) 则代表由模型给出的对应类别的概率估计值[^1]。 当扩展到多分类情况时,则采用一般的交叉熵损失(CrossEntropyLoss): \[ H(p,q)=-\sum_{i} p(x_i)\cdot\log(q(x_i)) \] 其中\(p(x_i)\) 是实际发生的事件的真实分布;\(q(x_i)\) 是模型所预测出来的分布[^3]。 #### 计算方法 在实现上,比如 PyTorch 中 `nn.CrossEntropyLoss()` 实际内部集成了两个操作:先执行 LogSoftmax 来获得对数似然比,再应用 NLLLoss(Negative Log Likelihood Loss)来完成最终的损失计算过程。 ```python import torch.nn as nn criterion = nn.CrossEntropyLoss() output = model(input_data) loss = criterion(output, target_labels) ``` 这段代码展示了如何创建一个交叉熵损失实例并用于训练过程中评估模型输出与目标标签间的差距。 #### 应用场景 - **图像识别**:无论是简单的手写数字辨识还是复杂的物体检测任务都可以见到它的身影; - **自然语言处理**:文本分类、情感分析等NLP子域也大量依赖此类损失函数来进行监督学习; - **医疗诊断辅助系统**:帮助提高疾病早期筛查准确性等方面发挥重要作用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值