入门 | 初学机器学习:直观解读KL散度的数学概念

代码:https://github.com/thushv89/nlp_examples_thushv_dot_com/blob/master/kl_divergence.ipynb


原文链接:http://www.thushv.com/machine-learning/light-on-math-machine-learning-intuitive-guide-to-understanding-kl-divergence/


近日,悉尼大学博士生 Thushan Ganegedara 开始撰写一个系列博客文章,旨在为机器学习初学者介绍一些基本概念。本文是该系列的第一篇文章,介绍了 KL 散度(KL divergence)的基本数学概念和初级应用。作者已将相关代码发布在 GitHub 上。



基础概念


首先让我们确立一些基本规则。我们将会定义一些我们需要了解的概念。


分布(distribution)


分布可能指代不同的东西,比如数据分布或概率分布。我们这里所涉及的是概率分布。假设你在一张纸上画了两根轴(即 X 和 Y),我可以将一个分布想成是落在这两根轴之间的一条线。其中 X 表示你有兴趣获取概率的不同值。Y 表示观察 X 轴上的值时所得到的概率。即 y=p(x)。下图即是某个分布的可视化。




这是一个连续概率分布。比如,我们可以将 X 轴看作是人的身高,Y 轴是找到对应身高的人的概率。


如果你想得到离散的概率分布,你可以将这条线分成固定长度的片段并以某种方式将这些片段水平化。然后就能根据这条线的每个片段创建边缘互相连接的矩形。这就能得到一个离散概率分布。


事件(event)


对于离散概率分布而言,事件是指观察到 X 取某个值(比如 X=1)的情况。我们将事件 X=1 的概率记为 P(X=1)。在连续空间中,你可以将其看作是一个取值范围(比如 0.95<X<1.05)。注意,事件的定义并不局限于在 X 轴上取值。但是我们后面只会考虑这种情况。


回到 KL 散度


从这里开始,我将使用来自这篇博文的示例:https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained。这是一篇很好的 KL 散度介绍文章,但我觉得其中某些复杂的解释可以更详细的阐述。好了,让我们继续吧。


我们想要解决的问题


上述博文中所解决的核心问题是这样的:假设我们是一组正在广袤无垠的太空中进行研究的科学家。我们发现了一些太空蠕虫,这些太空蠕虫的牙齿数量各不相同。现在我们需要将这些信息发回地球。但从太空向地球发送信息的成本很高,所以我们需要用尽量少的数据表达这些信息。我们有个好方法:我们不发送单个数值,而是绘制一张图表,其中 X 轴表示所观察到的不同牙齿数量(0,1,2…),Y 轴是看到的太空蠕虫具有 x 颗牙齿的概率(即具有 x 颗牙齿的蠕虫数量/蠕虫总数量)。这样,我们就将观察结果转换成了分布。


发送分布比发送每只蠕虫的信息更高效。但我们还能进一步压缩数据大小。我们可以用一个已知的分布来表示这个分布(比如均匀分布、二项分布、正态分布)。举个例子,假如我们用均匀分布来表示真实分布,我们只需要发送两段数据就能恢复真实数据;均匀概率和蠕虫数量。但我们怎样才能知道哪种分布能更好地解释真实分布呢?这就是 KL 散度的用武之地。


直观解释:KL 散度是一种衡量两个分布(比如两条线)之间的匹配程度的方法。


猜你喜欢

转载自blog.csdn.net/taojiea1014/article/details/80535955