为什么 Kullback Leibler Divergence 总是积极的?

机器算法验证 直觉 信息论 kullback-leibler
2022-04-09 00:27:34

我知道这里已经对这个问题进行了数学处理我想要帮助的是我的直觉理解。Wikipedia上给出的示例为例:

x012P(x)0.360.480.16Q(x)0.330.330.33

在哪里DKL(P||Q)=0.0852996DKL(Q||P)=0.097455. 一方面,我认为我理解在这两种情况下都获得了信息,因为分布发生了变化,而不是保持不变(因此已经获得了一些关于x)。但同时我也不能动摇应该有信息丢失的直觉DKL(P||Q)因为Q(x)熵大于P(X). 有人可以帮助纠正我的直觉吗?当熵同时增加时,如何获得信息?

1个回答

直观的理解有些主观,但我至少可以提供我的观点:

Kullback-Leibler 散度是信息论中的一个概念。它告诉您如果您使用次优编码方案,您的消息平均会有多长时间——多少位。

对于每个概率分布,平均消息长度都有一个下限,这就是分布的熵。对于分布P从您的维基百科示例中,它是

xP(x)log2P(x)1.462

也就是说,如果您要从该概率分布中记录随机变量的实现,例如在计算机文件中,或者通过有限带宽的通道传输它们,那么平均而言,您至少需要 1.462无论您的编码多么复杂,每个实现的位数。因为在那个分布中x=2是三倍的概率x=3, 使用更短的代码来编码事件是有意义的x=2比编码x=3. 例如,您可以使用以下编码:

   ×:1 2 3
代码:01 1 001

此代码的平均消息长度为1.68位,(当然!)超过理论下限,但仍优于等长代码,例如:

   ×:1 2 3
代码:01 10 11

这需要2每个事件的位数。您可以构建更复杂的代码来编码事件序列,但无论您做什么,都无法超越信息论的下限。

现在,对于不同的分布,说Q,还有其他近似于最佳编码的编码。的熵Q从你的例子是1.583位。作为近似值,上述两个代码都同样好,平均需要2每个事件的位数,但更复杂的代码可能会更好。

但是,什么是更好的编码Q不一定更适合编码P. Kullback-Leibler 散度告诉您使用为传输/存储信息而优化的编码需要花费多少位Q如果你的真实概率分布是P. 这个度量不能是负数。如果是这样,则意味着您可以击败最佳编码P通过使用优化的编码Q反而。

事实上,KL 散度DKL(P||P)=0(很容易展示,因为log(p(x)/p(x))=log(1)=0) 告诉你编码概率分布P使用针对该分发优化的代码会产生零成本。