关于KL散度的问题?

机器算法验证 分布 kullback-leibler 信息几何
2022-02-13 17:02:06

我正在将两个分布与 KL 散度进行比较,它返回给我一个非标准化的数字,根据我所读到的关于这个度量的内容,它是将一个假设转换为另一个假设所需的信息量。我有两个问题:

a) 有没有办法量化 KL 散度,使其具有更有意义的解释,例如效果大小或 R^2?任何形式的标准化?

b)在 R 中,当使用 KLdiv(flexmix 包)时,可以设置“esp”值(标准 esp=1e-4),该值将所有小于 esp 的点设置为某个标准,以提供数值稳定性。我一直在使用不同的 esp 值,对于我的数据集,我选择的数字越小,KL 散度就越大。到底是怎么回事?我希望 esp 越小,结果应该越可靠,因为它们让更多的“真实值”成为统计数据的一部分。不?我必须更改 esp,否则它不会计算统计数据,而只是在结果表中显示为 NA ...

4个回答

假设给定 n 个由 p 或 q 生成的 IID 样本。您想确定是哪个发行版生成了它们。假设它们是由 q 生成的。令 a 表示第一类错误的概率,错误地拒绝原假设,b 表示第二类错误的概率。

那么对于较大的 n,I 类错误的概率至少为

exp(nKL(p,q))

换句话说,对于“最佳”决策过程,类型 I 的概率最多下降每个数据点的 exp(KL(p,q)) 因子。II 类错误最多下降的因子。exp(KL(q,p))

对于任意n,a和b的关系如下

blogb1a+(1b)log1banKL(p,q)

aloga1b+(1a)log1abnKL(q,p)

如果我们用 b 和 KL 将上述界限表示为 a 的下限并将 b 减小到 0,即使对于小的 n,结果似乎也接近“exp(-n KL(q,p))”界限

更多详细信息请参见此处的第 10页,以及 Kullback 的“信息理论与统计”(1978 年)的第 74-77 页。

作为旁注,这种解释可用于激发Fisher 信息度量,因为对于彼此之间的 Fisher 距离为 k(小 k)的任何一对分布 p,q,您需要相同数量的观察来区分它们

当您将一组牙体可视化为 Fisher 度量张量内的流形时,KL 具有深刻的含义,它给出了两个“接近”分布之间的测地线距离。正式地:

ds2=2KL(p(x,θ),p(x,θ+dθ))

以下几行将详细解释这个 las 数学公式的含义。

Fisher 度量的定义。

考虑一个参数化的概率分布族中的密度给出),其中是随机变量,theta 是中的参数。大家可能都知道 Fisher 信息矩阵D=(f(x,θ))RnxRpF=(Fij)

Fij=E[d(logf(x,θ))/dθid(logf(x,θ))/dθj]

使用这种表示法是黎曼流形,是黎曼度量张量。(这个度量的兴趣由 cramer Rao 下界定理给出)DF(θ)

你可能会说……好的数学抽象,但是 KL 在哪里?

这不是数学抽象,如果你真的可以把你的参数化密度想象成一条曲线(而不是无限维空间的子集)并且连接到该曲线的曲率......(见Bradley Efron 的开创性论文http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.aos/1176343282 )p=1F11

您问题中点 a/ 部分的几何答案:流形上两个(接近)分布之间的平方距离(想想地球上距离很近的两点的测地线距离,它与地球的曲率有关)由二次形式给出:ds2p(x,θ)p(x,θ+dθ)

ds2=Fijdθidθj

并且已知是 Kullback Leibler Divergence 的两倍:

ds2=2KL(p(x,θ),p(x,θ+dθ))

如果您想了解更多信息,我建议阅读 Amari http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.aos/1176345779的论文 (我认为 Amari 也有一本书关于统计学中的黎曼几何,但我不记得名字了)

分布 p(.) 和 q(.) 之间的 KL(p,q) 散度具有直观的信息论解释,您可能会发现它很有用。

假设我们观察到由某个概率分布 p(.) 生成的数据 x。表示由 p(.) 生成的数据所需的平均码长(以比特为单位)的下限由 p(.) 的熵给出。

现在,由于我们不知道 p(.),我们选择另一个分布,例如 q(.) 来编码(或描述、说明)数据。由 p(.) 生成并使用 q(.) 编码的数据的平均码长必然比使用真实分布 p(.) 进行编码时更长。KL 散度告诉我们这种替代代码的效率低下。换句话说,p(.) 和 q(.) 之间的 KL 散度是使用编码分布 q(.) 对 p(.) 生成的数据进行编码所需的额外比特的平均数量。如果实际数据生成分布用于对数据进行编码,则 KL 散度是非负的并且等于零。

对于您问题的 (b) 部分,您可能会遇到一个问题,即您的一个分布在另一个分布没有的区域中具有密度。

D(PQ)=pilnpiqi

如果存在,则这会发散R 实现中的数值 epsilon 可以“帮助您”解决这个问题;但这意味着结果值取决于此参数(技术上不是必需的,只是小于数值 epsilon)。ipi>0qi=0qi=0qi