想象你在看一档综艺节目《猜数字》:主持人心里想了一个 1 到 8 的数字,你每猜一次可以问一个只能回答“是/否”的问题。你可能会先问“它小于 5 吗?”,答案把范围砍掉一半……但有趣的是,有些答案让你兴奋得跳起来:“什么?竟然是最不可能的那个数!”而有些答案让你毫无感觉:“哦,意料之中。”信息论之父香农把这种感觉变成了数学:一件事越不可能发生,真正发生时带来的“惊讶值”就越大;而“你平均还得问多少个问题才能锁定答案”这个数,就是信息熵。熵越大,局面越不确定;熵越小,你几乎已经知道答案了。带着这个游戏,我们一起推开信息论的大门,从“自信息”走到“交叉熵”,你会发现:这套“问问题”的数学,正是决策树、数据压缩乃至大模型训练共同的地基。

岗位关联

信息熵是量化“不确定性”的通用标尺。掌握它,你就同时看懂了决策树为何按信息增益切分、分类模型为何用交叉熵做损失、压缩算法为何有理论极限——这是 AI 建模最基础也最常用的思维工具。

目录
  1. 可视化演示
  2. 自信息:一件小事的“惊讶值”
  3. 信息熵公式:把惊讶值取平均
  4. 熵的性质:均匀时最“混乱”
  5. 联合熵:两个数字一起猜
  6. 条件熵:知道了线索之后
  7. 实际应用:决策树与数据压缩
  8. 交叉熵:模型学习的指路标
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

香农熵量化随机变量的平均不确定性,公式推导、极值性质、联合条件熵与压缩应用全流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

香农熵公式 自信息 -log₂p(x) 衡量单事件的信息量 熵是自信息的期望即加权平均 H(X) = -Σ p(x) log₂ p(x) 熵值越大表示随机变量的不确定性越高

自信息:一件小事的“惊讶值”

《猜数字》节目有一个特别环节:主持人在宣布答案前会先“友情剧透”——他说“注意哦,这个数字是7”。如果观众猜的数字五花八门,7 只是平平无奇的一个选项,这句话毫无波澜;但如果规则是“最不可能出现的数字胜出”,而 7 恰好是全场投票最少的一个,全场就会爆发出惊呼。你感受到的“惊讶值”,就是香农定义自信息的灵感来源。

香农把“事件 x 发生带来的信息量”写成公式 $I(x) = -\log_2 P(x)$。它的直觉是:概率越大,越不稀奇,信息量越小;概率越小,越意外,信息量越大。为什么偏偏用对数?因为“独立事件同时发生”的信息量应该相加,而概率要相乘——$P(AB)=P(A)P(B)$,取对数恰好把乘法变成加法,保证可加性。

I(x)=−log⁡2P(x)\displaystyle I(x) = -\log_2 P(x)

1. 对数压缩:变量 $x$ 取值为 $P(x)$,$\log_2$ 把乘法映射为加法,让多个独立事件的信息量可以累加

2. 负号处理:因为 $0 \le P(x) \le 1$,$\log_2 P(x)$ 恒为负,加负号保证信息量非负

3. 底数意义:底数为 $2$ 表示信息量按“一个是/否问题”来计量,单位叫比特(bit),$\log_2 8 = 3$ 意为需要 3 个是非问题

4. 概率关系:当 $P(x) = 1$ 时 $I(x) = 0$,必然事件毫无信息;$P(x)$ 越小,$I(x)$ 越大

回到节目里:主持人如果公平地随机想数字,每个数字“惊讶值”一样大;如果主持人总爱想同一个数字,当他说出那个数字时你只会想“果然如此”,信息量趋近于零。自信息就是这样一个“单次答案的惊讶计分器”。

信息熵公式:把惊讶值取平均

你连玩十轮《猜数字》,只记录“单次惊讶值”还不够——这轮数字刁钻让你惊讶、下轮平淡无奇,你真正关心的是:平均每轮我要被惊讶多少次?或者说,平均我准备多少个是非问题才能赢下游戏?香农用期望回答了这个问题:把每个可能结果按概率加权,求平均信息量,这就是信息熵 $H(X)$。

它不再关心“某个具体答案”,而是关心“整局游戏的平均难度”。熵越大,说明每次开奖的不确定性越大,你需要准备的问题越多;熵越小,说明局势几乎已定,随便猜也八九不离十。

H(X)=−∑i=1nP(xi)log⁡2P(xi)\displaystyle H(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i)

1. 求和符号:对随机变量 $X$ 的所有取值 $x_1, x_2, \dots, x_n$ 逐一累加

2. 单点贡献:$P(x_i) \log_2 P(x_i)$ 是第 $i$ 个结果“概率与惊讶值之积”,即加权惊讶值

3. 负号外提:负号放在求和号外,令每一项累加后必然非负

4. 结果含义:$H(X)$ 就是“平均惊讶程度”,单位比特,等于你平均需要问的是非问题个数

主持人随机想 1~8 这 8 个数时,每个 $P(x_i)=\tfrac18$,套入公式得 $H(X)=\log_2 8 = 3$ 比特——这正是“平均要问 3 个是非问题”的数学化表达。熵不是某个答案的惊讶值,而是整局游戏的“平均难度评级”。

熵的性质:均匀时最“混乱”

节目组为了提高收视率,决定试验不同的“抽数规则”:规则 A 是完全随机,规则 B 是 90% 概率出 1 号数字。你会直观地感到规则 A 更难猜。熵的性质恰好刻画了这种直觉,其中最重要的一条是:均匀分布熵最大。当所有可能结果等概率时,你手中的线索最少,平均问题数达到上限 $\log_2 N$。

0≤H(X)≤log⁡2N\displaystyle 0 \le H(X) \le \log_2 N

1. 非负性:由定义式每一项贡献非负,所以 $H(X) \ge 0$,等号在某个结果概率为 1 时取到

2. 最大熵:$H(X) \le \log_2 N$ 给出熵的硬顶,$N$ 是可能取值的个数

3. 等号条件:当且仅当所有 $P(x_i)=\frac{1}{N}$ 时熵达到最大值 $\log_2 N$

4. 独立可加:若 $X$、$Y$ 相互独立,则 $H(X,Y) = H(X) + H(Y)$,不确定性直接相加

这就像猜数字时,如果主持人“偏好”某个数字,你会按概率优先猜热门数字,问题数下降;而完全随机的 8 个数,谁也没有优先权,平均问题数达到峰值 3 比特。熵的“最大”并不代表“最坏”,它只是描述“最不确定”的状态——概率全部摊平,信息也就最分散。

联合熵:两个数字一起猜

节目升级了:两位主持人各想一个数字,你要同时猜中两个才算赢。这时候不确定性来自“两个变量的联合”,于是有了联合熵 $H(X,Y)$。它把二维联合分布的整体不确定性加总,回答“同时锁定两个数字平均要问几个问题”。

H(X,Y)=−∑i=1n∑j=1mP(xi,yj)log⁡2P(xi,yj)\displaystyle H(X, Y) = -\sum_{i=1}^{n}\sum_{j=1}^{m} P(x_i, y_j) \log_2 P(x_i, y_j)

1. 二维求和:对 $X$ 的 $n$ 个取值与 $Y$ 的 $m$ 个取值做双重遍历,共 $n \times m$ 个联合概率

2. 联合概率:$P(x_i, y_j)$ 是“$X$ 取 $x_i$ 且 $Y$ 取 $y_j$”同时发生的概率

3. 对数乘积:$\log_2 P(x_i, y_j)$ 衡量这一对组合共同带来的惊讶值

4. 整体期望:对所有联合事件按概率加权求和,得到两变量总体的平均不确定度

如果两位主持人各自独立选数,那么 $H(X,Y)=H(X)+H(Y)$,8 选 1 加 8 选 1 就是 6 比特;如果他们暗中商量、总选同一个数字,联合熵反而变小,因为你只需猜中一次,另一个自动跟上。联合熵把“一起猜两个数”的难度完整量化了。

条件熵:知道了线索之后

假设主持人决定给你一条免费线索:“我想到的数字是个偶数。”你立刻明白:候选从 8 个缩到 4 个。这条线索减少的不确定性,正是条件熵要衡量的对象——$H(X|Y)$ 表示“已知 $Y$ 的取值后,$X$ 还剩多少不确定性”。

H(X∣Y)=−∑i=1n∑j=1mP(xi,yj)log⁡2P(xi∣yj)\displaystyle H(X \mid Y) = -\sum_{i=1}^{n}\sum_{j=1}^{m} P(x_i, y_j) \log_2 P(x_i \mid y_j)

1. 条件概率:$P(x_i \mid y_j)$ 表示已知 $Y=y_j$ 时 $X=x_i$ 的条件概率

2. 联合加权:外层乘 $P(x_i, y_j)$,把“$Y$ 出现 $y_j$ 且 $X$ 取 $x_i$”的联合概率作为权重

3. 内层惊讶:$\log_2 P(x_i \mid y_j)$ 是在线索已知后的剩余惊讶值

4. 关系纽带:$H(X \mid Y) = H(X,Y) - H(Y)$,条件熵等于联合熵减去已知部分的熵

还有一个重要的“熵减定理”:$H(X \mid Y) \le H(X)$。额外信息只会减少或保持不确定性,绝不会让事情更乱。就像“是偶数”这条线索把你的平均问题数从 3 降到 2;如果线索是“我想到的是 1”,条件熵直接归零——你已经不需要再问任何问题。

实际应用:决策树与数据压缩

你在电视台上赢了一大笔奖金,节目策划悄悄记下了你的策略:你总是先问“哪个问题能把候选数砍得最狠”。这正是决策树的建树逻辑!在真实数据里,我们不知道哪个特征最有区分度,就用信息增益来度量“按特征 A 划分后,不确定性被消灭了多少”。

Gain(D,A)=H(D)−H(D∣A)\displaystyle \text{Gain}(D, A) = H(D) - H(D \mid A)

1. 划分前熵:$H(D)$ 是数据集 $D$ 标签的经验熵,代表划分前的不确定性

2. 划分后熵:$H(D \mid A)$ 是按特征 $A$ 分组后各子组标签熵的加权平均

3. 差值意义:$\text{Gain}(D, A)$ 越大,说明 $A$ 消灭的不确定性越多、越适合做根节点

4. 递归执行:每层都选信息增益最大的特征,树就一步步把数据“猜”得更准

同样的思想也躺在压缩软件里:香农信源编码定理告诉我们,任何无损压缩的平均码长都不可能低于熵值 $H(X)$——这就是压缩率的理论天花板。均匀分布的 8 个数字必须用 3 位二进制码,而高度偏斜的分布你可以给高频数字分配短码、低频数字分配长码,平均码长轻松小于 3 位。熵,是信息压缩的“最小成本线”。

交叉熵:模型学习的指路标

节目最后,你决定训练一个“猜数字 AI”。你的策略是:先统计主持人过去 100 轮的真实偏好 $p$,然后让模型输出一个预测分布 $q$。模型猜得越像真实偏好,你赢得越轻松。怎么衡量“像不像”?答案是交叉熵。

H(p,q)=−∑xp(x)log⁡2q(x)\displaystyle H(p, q) = -\sum_{x} p(x) \log_2 q(x)

1. 真实分布:$p(x)$ 是真实的概率分布,作为外层的加权权重

2. 预测分布:$\log_2 q(x)$ 对预测概率取对数,体现“我用 $q$ 脑补这个世界时的惊讶值”

3. 混合相乘:$p(x) \log_2 q(x)$ 把“真实权重”与“预测惊讶值”相乘再求和

4. 不对称性:$H(p, q) \ne H(q, p)$,因为求权重的分布和求惊讶值的分布角色不同,交换位置结果不同

交叉熵天然是分类模型的损失函数:训练时真实标签 $p$ 是确定的,模型输出 $q$,交叉熵越小说明 $q$ 越贴近 $p$。若真实类别概率为 1、其余为 0,交叉熵正好退化为“正确类别的预测概率取负对数”——模型若给正确类别打了低分,惊讶值飙高,损失就大。AI 顺着交叉熵这位“严厉裁判”不断修正自己的预测,直到 $q$ 几乎复刻 $p$ 的偏好,比赛便胜券在握。

AI 应用场景

信用评分决策树:用信息增益选根节点

阶段:特征工程与模型选择

解决的问题:银行做信用卡风控时,有收入、职业、负债率、年龄等几十个特征。传统做法靠业务专家拍脑袋决定先用哪个特征分组,既主观又容易漏掉强区分度特征。用信息增益对每个特征排序,自动挑出“熵减最多”的特征做根节点,模型可解释性强且准确率更高。

具体案例:某消费金融公司对 3 万条历史样本计算各特征的信息增益,发现“月收入是否超过 8000”的增益最高,于是把它作为决策树根节点,首层划分就让负样本占比从 28% 骤降到 11%,风控模型 AUC 提升 0.05。

无损压缩引擎:让文件再小一半

阶段:数据存储与预处理

解决的问题:海量日志和模型参数需要存储,但通用压缩工具不知道字符的真实频率分布。利用熵的“下界”思想,先统计每个符号出现概率,再用熵值估算理论最小体积,指导 Huffman 或算术编码分配短码给高频符号。

具体案例:某推荐系统每日产生 200GB 用户行为日志,团队统计后发现 80% 的日志只由 5 种固定事件构成,直接算出日志熵值低至 1.2 比特/符号,据此定制压缩策略,使存储成本每月节省 40% 的带宽与硬盘开销。

深度学习图像分类:交叉熵做损失

阶段:模型训练与优化

解决的问题:图像分类模型的输出是 1000 类的概率分布,训练时需要一个“差异计分器”告诉模型预测偏了多少。交叉熵把真实标签分布 $p$ 与预测分布 $q$ 的差距转化为单个标量,反向传播清晰高效,是分类任务最主流的损失函数。

具体案例:某自动驾驶团队训练交通标志分类器,测试中发现模型对“限速 40”和“限速 60”两个易混类别的交叉熵损失迟迟不降,便用熵值分析确认这两个类别的条件熵过大,针对性地补充了更多样本后,准确率从 91% 提到 97%。

Python 演示

python59 行
import mathfrom collections import Counter, defaultdict  def entropy(labels):    """计算经验熵(单位:比特)"""    total = len(labels)    h = 0.0    for count in Counter(labels).values():        p = count / total        h -= p * math.log2(p)    return h  def conditional_entropy(dataset, feature_idx):    """H(标签 | 特征):按特征取值分组后加权平均"""    groups = defaultdict(list)    for sample in dataset:        groups[sample[feature_idx]].append(sample)    total = len(dataset)    h = 0.0    for group in groups.values():        weight = len(group) / total        h += weight * entropy([s[-1] for s in group])    return h  def info_gain(dataset, feature_idx):    """信息增益 = 总熵 - 条件熵"""    total_h = entropy([s[-1] for s in dataset])    return total_h - conditional_entropy(dataset, feature_idx)  def cross_entropy(p, q):    """交叉熵 H(p,q),p 为真实分布,q 为预测分布"""    return -sum(pi * math.log2(qi) for pi, qi in zip(p, q) if pi > 0 and qi > 0)  if __name__ == "__main__":    # 例1:均匀 vs 偏斜样本的熵对比    fair = entropy([0, 1, 1, 0, 1, 0, 0, 1])    biased = entropy([0, 0, 0, 0, 0, 0, 0, 1])    print("公平样本熵:", round(fair, 3), "比特")    print("偏斜样本熵:", round(biased, 3), "比特")     # 例2:小数据集的天气特征信息增益    dataset = [        ["sunny", "play"], ["sunny", "no"], ["sunny", "play"],        ["rainy", "play"], ["rainy", "play"], ["rainy", "no"],        ["overcast", "play"], ["overcast", "play"], ["overcast", "play"]    ]    print("天气特征信息增益:", round(info_gain(dataset, 0), 3), "比特")     # 例3:交叉熵评估预测分布的好坏    p = [0.5, 0.25, 0.25]    q_good = [0.45, 0.30, 0.25]    q_bad = [0.9, 0.05, 0.05]    print("好预测交叉熵:", round(cross_entropy(p, q_good), 3))    print("差预测交叉熵:", round(cross_entropy(p, q_bad), 3))
目的:用纯 Python 实现熵、条件熵、信息增益和交叉熵的计算,直观验证“分布越均匀熵越大、信息增益越大特征越重要、交叉熵越小预测越准”三大结论。
  1. def entropy(labels):接收一串标签,统计各类占比后按公式累加 $-\sum p \log_2 p$,是全部计算的地基
  2. groups[dataset[i][feature_idx]].append(...)按特征取值把样本分桶,模拟决策树“按特征划分”的动作
  3. h += weight * entropy(...)子组熵按样本占比加权求和,得到划分后的剩余熵 $H(D \mid A)$
  4. cross_entropy(p, q)用真实概率作为权重、预测概率作为惊讶值源头,体现两个分布的不对称互动

常见误区

误区我总觉得信息熵是描述系统乱不乱、坏不坏的指标,熵越大说明数据质量越差,训练模型就越难,最好把熵降到零。

正解熵只是“不确定性”的客观度量,本身不带褒贬。均匀分布的熵最大,只是说明“每个结果都等可能、最难以预测”,并非数据有问题。比如密码系统的安全性恰恰希望熵大——让攻击者无法预测;而决策树希望熵小,是为了精准分类。同一把尺子在不同场景有不同追求,关键是理解“熵大 = 不确定性高”这个中性事实。

为何常见:因为“混乱”在日常语境里通常是贬义词,初学者容易把物理热力学的直觉直接搬到信息论,忽略了香农熵只关心概率分布的分散程度。

误区既然信息量是“知识的量”,那么结果越是确定、百分之百会发生,我获得的知识就越多,信息量应该最大。

正解恰好相反。$I(x) = -\log_2 P(x)$,当 $P(x)=1$ 时信息量严格等于 0。你在《猜数字》里已经知道主持人永远选 1,他真的说出“是 1”时,你不会收获任何新知识。信息量定义的是“意外程度”而非“重要程度”——必然发生的事情不具有信息。

为何常见:人们容易把“价值”和“信息”混为一谈,一个事实可能很重要(比如“人终有一死”),但它早已确定,并不减少不确定性,所以信息量为零。

误区有时获得额外信息之后反而更纠结了,比如看了预告片后更猜不到结局,所以 $H(X \mid Y)$ 可以大于 $H(X)$。

正解数学上严格有 $H(X \mid Y) \le H(X)$。额外的已知信息绝不会增加不确定性,最坏也只是毫无帮助、熵不变。你的“更纠结”往往是因为获取的信息与目标不相关或信噪比太低,而不是信息本身让变量变乱。就像“主持人给了你一条无关线索”,你的猜中概率不会变差,最多原地踏步。

为何常见:把“信息”等同于“更多噪声来源”,而条件熵定义中 $Y$ 是已知量,已知的东西不会增加随机性,这是数学与生活直觉的常见错位。

误区交叉熵 $H(p,q)$ 既然能衡量 $p$ 和 $q$ 差多少,那它就等于两个分布的距离,应该对称且满足三角形不等式。

正解交叉熵不对称!$H(p,q) \ne H(q,p)$,因为外层做加权的是 $p$,内层取对数的却是 $q$,角色不能互换。它不是距离度量,而更像“用 $q$ 的脑回路去解读 $p$ 的世界时产生的惊讶值”。真实分布 $p$ 自身的熵(固有不确定性)也包含在交叉熵里,所以两个完全相同的分布求交叉熵也不为 0,而是等于 $H(p)$。

为何常见:机器学习里常说“最小化交叉熵=拉近两个分布”,让人误以为它是几何距离。加上“熵”字自带度量感,误区就更深了。

面试题

Q1. 掷一枚均匀硬币,结果“正面朝上”这一事件的信息量是多少?

单选题 · easy

  • A.2 比特
  • B.0 比特
  • C.1 比特← 正确答案
  • D.0.5 比特

答案:C。均匀硬币 $P(\text{正})=0.5$,信息量 $I=-\log_2 0.5 = 1$ 比特,正好等于问一个“是/否”问题获得的信息。猜数字游戏里,主持人随机二选一时,你需要问 1 个问题,这 1 个问题本身就是 1 比特。

Q2. 主持人从 8 个等可能数字里随机想一个,这个随机变量的熵是多少?

单选题 · easy

  • A.1 比特
  • B.2 比特
  • C.3 比特← 正确答案
  • D.8 比特

答案:C。均匀分布在 8 个取值上时,$H=\log_2 8 = 3$ 比特。想象每天猜 8 选 1 的游戏,最优策略每次用“是/否”问题把候选砍半,平均要问 3 个问题才能锁定答案,正好对应 3 比特。

Q3. 某事件发生的概率为 1,它带来的信息量是?

单选题 · easy

  • A.1 比特
  • B.无穷大
  • C.0 比特← 正确答案
  • D.无法确定

答案:C。$I(1) = -\log_2 1 = 0$。主持人必然选 1 号数字时,他说出“是 1”没有丝毫意外,你不能用它减少任何不确定性,所以信息量为零。信息量衡量“惊讶值”,而不是“重要性”。

Q4. 已知 $X$ 的熵为 3 比特,$Y$ 与 $X$ 完全无关且 $H(Y)=2$ 比特,则 $H(X,Y)$ 等于?

单选题 · mid

  • A.1 比特
  • B.3 比特
  • C.5 比特← 正确答案
  • D.6 比特

答案:C。两个独立随机变量的联合熵等于各自熵之和,$H(X,Y)=H(X)+H(Y)=5$ 比特。就像两位主持人各自独立想数字,你需要分别猜中两个数,问题数直接相加。

Q5. 关于信息熵 $H(X)$,下列说法正确的是?

单选题 · mid

  • A.$H(X)$ 可以取负值
  • B.$H(X)$ 最大不超过 $\log_2 N$,其中 $N$ 是取值个数← 正确答案
  • C.$H(X)$ 在分布偏斜时最大
  • D.$H(X)$ 表示 $X$ 的具体取值

答案:B。熵是非负且以 $\log_2 N$ 为上界的量,最大值在均匀分布时取得,偏斜反而让熵变小。它描述的是整体不确定性,而不是某个具体取值。$N$ 个等可能结果对应“平均需要 $\log_2 N$ 个问题”这个硬顶。

Q6. 以下哪些说法符合熵的性质?

多选题 · mid

  • A.$H(X) \ge 0$← 正确答案
  • B.$H(X) \le \log_2 N$← 正确答案
  • C.独立变量满足 $H(X,Y) = H(X) + H(Y)$← 正确答案
  • D.熵的单位始终是字节

答案:ABC。熵非负、有上界 $\log_2 N$、独立变量可加都是基本性质。熵通常用比特计量,只有以 8 为底时才谈字节,单位并不是固定字节,因此 D 错误。

Q7. 关于联合熵与条件熵的关系,正确的是?

多选题 · mid

  • A.$H(X,Y) = H(X) + H(Y \mid X)$← 正确答案
  • B.$H(X \mid Y) \le H(X)$← 正确答案
  • C.$H(X,Y) = H(X) + H(Y)$ 对任意 $X,Y$ 都成立
  • D.$H(X \mid Y,X)=H(X)$

答案:AB。链式法则 $H(X,Y)=H(X)+H(Y \mid X)$ 永远成立,条件熵不大于熵,因为额外信息不会增加不确定性。C 只有对独立变量才成立,不能推广到一切情况;D 中已知 $X$ 后再求 $X$ 的条件熵应为 0,而不是 $H(X)$。

Q8. 设 $H(X)=3$ 比特,$H(X,Y)=4$ 比特,则 $H(Y \mid X)$ 为?

单选题 · hard

  • A.1 比特← 正确答案
  • B.7 比特
  • C.4 比特
  • D.3 比特

答案:A。由链式法则 $H(X,Y)=H(X)+H(Y \mid X)$,得 $H(Y \mid X)=4-3=1$ 比特。这相当于:你先猜中了 $X$(花掉 3 个问题的信息),剩下 $Y$ 的不确定性已经很小,只需再准备 1 个问题。

Q9. 决策树中用信息增益选择特征时,下列说法正确的是?

多选题 · hard

  • A.信息增益 $= H(D) - H(D \mid A)$← 正确答案
  • B.信息增益越大,说明该特征对划分越有利← 正确答案
  • C.信息增益最大的特征应选作当前节点的划分特征← 正确答案
  • D.信息增益越小,说明该特征与标签越相关

答案:ABC。信息增益的公式就是划分前后熵的差值,增益越大说明特征消灭的不确定性越多,越应当优先划分。恰好相反的 D 是常见误读:增益小意味着特征对标签几乎没有预测力。

Q10. 交叉熵 $H(p,q)$ 中,对数的真数是下列哪个?

单选题 · mid

  • A.$p(x)$
  • B.$q(x)$← 正确答案
  • C.$p(x)q(x)$
  • D.$1 - p(x)$

答案:B。交叉熵定义为 $\displaystyle H(p,q) = -\sum_x p(x)\log_2 q(x)$,权重来自真实分布 $p$,对数作用于预测分布 $q$。这就是为什么它不对称:你把 $p$ 和 $q$ 对调,结果通常不同。模型训练时 $p$ 固定,$q$ 不断调整来压低交叉熵。