我使用 KL Divergence 作为 2和之间差异的度量。
如果 那么我们可以很容易地计算出
但是如果和 如何计算
我使用 KL Divergence 作为 2和之间差异的度量。
如果 那么我们可以很容易地计算出
但是如果和 如何计算
你不能,你也没有。想象一下,你有一个概率分布 Q 的随机变量。但是你的朋友 Bob 认为结果来自概率分布 P。他已经构建了一个最优编码,可以最小化他需要用来告诉你的期望比特数结果。但是,由于他从 P 而不是 Q 构建编码,他的代码将比必要的长。KL 散度衡量代码的长度。
现在假设他有一枚硬币,他想告诉你他得到的结果的顺序。因为头和尾的可能性相同,所以他给了它们两个 1 位代码。0 表示头部,1 表示尾部。如果他得到tail tail head tail,他可以发送1 1 0 1。现在,如果他的硬币落在边缘,他不可能告诉你!他发给你的任何代码都不行。在这一点上,KL-divergence 被打破了。
由于 KL 散度失效,您将不得不使用其他度量或其他概率分布。你应该做什么取决于你想要什么。为什么要比较概率分布?你的概率分布来自哪里,它们是从数据中估计的吗?
您说您的概率分布以某种方式来自自然语言文档,并且您想比较成对的类别。
首先,我建议使用对称相关性度量。对于此应用程序,听起来 A 与 B 相似,因为 B 与 A 相似。
您是否尝试过余弦相似度度量?这在 NLP 中很常见。
如果您想坚持使用 KL,您可以做的一件事是估计两个文档的概率函数,然后查看每个文档平均需要多少额外位。即 (P||(P+Q)/2 + Q||(P+Q)/2)/2
在实践中,我也遇到过这个问题。在这种情况下,我发现将值 0 替换为一些非常小的数字可能会导致问题。根据您使用的值,您将在 KL 值中引入“偏差”。如果您将 KL 值用于假设检验或涉及阈值的其他用途,那么这个小值可能会使您的结果产生偏差。我发现解决这个问题的最有效方法是只考虑在一致的假设空间 X_i 上计算 KL,其中 P 和 Q 都非零。从本质上讲,这将 KL 的域限制在一个定义了两者的域中,并且在使用 KL 执行假设检验时可以避免麻烦。
对于任何的概率分布意味着您确定不会发生。因此,如果,它将代表无限的惊喜/信息,这就是香农信息所代表的。用作分布的近似值,则KL 散度表示每次观察的额外惊喜量(即信息丢失)。如果近似值预测现实中具有正概率的事件的概率为 0,那么您将在一定百分比的时间内体验到无限惊喜,因此平均而言是无限惊喜。
解决方案是在估计分布中绝不允许 0 或 1 概率。这通常通过某种形式的平滑来实现,例如 Good-Turing 平滑、Dirichlet 平滑或拉普拉斯平滑。