ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

信息论核心:从熵与互信息理解数据压缩与通信原理

信息论核心:从熵与互信息理解数据压缩与通信原理 1. 从“不确定性”到“信息量”一个直觉的起点聊到通信原理很多人第一反应是复杂的公式、频谱图还有一堆让人头疼的调制解调。但今天咱们先抛开那些从一个最根本、也最有趣的问题聊起什么是信息或者说我们如何量化“信息”这个东西想象一个场景你明天要出门我告诉你“明天可能会下雨”。这句话给你带来了多少信息好像有点用但又不太确定。接着我又告诉你“明天下午三点在市中心广场会下一场持续5分钟的小雨”。这句话的信息量是不是瞬间就大了很多为什么因为后一句话描述的事件更具体、更罕见或者说它的“不确定性”更大。当你听到这句话消除了你心中关于“明天天气”的巨大不确定性所以它承载的信息量就多。这就是信息论创始人香农给我们的核心洞见信息是用来消除不确定性的东西。一个事件的信息量与其发生的概率成反比。事件越不可能发生概率越小一旦它发生所带来的“意外”越大消除的不确定性就越多因此它携带的信息量就越大。把这个直觉数学化就得到了单个事件的自信息量公式。对于一个发生概率为P(x)的事件x其自信息量I(x)定义为I(x) -log₂ P(x)这里选择以2为底的对数其单位就是大家熟知的比特bit。为什么是比特这又回到了最基础的二进制选择。1比特的信息量正好可以告诉你一个“是”或“否”例如抛一次均匀硬币正面或反面的答案从而完全消除这个二元事件的不确定性。举个例子就明白了事件A抛一枚均匀硬币结果是正面。概率P(正面) 0.5。信息量I(正面) -log₂(0.5) 1 bit。这很合理因为你需要1比特来记录这个二选一的结果。事件B抛一枚均匀的六面骰子结果是6。概率P(6) 1/6 ≈ 0.1667。信息量I(6) -log₂(1/6) ≈ 2.585 bit。这个结果比1比特大因为猜中骰子哪一面朝上比猜中硬币哪一面朝上更难不确定性更大。事件C太阳从东边升起。这是一个几乎必然发生的事件概率P ≈ 1。信息量I ≈ -log₂(1) 0 bit。这告诉我们一个必然发生的事情不会带来任何新的信息因为它没有消除任何不确定性。所以自信息量描述的是单个特定事件发生时所带来的信息量。它是一个随机变量其取值依赖于具体哪个事件发生了。2. 从“单次惊喜”到“长期期望”平均信息量熵的引入理解了单个事件的信息量我们自然会想到下一个问题对于一个信源比如一个不断输出符号的装置它平均每次能给我们提供多少信息量我们不能只看它某一次发出罕见符号时的“惊喜”更要看它长期、稳定输出时整体上信息含量的期望值。这就是平均信息量在信息论中它有一个更响亮的名字——熵Entropy记作H(X)。这里的X代表一个离散随机变量比如信源可能输出的所有符号的集合。熵的定义非常直观它是信源所有可能事件的自信息量的概率加权平均数学期望。公式如下H(X) E[I(x)] Σ P(xᵢ) * I(xᵢ) - Σ P(xᵢ) * log₂ P(xᵢ)其中求和是对信源所有可能的输出符号xᵢ进行的。熵的单位同样是比特/符号。它衡量的是信源整体的平均不确定性或平均惊喜程度。熵越大意味着信源的平均不确定性越高平均每次发出的符号能带来的信息量就越大。2.1 熵的三种极端情况与直观理解为了深刻理解熵我们来看三个极端的例子情况一确定信源假设一个信源只会发出符号A即P(A) 1P(其他) 0。 计算熵H(X) -[1 * log₂(1) 0 * log₂(0) ...] 0 bit/符号。注意在信息论中规定0 * log₂(0) 0。 这意味着该信源没有任何不确定性它发出的每个符号都是确定的A不能提供任何新信息。就像一台只会打印“A”的坏打印机你看它第一眼就知道后面全是“A”它没有传递信息的能力。情况二等概二元信源这是最经典的信源比如抛均匀硬币。P(正面)0.5P(反面)0.5。 计算熵H(X) -[0.5 * log₂(0.5) 0.5 * log₂(0.5)] -[0.5*(-1) 0.5*(-1)] 1 bit/符号。 这个信源的平均不确定性最大在二元情况下每个符号平均能提供1比特的信息。这是二进制数字系统的基础。情况三等概多元信源推广到有M个符号且每个符号等概率出现的情况P(xᵢ) 1/M。 计算熵H(X) - Σ (1/M) * log₂(1/M) log₂(M) bit/符号。 这很好理解如果有4个等概符号需要用2比特来区分它们00, 01, 10, 11所以熵是2 bit/符号。如果有8个等概符号就需要3比特熵是3 bit/符号。熵log₂(M)正好等于唯一标识每个符号所需的最少二进制位数。2.2 熵的性质为什么它是“平均不确定性”的最佳度量熵函数H(P) -Σ Pᵢ log Pᵢ有几个非常重要的性质这些性质共同支撑了它作为信息度量的合理性非负性H(X) ≥ 0。熵总是一个非负数当且仅当信源是确定的时候取零。对称性熵只与概率分布{P₁, P₂, ..., Pₙ}有关而与符号的具体含义或顺序无关。把“正面”和“反面”的名字互换熵不变。可加性这是熵的一个核心性质。如果两个信源X和Y是相互独立的那么联合信源(X, Y)的熵等于它们各自熵的和H(X, Y) H(X) H(Y)。信息量是可以相加的这符合直觉。极值性最大离散熵定理对于具有M个符号的离散信源当且仅当所有符号等概率出现即Pᵢ 1/M时熵取得最大值log₂(M)。任何概率分布的不均匀都会导致熵的减小。这个性质至关重要它告诉我们一个“混乱”、“均衡”的信源其平均信息量最大。最后一点引出了一个非常关键的操作信源编码。一个非等概的信源其熵H(X)小于log₂(M)。这意味着平均来说我们不需要用log₂(M)比特那么长的码字来表示每个符号。通过精巧的编码比如赫夫曼编码我们可以用平均码长接近H(X)比特的序列来表示信源输出从而实现数据压缩。熵H(X)因此成为了无损压缩的理论极限任何无损压缩编码的平均码长不可能低于信源的熵。3. 联合熵、条件熵与互信息信息之间的关系现实中的信源往往不是孤立的。我们经常需要处理多个信源或者信源输出之间有依赖关系。这时就需要引入联合熵、条件熵和互信息的概念。假设有两个离散随机变量X和Y它们的取值分别来自符号集{xᵢ}和{yⱼ}。3.1 联合熵H(X, Y)联合熵度量的是一对随机变量(X, Y)作为一个整体的平均不确定性。它定义为联合概率分布P(xᵢ, yⱼ)下的平均信息量H(X, Y) - Σ Σ P(xᵢ, yⱼ) * log₂ P(xᵢ, yⱼ)它可以理解为要完整描述X和Y这一对随机变量平均需要多少比特的信息。3.2 条件熵H(Y|X)条件熵度量的是在已知随机变量X取值的情况下随机变量Y还剩余的平均不确定性。H(Y|X) Σ P(xᵢ) * H(Y|X xᵢ) - Σ Σ P(xᵢ, yⱼ) * log₂ P(yⱼ | xᵢ)其中H(Y|Xxᵢ)是在X取特定值xᵢ时Y的条件概率分布下的熵。 条件熵永远小于或等于无条件熵H(Y)因为知道了X的信息或多或少会减少关于Y的不确定性。当X和Y独立时H(Y|X) H(Y)。3.3 互信息I(X; Y)这是信息论中又一个极其核心的概念。互信息度量的是两个随机变量之间“共享”的信息量或者说知道了其中一个变量能为确定另一个变量减少多少平均不确定性。 它有两种等价的定义方式I(X; Y) H(Y) - H(Y|X)。这是最直观的定义Y的总不确定性H(Y)减去已知X后Y剩余的不确定性H(Y|X)剩下的差值就是X提供的关于Y的信息。I(X; Y) H(X) H(Y) - H(X, Y)。这是从联合熵的角度X和Y各自的信息量之和减去它们作为一个整体的信息量多出来的部分就是重叠的信息。互信息具有对称性I(X; Y) I(Y; X)并且总是非负的。当X和Y独立时互信息为0当X和Y一一对应时互信息达到最大值H(X) H(Y)。3.4 信息关系链一张图理清所有概念这些概念之间的关系可以用一个非常经典的信息图来概括它清晰地展示了信息量的“流动”与“分割”H(X, Y) / \ / \ H(X|Y) H(Y|X) \ / \ / I(X; Y)整个椭圆代表联合熵H(X, Y)。左边整个圆代表H(X)它可以被分割为H(X) H(X|Y) I(X; Y)。右边整个圆代表H(Y)它可以被分割为H(Y) H(Y|X) I(X; Y)。中间的重叠部分就是互信息I(X; Y)。这个链式关系在通信系统模型中有着直接的应用。在信道编码中X可以看作是发送的码字Y是接收到的信号。H(X)是信源的信息速率H(X|Y)是接收到Y后对X仍然存在的不确定性即译码错误可能性的度量而I(X; Y)就是信道实际能够可靠传输的信息速率它决定了信道的容量。4. 从理论到实践熵与信息量的工程意义学了一堆公式和概念它们到底有什么用在实际的通信和数据处理系统中信息量和熵绝不仅仅是数学游戏而是工程设计的基石。4.1 数据压缩的理论极限这是熵最直接的应用。前面提到对于离散无记忆信源进行无损压缩后平均每个信源符号所需的最少二进制位数平均码长的下限就是该信源的熵H(X)。赫夫曼编码、算术编码等经典压缩算法其设计目标就是使平均码长无限逼近这个熵值。当你用ZIP或PNG格式压缩文件时背后起指导作用的就是这个原理。工程师通过统计信源符号的概率分布估算其熵从而评估压缩算法的效率并设计更优的编码方案。4.2 信道容量的定义在通信系统中信道是有噪声的。香农第二定理信道编码定理指出对于一个给定的有噪声信道存在一个最大的信息传输速率C称为信道容量。只要实际的信息传输速率R小于C就存在一种编码方式使得错误概率可以任意小。而这个信道容量C的数学定义就是互信息的最大值C max I(X; Y)这里的最大值是针对所有可能的输入信号X的概率分布来取的。这为现代通信系统从Wi-Fi到5G的编码设计提供了终极目标。4.3 密码学中的熵应用在密码学中熵是衡量密钥或密码随机性不可预测性的关键指标。一个高熵的密钥意味着攻击者很难通过猜测或穷举来破解。例如一个128位的完全随机密钥其熵就是128比特这提供了极高的安全性。相反如果用户用“123456”作为密码其熵极低非常容易被破解。系统在设计密码策略和随机数发生器时必须考虑其输出的熵值是否足够高。4.4 机器学习与特征选择在机器学习领域信息论的概念被广泛使用。决策树算法如ID3, C4.5在分裂节点时会计算每个特征带来的“信息增益”这个信息增益本质上就是互信息I(特征; 类别)。选择能带来最大信息增益的特征进行分裂意味着这个特征能最大程度地减少对目标类别的不确定性。同样在特征工程中也可以利用互信息来筛选与目标变量相关性高的特征。4.5 实际计算中的注意事项与技巧在实际项目中我们通常面对的是有限的观测数据而不是已知的理论概率分布。因此我们需要从数据中估计熵和互信息。概率估计最直接的方法是使用经验频率即某个符号出现的次数除以总次数作为概率P(xᵢ)的估计。但当数据量较少时这种估计会有较大偏差特别是对于未出现的事件概率为0在计算对数时会出问题。实践中常采用加性平滑如拉普拉斯平滑来处理。熵的估计偏差直接从有限样本的频率估计得到的熵值通常是对真实熵的低估。因为样本无法完全捕捉到所有可能的小概率事件。对于小样本情况有专门的校正公式如Miller-Madow校正、Jackknife校正等。连续变量的微分熵对于连续随机变量香农引入了“微分熵”的概念其定义涉及概率密度函数的积分。但微分熵不具备离散熵的所有性质例如它可以是负值解释起来更复杂。在工程中更常用的是将连续信号量化模数转换为离散信号后再应用离散熵的理论。在我处理通信系统仿真或数据分析时一个常见的坑是忽略信源的“记忆性”。上述讨论的熵H(X)是“一阶熵”假设每个符号独立同分布。但真实信源如英文文本、语音、图像中前后符号之间有很强的相关性。这时需要用高阶熵或极限熵来刻画它定义为在已知前面所有符号的条件下下一个符号的平均不确定性。对于有记忆的信源其极限熵远小于一阶熵这意味着存在更大的压缩空间。实际压缩算法如LZ系列、BWT之所以比赫夫曼编码对文本更有效正是因为它们巧妙地利用了这种上下文相关性。
返回列表