总结:
Ⅰ 概率p(x):事件 x 发生的概率。
Ⅱ 惊喜度、信息量:事件x发生时产生的惊喜(或信息),在1/p(x)的基础上取对数,即 -log p(x)。好处:(1)确定性事件的惊喜度 = 0;(2)如果有多个独立事件同时发生,他们产生的惊喜度可以直接相加。
Ⅲ 信息熵是在整个事件空间(客观世界)产生的平均惊喜度(惊喜的期望,客观世界平均惊喜度,完全正确认识事物产生的平均惊喜度)。
Ⅳ 交叉熵是基于某种主观认知(当前世界观)去感受客观世界时,产生的平均惊喜度(主观认知平均惊喜度)。主观认知和客观现实非常不匹配的时候,值非常大。
其中,下标 o 代表 objective;下标 s 代表 subjectiv。
Ⅴ 相对熵,K-L 散度:交叉熵-信息熵,即主观认知平均惊喜度-客观世界平均惊喜度;当前“世界观”产生的惊喜期望和完全正确认识事件时产生的惊喜期望的差值(只要事件仍然随机而非确定,就一定会给我们造成一定程度的惊喜,即不为 0【确定性事件,即100%发生的事件,熵为0】)
注意,由于客观事件相对简单,故放在左边;主观认知相对复杂,放在右边。
2个正态分布的KL散度:
Ⅵ 为什么分类问题不用MSE作为Loss?
- 如果要学习/拟合的对象是一个确定(deterministic)的函数,也就是说,一个给定的x,y=f(x) 是一个确定值(只不过观测中会存在噪声),就可以且应该用mse。
- 如果要学习/拟合的对象本身就是一个随机(stochastic)函数,也就是说,一个给定的x,y=f(x) 不存在确定值,而是存在一个分布,那么要学习也应该是一个分布,如果按照mse作为loss,学习到的很可能就只是这个随机现象的均值。所以本质的区别在于,同一个x下的不同观测值之间的波动,是要被看待为噪声,还是要被看待为想拟合的对象的固有属性。
分类问题的输入是直接观测或者特征,输出是预测值,我们可以由观测或特征可以直接推导出结果吗?一般而言不能,只能增加我们对不同结果的确信程度,因此输出是分布。
1. 信息量
1. 信息量 = 惊喜度
我们用 p(x)表示事件 x 发生的概率。这里我们先不讨论概率的内涵,只需要遵循直觉: 1/p(x) 可以衡量事件 x 发生时会造成的惊喜程度:概率越低的事件发生所造成的惊喜程度高;概率越高的事件发生所造成的惊喜程度低。
但是概率倒数这一运算的性质不是很好,所以在不改变单调性的情况下,可以将惊喜度(surprisal)定义为:
一个事件发生概率的倒数再取对数就是惊喜。
下面,从信息论 编码角度来理解。
在信息论中,信息量与编码长度之间存在直接且深刻的联系,这种联系通过概率和最优编码理论得以体现。我们可以从以下几个维度理解它们的关系:
2、信息量的本质:概率决定信息量
-
香农信息量公式
一个事件(符号)的信息量由其发生概率
决定,公式为:
- 直观理解:概率越低的事件,发生时传递的信息量越大(如“地震”比“晴天”信息量更大),因此需要更长的编码长度来表示;
- 概率越高的事件,信息量越小(如“每天日出”),可分配更短的编码长度。
-
举个例子
- 若“正面”概率
,“反面”概率
:
- 正面信息量:
比特,
- 反面信息量:
比特。
- 正面信息量:
- 霍夫曼编码会给高频的“正面”分配短编码(如 0,1比特),低频的“反面”分配长编码(如 1,1比特?这里有问题!下文会解释)。
- 若“正面”概率
3. 编码长度的优化目标:匹配信息量
1. 等长编码 vs. 变长编码
-
等长编码(如等长二进制):不管概率如何,每个符号占用相同长度(如2符号用1比特,4符号用2比特)。
- 优点:解码简单;缺点:未利用概率差异,平均长度可能冗余。
-
变长编码(如霍夫曼编码):根据概率分配长度,概率越高,编码越短,反之亦然。
- 优点:平均长度更短,接近理论下限;缺点:需前缀无关性保证解码唯一性。
2. 霍夫曼编码的核心逻辑
- 通过贪心算法构建二叉树,将高频符号放在离根节点更近的位置(短路径,短编码),低频符号放在远端(长路径,长编码)。
-
编码长度与信息量正相关:概率
越小,路径越长,编码长度
越大,且
近似等于
(向上取整)。
4. 香农信源编码定理:编码长度的理论下限
熵(Entropy)与平均编码长度
信源的香农熵 ( H(P) ) 是平均信息量的度量,公式为:
它表示对信源符号进行无失真编码时,平均编码长度的理论下限。-
霍夫曼编码的最优性
- 霍夫曼编码的平均长度 ( L ) 满足:
- 即平均编码长度无限接近熵值,实现了理论最优。
-
举例:上述三符号信源的熵为:
霍夫曼编码的平均长度为:
恰好等于熵值,达到最优。
- 霍夫曼编码的平均长度 ( L ) 满足:
理解这一关系的核心在于:编码长度是信息量的“物理映射”,信息论通过概率和熵为数据压缩提供了严谨的数学基础。
5. 霍夫曼编码
前缀无关性:霍夫曼编码的核心特性
霍夫曼编码的构造过程确保了任何一个编码都不是其他编码的前缀。例如:
- 若有编码“0”,则其他编码不能以“0”开头(如“01”“00”等均不允许)。
- 若有编码“10”,则其他编码不能以“10”开头(如“101”不允许,但“11”“0”等允许)。
解码过程:唯一确定符号的逻辑
假设编码符合前缀无关性(如正确的三元分布编码“0”“10”“11”),解码时可通过贪心算法逐个读取比特流,遇到一个完整编码即解码为对应符号,不会产生歧义。
举例说明:
若比特流为 1010011,解码步骤如下:
- 读取第1位“1”,无法确定符号(因“1”不是任何完整编码,可能是“10”或“11”的前缀)。
- 继续读取第2位“0”,组合为“10”,匹配编码“10”(对应“反面”),解码为符号“反面”,剩余比特流为“011”。
- 读取剩余比特流第1位“0”,匹配编码“0”(对应“正面”),解码为“正面”,剩余比特流为“11”。
- 读取“11”,匹配编码“11”(对应“中立”),解码为“中立”。
最终解码结果:反面 → 正面 → 中立,无歧义。
在霍夫曼编码中,编码长度由符号的概率决定:概率越高,编码越短;概率越低,编码越长。你提到的“正面编码为0(1比特),反面编码为10(2比特)”的例子,可能存在对符号数量的隐含假设(比如实际是三个或更多符号的分布),或者例子表述不够严谨。以下结合正确的霍夫曼编码流程展开分析,并纠正可能的误解:
6. 霍夫曼编码的核心规则
- 按概率排序:将所有符号按概率从高到低排序。
- 合并最小概率:每次选取概率最小的两个符号,合并为一个新节点(概率为两者之和),重复此步骤直至只剩一个根节点。
- 分配编码:从根节点到每个叶子节点的路径中,左分支标0,右分支标1,路径上的0/1序列即为该符号的编码。
示例:二元分布(两个符号)
若只有“正面”和“反面”两个符号,概率分别为 、
,则霍夫曼编码步骤如下:
-
初始节点:
正面(0.9)
、反面(0.1)
(按概率排序)。 -
合并节点:直接合并两个节点,生成父节点
(1.0)
,其中左子节点为正面(0.9)
,右子节点为反面(0.1)
(或反之,不影响编码长度)。 -
分配编码:
- 若左子节点(正面)路径为
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} ),则霍夫曼编码步骤如下:
-
初始节点:
正面(0.9)
、反面(0.05)
、中立(0.05)
(排序后)。 -
第一次合并:合并概率最小的“反面”和“中立”,生成新节点
(0.1)
,此时节点为正面(0.9)
、合并节点(0.1)
。 -
第二次合并:合并
正面(0.9)
和合并节点(0.1)
,生成根节点(1.0)
。 -
分配编码:
- 正面(左子节点)路径为
0
,编码为 0(1比特)。 - 合并节点的子节点:
- 反面(左分支)路径为
10
,编码为 10(2比特)。 - 中立(右分支)路径为
11
,编码为 11(2比特)。
- 反面(左分支)路径为
-
平均编码长度: 0.9×1 + 0.05×2 + 0.05×2 = 1.1 比特,接近熵值
(仍大于熵,因熵是理论下限)。
- 关键:此时“反面”和“中立”因概率低,编码长度更长(2比特),而“正面”概率高,编码最短(1比特)。
- 正面(左子节点)路径为
2. 熵
为了对从分布𝑝中随机抽取的数据进行编码, 我们至少需要𝐻[𝑃]“纳特(nat)”对其进行编码。 “纳特”相当于比特(bit),但是对数底为𝑒而不是2。因此,一个纳特是 1/log(2)≈1.44比特。
3. 交叉熵
如果把熵𝐻(𝑃)想象为“知道真实概率的人所经历的惊异程度”,那么什么是交叉熵? 交叉熵从𝑃到𝑄,记为
𝐻(𝑃,𝑄)。 我们可以把交叉熵想象为“主观概率为𝑄的观察者在看到根据概率𝑃生成的数据时的预期惊异”。 当
𝑃=𝑄时,交叉熵达到最低。 在这种情况下,从𝑃到𝑄
的交叉熵是𝐻(𝑃,𝑃)=𝐻(𝑃)。