5. 信息量、熵、交叉熵 2025-06-21

总结:

Ⅰ 概率p(x):事件 x 发生的概率。

Ⅱ 惊喜度、信息量:事件x发生时产生的惊喜(或信息),在1/p(x)的基础上取对数,即 -log p(x)。好处:(1)确定性事件的惊喜度 = 0;(2)如果有多个独立事件同时发生,他们产生的惊喜度可以直接相加。

Ⅲ 信息熵是在整个事件空间(客观世界)产生的平均惊喜度(惊喜的期望,客观世界平均惊喜度,完全正确认识事物产生的平均惊喜度)。 H_p(X) = -\sum_x p(x) \log p(x)

Ⅳ 交叉熵是基于某种主观认知(当前世界观)去感受客观世界时,产生的平均惊喜度(主观认知平均惊喜度)。主观认知和客观现实非常不匹配的时候,值非常大。
H_{p_o, p_s}(X) = -\sum_x p_o(x) \log p_s(x)
其中,下标 o 代表 objective;下标 s 代表 subjectiv。

Ⅴ 相对熵,K-L 散度:交叉熵-信息熵,即主观认知平均惊喜度-客观世界平均惊喜度;当前“世界观”产生的惊喜期望和完全正确认识事件时产生的惊喜期望的差值(只要事件仍然随机而非确定,就一定会给我们造成一定程度的惊喜,即不为 0【确定性事件,即100%发生的事件,熵为0】)
D_{KL}(p_o||p_s) = H_{p_o, p_s}(X) - H_{p_o, p_s}(X) = -\sum_x p_o(x) \log p_o(x)/p_s(x)
注意,由于客观事件相对简单,故放在左边;主观认知相对复杂,放在右边。

2个正态分布的KL散度:
\text{KL}(N(\mu_1, \sigma_1^2) \| N(\mu_2, \sigma_2^2)) = \log \frac{\sigma_2}{\sigma_1} - \frac{1}{2} + \frac{\sigma_1^2 + (\mu_1 - \mu_2)^2}{2\sigma_2^2}

Ⅵ 为什么分类问题不用MSE作为Loss?

  1. 如果要学习/拟合的对象是一个确定(deterministic)的函数,也就是说,一个给定的x,y=f(x) 是一个确定值(只不过观测中会存在噪声),就可以且应该用mse。
  2. 如果要学习/拟合的对象本身就是一个随机(stochastic)函数,也就是说,一个给定的x,y=f(x) 不存在确定值,而是存在一个分布,那么要学习也应该是一个分布,如果按照mse作为loss,学习到的很可能就只是这个随机现象的均值。所以本质的区别在于,同一个x下的不同观测值之间的波动,是要被看待为噪声,还是要被看待为想拟合的对象的固有属性。

分类问题的输入是直接观测或者特征,输出是预测值,我们可以由观测或特征可以直接推导出结果吗?一般而言不能,只能增加我们对不同结果的确信程度,因此输出是分布。

1. 信息量

1. 信息量 = 惊喜度

我们用 p(x)表示事件 x 发生的概率。这里我们先不讨论概率的内涵,只需要遵循直觉: 1/p(x) 可以衡量事件 x 发生时会造成的惊喜程度:概率越低的事件发生所造成的惊喜程度高;概率越高的事件发生所造成的惊喜程度低。
但是概率倒数这一运算的性质不是很好,所以在不改变单调性的情况下,可以将惊喜度(surprisal)定义为:



一个事件发生概率的倒数再取对数就是惊喜。

下面,从信息论 编码角度来理解。
在信息论中,信息量编码长度之间存在直接且深刻的联系,这种联系通过概率最优编码理论得以体现。我们可以从以下几个维度理解它们的关系:

2、信息量的本质:概率决定信息量

  1. 香农信息量公式
    一个事件(符号)x_i 的信息量由其发生概率 p(x_i)决定,公式为:
    I(x_i) = -\log_2 p(x_i) \quad \text{(单位:比特,若以自然对数则为纳特)}

    • 直观理解:概率越低的事件,发生时传递的信息量越大(如“地震”比“晴天”信息量更大),因此需要更长的编码长度来表示;
    • 概率越高的事件,信息量越小(如“每天日出”),可分配更短的编码长度
  2. 举个例子

    • 若“正面”概率 p(\text{正}) = 0.75,“反面”概率 p(\text{反}) = 0.25
      • 正面信息量:-\log_2 0.75 \approx 0.415 比特,
      • 反面信息量:-\log_2 0.25 = 2 比特。
    • 霍夫曼编码会给高频的“正面”分配短编码(如 0,1比特),低频的“反面”分配长编码(如 1,1比特?这里有问题!下文会解释)。

3. 编码长度的优化目标:匹配信息量

1. 等长编码 vs. 变长编码

  • 等长编码(如等长二进制):不管概率如何,每个符号占用相同长度(如2符号用1比特,4符号用2比特)。
    • 优点:解码简单;缺点:未利用概率差异,平均长度可能冗余。
  • 变长编码(如霍夫曼编码):根据概率分配长度,概率越高,编码越短,反之亦然。
    • 优点:平均长度更短,接近理论下限;缺点:需前缀无关性保证解码唯一性。

2. 霍夫曼编码的核心逻辑

  • 通过贪心算法构建二叉树,将高频符号放在离根节点更近的位置(短路径,短编码),低频符号放在远端(长路径,长编码)。
  • 编码长度与信息量正相关:概率 p(x_i)越小,路径越长,编码长度 l_i越大,且 l_i近似等于 \lceil \log_2 (1/p(x_i)) \rceil(向上取整)。

4. 香农信源编码定理:编码长度的理论下限

  1. 熵(Entropy)与平均编码长度
    信源的香农熵 ( H(P) ) 是平均信息量的度量,公式为:
    H(P) = -\sum p(x_i) \log_2 p(x_i)
    它表示对信源符号进行无失真编码时,平均编码长度的理论下限

  2. 霍夫曼编码的最优性

    • 霍夫曼编码的平均长度 ( L ) 满足:
      H(P) \leq L < H(P) + 1
    • 即平均编码长度无限接近熵值,实现了理论最优。
    • 举例:上述三符号信源的熵为:
      H(P) = -0.5\log_2 0.5 - 2 \times 0.25\log_2 0.25 = 1.5 \text{ 比特}
      霍夫曼编码的平均长度为:
      L = 0.5 \times 1 + 0.25 \times 2 + 0.25 \times 2 = 1.5 \text{ 比特}
      恰好等于熵值,达到最优。

理解这一关系的核心在于:编码长度是信息量的“物理映射”,信息论通过概率和熵为数据压缩提供了严谨的数学基础。

5. 霍夫曼编码

前缀无关性:霍夫曼编码的核心特性

霍夫曼编码的构造过程确保了任何一个编码都不是其他编码的前缀。例如:

  • 若有编码“0”,则其他编码不能以“0”开头(如“01”“00”等均不允许)。
  • 若有编码“10”,则其他编码不能以“10”开头(如“101”不允许,但“11”“0”等允许)。

解码过程:唯一确定符号的逻辑

假设编码符合前缀无关性(如正确的三元分布编码“0”“10”“11”),解码时可通过贪心算法逐个读取比特流,遇到一个完整编码即解码为对应符号,不会产生歧义。
举例说明
若比特流为 1010011,解码步骤如下:

  1. 读取第1位“1”,无法确定符号(因“1”不是任何完整编码,可能是“10”或“11”的前缀)。
  2. 继续读取第2位“0”,组合为“10”,匹配编码“10”(对应“反面”),解码为符号“反面”,剩余比特流为“011”。
  3. 读取剩余比特流第1位“0”,匹配编码“0”(对应“正面”),解码为“正面”,剩余比特流为“11”。
  4. 读取“11”,匹配编码“11”(对应“中立”),解码为“中立”。
    最终解码结果:反面 → 正面 → 中立,无歧义。

在霍夫曼编码中,编码长度由符号的概率决定:概率越高,编码越短;概率越低,编码越长。你提到的“正面编码为0(1比特),反面编码为10(2比特)”的例子,可能存在对符号数量的隐含假设(比如实际是三个或更多符号的分布),或者例子表述不够严谨。以下结合正确的霍夫曼编码流程展开分析,并纠正可能的误解:

6. 霍夫曼编码的核心规则

  1. 按概率排序:将所有符号按概率从高到低排序。
  2. 合并最小概率:每次选取概率最小的两个符号,合并为一个新节点(概率为两者之和),重复此步骤直至只剩一个根节点。
  3. 分配编码:从根节点到每个叶子节点的路径中,左分支标0,右分支标1,路径上的0/1序列即为该符号的编码。

示例:二元分布(两个符号)

若只有“正面”和“反面”两个符号,概率分别为 P(\text{正面})=0.9P(\text{反面})=0.1,则霍夫曼编码步骤如下:

  1. 初始节点正面(0.9)反面(0.1)(按概率排序)。
  2. 合并节点:直接合并两个节点,生成父节点(1.0),其中左子节点为正面(0.9),右子节点为反面(0.1)(或反之,不影响编码长度)。
  3. 分配编码
    • 若左子节点(正面)路径为0,则编码为 0(1比特)。
    • 右子节点(反面)路径为1,则编码为 1(1比特)。
    • 平均编码长度: 0.9×1 + 0.1×1 = 1 比特,接近熵值 H(P)≈0.47 吗?,此时熵是理论下限,但二元分布的霍夫曼编码无法突破1比特(因至少需要1位区分两个符号)。
    • 结论当只有两个符号时,霍夫曼编码必为等长编码(1比特)

示例:三元分布(三个符号)

若存在第三个符号(如“中立”),概率为 ( P(\text{中立})=0.05 ),总分布为 ( {0.9, 0.05, 0.05} ),则霍夫曼编码步骤如下:

  1. 初始节点正面(0.9)反面(0.05)中立(0.05)(排序后)。
  2. 第一次合并:合并概率最小的“反面”和“中立”,生成新节点(0.1),此时节点为正面(0.9)合并节点(0.1)
  3. 第二次合并:合并正面(0.9)合并节点(0.1),生成根节点(1.0)
  4. 分配编码
    • 正面(左子节点)路径为0,编码为 0(1比特)。
    • 合并节点的子节点:
      • 反面(左分支)路径为10,编码为 10(2比特)。
      • 中立(右分支)路径为11,编码为 11(2比特)。
    • 平均编码长度: 0.9×1 + 0.05×2 + 0.05×2 = 1.1 比特,接近熵值 H(P)≈0.57(仍大于熵,因熵是理论下限)。
    • 关键:此时“反面”和“中立”因概率低,编码长度更长(2比特),而“正面”概率高,编码最短(1比特)。

2. 熵

为了对从分布𝑝中随机抽取的数据进行编码, 我们至少需要𝐻[𝑃]“纳特(nat)”对其进行编码。 “纳特”相当于比特(bit),但是对数底为𝑒而不是2。因此,一个纳特是 1/log⁡(2)≈1.44比特。

3. 交叉熵

如果把熵𝐻(𝑃)想象为“知道真实概率的人所经历的惊异程度”,那么什么是交叉熵? 交叉熵从𝑃到𝑄,记为
𝐻(𝑃,𝑄)。 我们可以把交叉熵想象为“主观概率为𝑄的观察者在看到根据概率𝑃生成的数据时的预期惊异”。 当
𝑃=𝑄时,交叉熵达到最低。 在这种情况下,从𝑃到𝑄
的交叉熵是𝐻(𝑃,𝑃)=𝐻(𝑃)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容