AI

d2l 学习笔记:交叉熵

·4 分钟阅读·1243 字

整理 d2l 学习笔记:交叉熵 的核心概念、关键流程与实践要点

d2l 学习笔记:交叉熵

信息量:I(x)=−logP(x)I(x)= -log P(x) 概率的信息量。描述单个事件的信息量。 因为在编码中我们希望能减少的整体的编码长度来提高信息密度,从而提高传输效率。所以可以统计编码中代表不同状态信息出现的概率,对出现概率较小的事件使用长编码,对概率高的事件使用短编码。例如,如果需要传输的信息是英文,那么可以统计不同字母出现的概率。假设出现概率最高的字母是e,那么就可以对e使用00进行编码,而对于概率最小的u就可以使用多位数的编码。这么做的原因是光凭借一位数二进制的00和11实际上无法表示26个字母。在二进制中,如果想表示26个字母,至少需要5位二进制数。那有没有办法能减少整体的编码位呢,就是对从00到1111111111的不同数字,将位数小的00分配给出现概率高的e,以此类推。 为什么选这个公式作为信息量? 这来源于对信息量的直觉,既:

  • 单调性:概率越小,信息量越大。 太阳升起 p=0.9999p=0.9999,几乎没信息;彩票头奖 p=10−8p=10^{-8},信息量爆炸。 数学表达:p1<p2  ⟹  I(p1)>I(p2)p_1 < p_2 \implies I(p_1) > I(p_2)

  • 零信息条件:必然事件 p=1p=1,信息量为 00。 百分百会发生的事,没有任何新消息。I(1)=0I(1)=0

  • 可加性(最关键):独立事件联合信息量 = 各自信息量相加 设 A、B 独立,P(AB)=P(A)P(B)P(AB)=P(A)P(B),则 I(P(A)P(B))=I(P(A))+I(P(B))I(P(A)P(B)) = I(P(A)) + I(P(B)) 举例:抛两次独立硬币,“第一次正面、第二次反面” 这件事的总信息量 = 第一次正面的信息量 + 第二次反面的信息量。

  • 非负性:信息量不能是负数,I(p)≥0I(p)\ge0,不可能 “发生一件事反而丢失信息”。 其实也很好理解,因为如字母e出现的概率是100%那么就只需要一个0就能表示了,但我们在全是字母e的大串字母里获取不到任何信息。而如果一个字母出现的概率,非常小,当他出现时,你甚至都能猜到他一定是属于那几个单词中的一个。同时我们需要判断使用新编码方式后,优化了多少信息量,就自然引出了熵的概念。 熵:H(P)=−∑​P(x)logP(x)H(P)=−∑​P(x)logP(x) 信息量的数学期望,也就是加权平均数。

交叉熵:H(P,Q)=−∑P(x)logQ(x)H(P,Q)=−∑P(x)logQ(x) 使用真实分布 P 做权重对模型分布 Q 的信息量进行加权平均。

为什么深度学习要用这样一个公式来评判参数的好坏? P(x)P(x)表示了真实的数据分布,它表示了从x  ⟹  P(x)x \implies P(x)的真实的映射,而Q(x)Q(x)就是我们通过模型预测的概率。如果参数能够完美预测,那么就会有Q(x)=P(x)Q(x)=P(x),也就是H(P,Q)=H(P)H(P,Q)=H(P)。但事实是训练结果总是会与真实结果有差距的,所以计算交叉熵给了我们一个优化模型的方向,就是通过不断的缩小H(P,Q)H(P,Q)使其不断趋近于H(P)H(P)。


关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro