直观理解 KL 散度

        KL散度是衡量分布差异的建设性方法。

        今天我们要讨论的是 KL 散度(KL Divergence),这是数据科学中非常常用的一种度量,用来衡量两个分布之间的差异。但在深入技术细节之前,我们先来谈谈一个普遍存在的数学和统计学理解障碍。

        很多时候,难点不在于知识本身,而在于学习的方法。许多人把数学和统计看作一堆“神圣”的公式,只能被接受,不能被质疑,这就导致我们很难理解它们背后的意义。以 KL 散度公式为例,乍一看可能会令人望而生畏,甚至产生挫败感。然而,现实中的数学并不是这样进化而来的。我们今天见到的每一个公式,都是人为设计出来,为了解决具体问题而创造的工具。

        在这篇文章中,我们将采用一种不同的视角,把数学视为一个创造性的过程。我们不从公式出发,而是从问题出发,问自己:“我们要解决什么问题?我们能不能发明一个指标来衡量这个问题?”这种方法可以帮助我们更直观地理解像 KL 散度这样的概念。

        好了,说了这么多理论,我们来正式进入 KL 散度的构建过程。假设你是一个幼儿园老师,每年都会调查学生最喜欢的水果,他们可以选择苹果、香蕉或者哈密瓜。你每年都对全班学生进行调查,统计出百分比并绘制成图。

        假设我们来看连续两年的数据:第一年,50% 喜欢苹果,40% 喜欢香蕉,10% 喜欢哈密瓜;第二年,喜欢苹果的比例仍是 50%,但喜欢香蕉的只有 10%,而喜欢哈密瓜的上升到了 40%。我们的问题是:第二年的分布相比第一年到底变化了多少?

        在我们进入公式之前,有一个重要的要求:既然我们想衡量两个分布的差异,这个指标(也就是后面的 KL 散度)应该是不对称的。换句话说,互换两个分布的位置,计算结果应该不同,才能反映“参考点”的不同。

        现在我们开始构造这个度量。如果我们要自己设计它,第一步可以从元素入手——比如苹果、香蕉和哈密瓜,也可以叫它们 A、B、C。我们来比较它们在两个年份中概率的比值。我们记第一个分布为 Q(参考分布,第一年),第二个为 P(当前分布,第二年)。

        举个例子,P(a) 表示第二年喜欢苹果的比例是 50%,Q(a) 表示第一年也是 50%,它们的比值是 1,说明偏好没有变化。对于香蕉,P(b)/Q(b) = 10% / 40% = 1/4,说明偏好降低了。对于哈密瓜,P(c)/Q(c) = 40% / 10% = 4,说明偏好增加了四倍。

        这是一个很好的开始。那我们为了简单起见,可以对这三个比值取平均吗?这些比值反映了各个水果的偏好变化,我们把它们相加再除以 3,得到一个初步的度量:

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        这个值可以反映分布间的差异。但很快我们发现了一个问题:平均值会被大数值“拉偏”。比如 1/4 和 4 是对称的反方向影响,但 4 的影响更大,导致平均值偏大。所以直接取平均可能不是最合适的方法。

        那我们有没有办法解决这个问题?我们可以考虑对这些比值应用某种变换函数 F,使得它能够对“相反方向的变化”给予对等对待。我们希望:如果 F(4) = y,那么 F(1/4) = -y。这种关系并不只适用于 4 和 1/4,也适用于所有互为倒数的数字,比如 F(2) = z,那 F(1/2) = -z。而对于 F(1),我们希望它的值为 0。

        我们把这些点画出来后,会发现这个函数的形状像是一条对称的曲线:

        许多人都会发现它和对数函数很像。所以我们可以用 log(x) 作为我们的函数 F。我们不再直接使用 P(x)/Q(x),而是使用 log(P(x)/Q(x)),这可以缓解前面提到的大数问题。如果我们将三种水果的 log 比值求和并取平均,公式就变成了:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        如果这是我们的衡量标准,那会有什么问题吗?

        那这是否就可以作为我们的最终度量?可能还不够。

        我们还想让这个度量优先关注在当前分布中更受欢迎的选项。换句话说,如果第二年有 50 个学生喜欢苹果、10 个喜欢香蕉、40 个喜欢哈密瓜,那么对苹果和哈密瓜的变化应该更受关注,因为更多人喜欢它们,香蕉对总体影响较小。

        原来的平均值是给每项相同的权重(1/n)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        但现在我们希望用 P(x) 来作为每项的权重,也就是根据第二年每种水果的比例来加权:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​

        我们所做的唯一改变是,把每项的权重从平均权重变成了它在当前分布中的频率,越受欢迎的水果变化就越重要;而不受欢迎的水果(即使在过去曾经很流行)对 KL 散度的贡献也更小。

        最终这个公式就是 KL 散度的标准定义。我们通常写作,表示的是 P 相对于 Q 的变化有多大。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        最后,别忘了我们最初的要求:不对称性。我们是否满足了?答案是肯定的:如果我们交换 P 和 Q,结果会不同,正好满足了我们希望的“参考点不同 → 差异度不同”的要求。

总结

        首先,我希望你现在已经理解 KL 散度的含义了,但更重要的是,我希望你觉得这并不像一开始就直接从公式入手那样令人畏惧。我们尝试从问题出发,逐步构建这个概念,希望这种方式让你觉得更加亲切易懂。

        另外还要说明的是,我们这里讲解的是 KL 散度的离散形式,适用于我们刚才讨论的那种离散类别(如水果种类)。对于连续分布,原理是一样的,只不过把求和换成了积分(∫)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值