Kullback-Leibler 散度2025年2月28日 | 阅读时间 9 分钟 引言Kullback-Leibler (KL) 散度得分是衡量一个概率分布与另一个概率分布之间差异程度的度量。 分布 P 和 Q 之间的 KL 散度通常表示为 KL(P || Q) 这里,符号 "||" 表示从 P 到 Q 的变化。 KL 散度通过 P 中概率的负和,乘以 P 中概率与 Q 中概率之比的对数来计算:KL 散度通过 P 中概率的负和,乘以 P 中概率与 Q 中概率之比的对数来计算。 KL(P || Q) = - sum (P(x) * log [ Q(x) / P(x) ]) 这是时间序列上表示的每个事件的差值。 或者,可以将其写成 P 中概率的与 P/Q 对数之积的正和,这在实践中更常用。 KL(P || Q) = sum (P(x) * log( P(x) / Q(x) )) 直观上,当 P 认为某个事件发生的概率很高,而 Q 认为发生的概率很低时,差异很大。另一方面,如果 P 认为事件发生的概率很低,而 Q 认为发生的概率很高,差异仍然很大,但不如前者大。 因此,Kullback-Leibler 散度可用于离散和连续概率分布。对于连续分布,分布 a 的积分被用来代替 P(a) 的(转换后的)离散事件求和。 Kullback Leiber 散度的词源这被称为相对熵。它由 Solomon Kullback 和 Richard Leibler 于 1951 年开发;从这项工作中,他们将其定义为“每个观察 μ1 对区分假设 H1 和 H2 的平均信息。”这里,有两个概率度量 μ1 和 μ2 进行比较,以及两个基于这些概率度量开发的假设结果 H1 和 H2。他们用 I(1:2) 表示,并指出 μ1 和 μ2 之间的“散度”由对称量 J(1,2) = I(1;2) + I(2;1) 给出,这是 Harold Jeffreys 在 1948 年解释过的。 后来,在 Kullback 1959 年的工作中,对称形式仍被称为“散度”,并且每个方向的相对熵被称为两个分布之间的“定向散度”。Kullback 本人更喜欢“判别信息”这个术语。对称散度不满足三角不等式,因此得名“散度”。Kullback 的形式现在被称为 Kullback-Leibler 散度,而对称的则称为 Jeffreys 散度。 KL 散度或相对熵是一种比较两个概率分布 p 和 q 之间差异的方法。对数可以是以 2 为底,得到单位“比特”,或者以自然对数 e 为底,得到“纳特”。得分为 0 表示两个分布相似,而任何大于 0 的分数表示两个分布之间的不相似性。 值得注意的是,KL 散度是不可对称的。 在上一节中,我们看到对于任意两个概率分布 P 和 Q,以下关系成立:直观地说,这意味着 KL (P || Q) 不等于 KL (Q || P)。 该方法也称为“相对熵”,这是由于 Solomon Kullback 和 Richard Leibler 的名字与该方法的开发相关。 所使用的度量是两个分布 p(x) 和 q(x) 之间的 Kullback-Leibler 散度:在用估计 Q 近似任何未知概率分布 P 的情况下,它定义了在以 2 为基准对随机变量的事件进行编码时需要多少额外信息。估计越准确,所需的比特数越少。 简而言之,KLD 等于使用概率分布 Q 而不是分布 P 来表示信息的预期额外比特数。简而言之,KLD 等于 Q 比 P 进行编码所需的额外比特量的平均值。为了清楚理解,一个简单的实例可能会有帮助。 假设一个随机变量可以有三个事件,我们将用不同的颜色来区分它们。我们可以为该变量定义两个概率分布,例如 # 定义分布 events = ['red', 'green', 'blue'] p = [0.10, 0.40, 0.50] q = [0.80, 0.15, 0.05] 完整代码 完成此操作后,将生成两个分布的直方图,可以从中比较每个事件的发生概率。 ![]() 当查看上面显示的图表时,两个分布之间的差异尤为明显。 随后,我们可以定义另一个函数来计算两个分布之间的 Kullback Leibler 散度(以比特为单位)。使用此函数,我们可以计算 P 对 Q 的 KL 散度和 Q 对 P 的 KL 散度。 然后,我们可以定义另一个函数来计算两个概率的 KL 散度,并以 2 为基底返回结果(比特)。 使用此函数,我们就可以计算 P 对 Q 的 KL 散度以及 Q 对 P 的 KL 散度。 现在,让我们将所有内容结合起来。 完整代码 运行此示例时,应该会注意到 P 到 Q 的 KL 散度约为 1。从 R 到 S,大约等于 7660 比特,从 Q 到 P 约为 2.022 比特。这可以理解为,每当 P 的概率高于 Q 的概率时,与 Q 相比,散度就较小,而 Q 的概率低于 P 的概率时,散度相对较大。 输出 KL(P || Q): 1.927 bits KL(Q || P): 2.022 bits 如果我们用自然对数 log() 函数替换 log2(),结果将以纳特为单位。 # KL(P || Q): 1.336 纳特 # KL(Q || P): 1.401 纳特 实际上,SciPy 有几个函数可以计算 KL 散度;我们可以使用 SciPy 中的 kl_div() 函数,另一个函数是 SciPy 中的 rel_entr(),它对应于上述 KL 散度。rel_entr() 函数计算每个事件的相对熵,并生成一个散度列表,这些散度相加可提供使用自然对数计算 KL 散度的估计。 这是使用 SciPy 计算相同概率分布的 KL(P || Q) 和 KL(Q || P) 的完整示例。 代码 当执行该示例时,计算出的散度与我们的手动计算结果一致。 输出 KL(P || Q): 1.336 nats KL(Q || P): 1.401 nats 这有助于确定 SciPy 包的 rel_entr() 函数也提供了与使用自然对数计算 KL 散度等效的结果,并且结果单位为“纳特”。 解释统计量在统计学中,Neyman-Pearson 引理断言,根据一个观察值 Y(从任一分布中抽取),区分两个分布 P 和 Q 的最有效方法是使用其似然比的对数:评分方法将对数应用于概率,得到 log P(Y) − log Q(Y)。这个统计量是如果 Y 从 P 分布中抽取,该统计量的期望值,而 Kullback 将此基于期望对数似然比。 编码在编码理论中,Kullback Leibler 散度 Dₖₗ(P ∥ Q) 指的是在使用为 Q(而非 P)优化的代码来编码 P 的样本时所需的额外比特数。 推理在机器学习的上下文中,KL 散度或相对熵被称为信息增益,如果 P 用于代替 Q。它与贝叶斯观点相关,表示从先前的概率分布 Q 更改为后来的概率分布 P 时获得的信息量。KL 散度用于衡量当 Q 近似 P 时丢失的信息量。 信息几何在实际使用这些方法时,P 通常表示数据的真实分布,而 Q 表示 P 的理论、模型或近似。我们可以通过最小化 KL 散度和执行信息投影来寻求问题的解决方案。 应特别注意,KL 散度的积分得到的量可以归类为散度而非度量,尽管它属于统计距离。然而,也很清楚,与度量(本身是隐式对称且遵循三角不等式)的情况不同,对于 KL 型散度,不存在类似的情况。具体来说,上述破坏性变换表明 Dₖₗ(P ∥ Q) 不等于 Dₖₗ(Q ∥ P);这种不对称性涉及信息几何。在相对熵的形式中,研究人员发现无穷小形式等于 Fisher 信息度量的度量张量。 P 相对熵满足广义勾股定理,并可以通过几何方式进行最小化,例如使用信息投影或最大似然。它可以是 Bregman 散度的一个例子,它由负熵和 f-散度生成,并且是唯一能够同时用于具有离散字母表的概率的散度。 金融(博弈论)在金融领域,特别是在博弈论中,如果投资者在一个公平博弈中追求其权益的增长,其中结果是概率互斥的,例如赛马的赔率加起来为一,那么预期回报率就等于信念概率与官方赔率之间的相对熵。这个特定案例展示了两个类别之间的关系:金融回报和散度度量。 金融风险与 KL 散度之间的联系是通过信息几何。这些在概率分布流形上表示:投资者观点构成一个三角形,市场观点构成第二个三角形,风险场景构成第三个三角形。这就是为什么这些三角形的形状有助于定义金融风险等标准。例如,钝角三角形将描绘出负面的风险图景,锐角三角形。 例如,钝角三角形表示负风险,而锐角三角形表示正敞口,直角三角形表示组织中的风险为零。 结论简而言之,Kullback-Leibler (KL) 散度是信息论中衡量两个概率分布之间差异的一个基本概念。它描述了使用近似分布 Q 来表示真实分布 P 的概念。因此,KL 散度不是对称的,即 KL (P||Q) 不等于 KL (Q||P),该度量强调方向性。在本工作中,我们首先回顾了如何以解析方式计算 KL 散度,以及在 SciPy 库中实现 rel_entr() 函数的方面:已确定这两种方法返回的值(比特 - 或根据所使用的对数底而定的纳特)是相同的。 KL 散度在机器学习中也有许多用途,例如评估给定模型的性能、优化模型以及比较两个分布。因此,它为评估特定模型分布如何准确地捕捉现实提供了基础。此外,这种度量在识别各种模型和系统之间信息共享的流向方面很有用。 因此,KL 散度仍然是比较概率分布的重要度量,以便人们能够轻松地理解概率模型的效率和准确性。因此,通过了解和应用 KL 散度,可以获得更好的模型预测,并在需要时做出更明智的决策。 下一主题机器学习的重要性 |
我们请求您订阅我们的新闻通讯以获取最新更新。