Kullback-Leibler 散度分析

机器算法验证 解释 信息论 kullback-leibler
2022-02-08 04:34:06

让我们考虑以下两个概率分布

P       Q
0.01    0.002
0.02    0.004
0.03    0.006
0.04    0.008
0.05    0.01
0.06    0.012
0.07    0.014
0.08    0.016
0.64    0.928

我已经计算出相等的 Kullback-Leibler 散度0.492820258, 我想知道这个数字一般告诉我什么?一般来说,Kullback-Leibler 散度告诉我一个概率分布与另一个概率分布有多远,对吧?它类似于熵术语,但就数字而言,它是什么意思?如果我的结果为 0.49,我可以说大约一个分布与另一个分布相差 50%?

3个回答

Kullback-Leibler 散度不是一个适当的度量,因为它不是对称的,而且它也不满足三角不等式。所以这两种分布所扮演的“角色”是不同的,重要的是要根据所研究的现实世界现象来分配这些角色。

当我们编写时(OP已经使用以2为底的对数计算了表达式)

K(P||Q)=ilog2(pi/qi)pi

我们认为P分布是“目标分布”(通常被认为是真实分布),我们通过使用Q分配。

现在,

ilog2(pi/qi)pi=ilog2(pi)piilog2(qi)pi=H(P)EP(ln(Q))

在哪里H(P)是分布的香农熵PEP(ln(Q))称为“交叉熵”PQ" - 也是非对称的。

写作

K(P||Q)=H(P,Q)H(P)

(在这里,我们在交叉熵表达式中写下分布的顺序也很重要,因为它也是不对称的),让我们看到 KL-Divergence 反映了熵的增加,而不是不可避免的分布熵P.

因此,,KL 散度最好不要被解释为分布之间的“距离度量”,而是作为熵增加的度量,因为使用了对真实分布的近似而不是真实分布本身

所以我们在信息论领域。从大师们那里听到它(Cover & Thomas)“

...如果我们知道真实的分布P随机变量,我们可以构造一个具有平均描述长度的代码H(P). 相反,如果我们使用代码进行分发Q, 我们会需要H(P)+K(P||Q)平均位来描述随机变量。

同样聪明的人说

...它不是分布之间的真实距离,因为它不是对称的并且不满足三角不等式。尽管如此,将相对熵视为分布之间的“距离”通常很有用。

但是后一种方法主要在尝试最小化KL 散度以优化某些估计过程时很有用。对于其数值本身的解释,它没有用,人们应该更喜欢“熵增加”的方法。

对于问题的特定分布(始终使用以 2 为底的对数)

K(P||Q)=0.49282,H(P)=1.9486

换句话说,如果你打算使用 25% 以上的位来描述情况Q而真正的分布是P. 这意味着更长的代码行、更多的编写时间、更多的内存、更多的阅读时间、更高的错误概率等等……Cover 和 Thomas 说KL-Divergence(或“相对熵”)并非偶然“衡量由近似值引起的低效率。”

考虑具有分布的信息源P使用具有分布的信息源的理想代码进行编码Q. 使用理想编码所获得的高于最小编码成本的额外编码成本PKL散度

KL Divergence 衡量使用 Q 中的符号表示 P 中的符号所需的信息损失。如果您的值为 0.49,这意味着平均而言,您可以使用 Q 中的两个对应符号加上一位额外信息对 P 中的两个符号进行编码.