【学习一下】深入理解交叉熵

机器学习(尤其是分类问题)中,交叉熵损失(CrossEntropyLoss)是最常见的损失函数之一:
Loss=−∑c=1Myclog⁡(y^c) Loss = - \sum_{c=1}^{M}y_c\log(\hat{y}_c) Loss=−c=1∑Myclog(y^c)

本文详细总结一下这个公式是怎么来的,以及深入理解一下交叉熵的本质。

概率分布

根据随机变量的类型,概率分布有连续分布 和离散分布两大类。机器学习领域中,我们通常讨论的是离散分布,比如分类器输出的每个类别的概率:

Class 0 1 2 3 4
Probability 0.15 0.5 0.25 0.1 0.0

信息

在信息论中,信息 的本质是消除不确定。一个事件发生的概率越小,它发生时带来的信息量就越大:

事件 概率 信息量
"太阳从东边升起" ≈1.0 几乎为0(没什么信息)
"明天会下雨"(干旱地区) 0.01 很大(很有信息)
"抛硬币正面朝上" 0.5 中等

自信息(Self-Information)

对于单个事件xxx,其自信息定义为:
I(x)=−log⁡2P(x)=log⁡21P(x) I(x) = -\log_2 P(x) = \log_2 \frac{1}{P(x)} I(x)=−log2P(x)=log2P(x)1

这个公式来源于对I(x)I(x)I(x)性质的要求:

公理 数学表达 直观解释
非负性 I(x)≥0I(x) \geq 0I(x)≥0 信息量不能为负
确定性事件无信息 P(x)=1⇒I(x)=0P(x)=1 \Rightarrow I(x)=0P(x)=1⇒I(x)=0 必然事件不提供信息
独立事件可加 I(x,y)=I(x)+I(y)I(x,y) = I(x) + I(y)I(x,y)=I(x)+I(y) 独立事件的信息量相加
单调性 P(x)<P(y)⇒I(x)>I(y)P(x) < P(y) \Rightarrow I(x) > I(y)P(x)<P(y)⇒I(x)>I(y) 概率越小,信息量越大

根据独立事件可加性 这个函数方程可以推导出它的解就是对数函数:
I(P)=−k⋅log⁡(P) I(P)=-k\cdot\log(P) I(P)=−k⋅log(P)

其中kkk是常熟,通常取k=1k=1k=1,底数取2(单位是比特bit)或eee(单位是纳特nat)。

信息熵(Entropy)

信息熵是自信息的期望值 ,也就是随机变量每个可能取值的自信息基于其概率的加权平均,表示这个随机变量的平均不确定性:
H(X)=EI(X)=−∑i=1nP(xi)log⁡2P(xi) H(X) = EI(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i) H(X)=EI(X)=−i=1∑nP(xi)log2P(xi)

假设某个分类任务的其中一个样本真值标注GT为:

Class 0 1 2 3 4
Probability 0.0 0.0 0.0 1.0 0.0

而模型预测结果Pred为:

Class 0 1 2 3 4
Probability 0.15 0.2 0.25 0.1 0.3

则GT 的信息熵为 −1log(1)=0-1log(1)=0−1log(1)=0,Pred 的信息熵为
−0.15log⁡(0.15)−0.2log⁡(0.2)−0.25log⁡(0.25)−0.1log⁡(0.1)−0.3log⁡(0.3)=2.2282 -0.15\log(0.15)-0.2\log(0.2)-0.25\log(0.25)-0.1\log(0.1)-0.3\log(0.3)=2.2282 −0.15log(0.15)−0.2log(0.2)−0.25log(0.25)−0.1log(0.1)−0.3log(0.3)=2.2282

可以看到,模型预测值的信息熵是很大的,说明其确定性很低。

换个角度理解,GT 分布是完全确定的,描述其分布需要的数据量非常少。而Pred分布非常不确定,描述其分布需要的数据量很大。

交叉熵(CrossEntropy)

信息熵衡量的是一个分布自身的不确定性,而在机器学习中,我们通常需要描述两个分布之间的关系:

  • 真实分布P(真实标签的分布)
  • 预测分布Q(模型预测的概率分布)

交叉熵描述的就是:用分布Q来编码分布P的数据,平均需要多少bit?其定义是:
H(P,Q)=−∑i=1nP(xi)log⁡2Q(xi) H(P, Q) = -\sum_{i=1}^{n} P(x_i) \log_2 Q(x_i) H(P,Q)=−i=1∑nP(xi)log2Q(xi)

交叉熵与信息熵的关系

H(P,Q)=H(P)+DKL(P∥Q) H(P, Q) = H(P) + D_{KL}(P \parallel Q) H(P,Q)=H(P)+DKL(P∥Q)

其中DKL(P∥Q)D_{KL}(P \parallel Q)DKL(P∥Q)是KL散度(Kullback-Leibler Divergence):
DKL(P∥Q)=∑iP(xi)log⁡P(xi)Q(xi)=∑iP(xi)log⁡P(xi)−∑iP(xi)log⁡Q(xi) D_{KL}(P \parallel Q) = \sum_i P(x_i) \log \frac{P(x_i)}{Q(x_i)} = \sum_i P(x_i) \log P(x_i) - \sum_i P(x_i) \log Q(x_i) DKL(P∥Q)=i∑P(xi)logQ(xi)P(xi)=i∑P(xi)logP(xi)−i∑P(xi)logQ(xi)

KL散度描述了两个概率分布之间的差异,它是证据深度学习(EDL)的关键概念。

相关推荐
QY_Research_20 分钟前
2026房地产NFT平台创业机遇与落地指南分析报告
大数据·人工智能·物联网·机器人·制造
机器人零零壹2 小时前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
电子元件小说家3 小时前
2026年四季度电感市场观察:AI算力与汽车电子驱动下的选型与验证建议智能硬件
人工智能·汽车
网易CodeWave-小码哥3 小时前
支持多模块 Java 微服务导入|CodeWave SDD V4.5.10 上线
人工智能
AI你一生一世3 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
belldeep3 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
怕浪猫3 小时前
小程序成长计划上新:10 亿 Token 现在能调 DeepSeek-v4.1-flash了
人工智能·aigc·ai编程
ss2733 小时前
为什么PostgreSQL适合AI场景?
数据库·人工智能·postgresql
七牛云行业应用4 小时前
DeepSeek Super-agent 与 Grok Bot:开源 Agent 架构和聊天助手有何区别
人工智能·ai·架构·ai编程
维克兜率天4 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python