从联合概率表计算熵:信息论自学中的若干疑问
1. 关于H(1/8, 7/8)中出现的(1/8, 3/4)指代什么
咱先明确:H(p₁, p₂, ..., pₙ)是离散熵的标准写法,输入必须是和为1的概率分布(毕竟概率加起来得是1对吧)。你提到的(1/8, 3/4)加起来是7/8,显然不是熵函数的参数——大概率是你看资料时把联合概率/边缘概率和熵的参数搞混了。
结合哈佛那章常用的条件熵例子推测:假设X、Y是两个离散变量,Y有两个取值1和2,其中P(Y=1)=3/4,P(Y=2)=1/4;当Y=1时,X的条件分布是(1/8,7/8)(所以对应H(X|Y=1)=H(1/8,7/8))。你看到的(1/8,3/4)可能是**联合概率P(X=x₁,Y=1)**或者Y=1的边缘概率P(Y=1)和某个条件概率的组合?总之记住:熵的参数一定是和为1的概率集合,其他数值对都是概率值(联合/边缘/条件),不是熵的输入。
2. 为何H(X|Y = 2) = 1?
这是个很典型的熵值情况!离散熵的公式是H(X) = -Σpᵢlog₂pᵢ。当H(X|Y=2)=1时,说明在Y=2的条件下,X的条件分布是两个等概率的结果——比如P(X=x₁|Y=2)=1/2,P(X=x₂|Y=2)=1/2。代入算一下:
H(X|Y=2) = -[(1/2)log₂(1/2) + (1/2)log₂(1/2)] = -[(1/2)(-1) + (1/2)(-1)] = 1
说白了,这时候X的不确定性正好是1比特——你需要1个二进制位(0或1)就能确定它的取值,完全符合熵的物理意义。
3. 1/4 H(X|Y = 2)中的1/4系数来源是什么?
这个1/4就是Y取2这个值的概率,也就是P(Y=2)=1/4。条件熵H(X|Y)的本质是加权平均:对Y的每个可能取值,先算该条件下X的熵,再用Y取这个值的概率作为权重,把所有结果加起来。公式是:
H(X|Y) = Σₚ P(Y=y) * H(X|Y=y)
所以如果Y=2发生的概率是1/4,那对应的项自然就是1/4 * H(X|Y=2)——这个系数用来体现这个条件在整体中占的比重,概率越大,对应的条件熵对整体的影响就越大。
4. log₂(0)无定义,计算H(X|...)时该如何理解?
这是信息论里早就约定好的处理方式:我们直接定义0*log₂0 = 0。为啥这么定?用极限就能解释:当概率p趋近于0时,p*log₂p的极限是0(用洛必达法则算一下就知道,lim(p→0+) p*lnp = 0,换成log₂只是乘个常数,极限还是0)。
实际计算时,只要某个结果的概率是0,那对应的项就直接当0处理就行——毕竟概率为0的事件根本不会发生,自然不会给系统带来任何不确定性(熵),完全不影响计算结果。
内容的提问来源于stack exchange,提问作者John




