Kullback-Leibler 散度不是一个适当的度量,因为它不是对称的,而且它也不满足三角不等式。所以这两种分布所扮演的“角色”是不同的,重要的是要根据所研究的现实世界现象来分配这些角色。
当我们编写时(OP已经使用以2为底的对数计算了表达式)
K(P||Q)=∑ilog2(pi/qi)pi
我们认为P分布是“目标分布”(通常被认为是真实分布),我们通过使用Q分配。
现在,
∑ilog2(pi/qi)pi=∑ilog2(pi)pi−∑ilog2(qi)pi=−H(P)−EP(ln(Q))
在哪里H(P)是分布的香农熵P和−EP(ln(Q))称为“交叉熵”P和Q" - 也是非对称的。
写作
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(或“相对熵”)并非偶然“衡量由近似值引起的低效率。”