当前位置:主页 > 数据驱动 >

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

 发布时间:2018-07-25 来源:
机器学习是当前最重要的技术发展方向之一。近日,悉尼大学博士生 Thushan Ganegedara 开始撰写一个系列博客文章,旨在为机器学习初学者介绍一些基本概念。本文是该系列的第一篇文章,介绍了 KL 散度(KL divergence)的基本数学概念和初级应用。作者已将相关代码发布在 GitHub 上。

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

基础概念

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

分布(distribution)

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

 

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

 

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

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

事件(event)

对于离散概率分布而言,事件是指观察到 X 取某个值(比如 X=1)的情况。我们将事件 X=1 的概率记为 P(X=1)。在连续空间中,,你可以将其看作是一个取值范围(比如 0.95

回到 KL 散度

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

我们想要解决的问题

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

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

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

让我们对示例进行一点修改

为了能够检查数值的正确性,让我们将概率值修改成对人类更友好的值(相比于上述博文中的值)。我们进行如下假设:假设有 100 只蠕虫,各种牙齿数的蠕虫的数量统计结果如下。

0 颗牙齿:2(概率:p_0 = 0.02)

1 颗牙齿:3(概率:p_1 = 0.03)

2 颗牙齿:5(概率:p_2 = 0.05)

3 颗牙齿:14(概率:p_3 = 0.14

4 颗牙齿:16(概率:p_4 = 0.16)

5 颗牙齿:15(概率:p_5 = 0.15)

6 颗牙齿:12(概率:p_6 = 0.12)

7 颗牙齿:8(概率:p_7 = 0.08)

8 颗牙齿:10(概率:p_8 = 0.1)

9 颗牙齿:8(概率:p_9 = 0.08)

10 颗牙齿:7(概率:p_10 = 0.07)

快速做一次完整性检查!确保蠕虫总数为 100,且概率总和为 1.0.

蠕虫总数 = 2+3+5+14+16+15+12+8+10+8+7 = 100

概率总和 = 0.02+0.03+0.05+0.14+0.16+0.15+0.12+0.08+0.1+0.08+0.07 = 1.0

可视化结果为:

 

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

 

尝试 1:使用均匀分布建模

我们首先使用均匀分布来建模该分布。均匀分布只有一个参数:均匀概率;即给定事件发生的概率。

 

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

 

均匀分布和我们的真实分布对比:

 

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

 

先不讨论这个结果,我们再用另一种分布来建模真实分布。

尝试 2:使用二项分布建模

你可能计算过抛硬币正面或背面向上的概率,这就是一种二项分布概率。我们可以将同样的概念延展到我们的问题上。对于有两个可能输出的硬币,我们假设硬币正面向上的概率为 p,并且进行了 n 次尝试,那么其中成功 k 次的概率为:

 

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

 

公式解读

这里说明一下二项分布中每一项的含义。第一项是 p^k。我们想成功 k 次,其中单次成功的概率为 p;那么成功 k 次的概率为 p^k。另外要记得我们进行了 n 次尝试。因此,其中失败的次数为 n-k,对应失败的概率为 (1-p)。所以成功 k 次的概率即为联合概率初学机器学习:直观解读KL散度的数学概念。到此还未结束。在 n 次尝试中,k 次成功会有不同的排列方式。在数量为 n 的空间中 k 个元素的不同排列数量为初学机器学习:直观解读KL散度的数学概念将所有这些项相乘就得到了成功 k 次的二项概率。

 

二项分布的均值和方差

我们还可以定义二项分布的均值和方差,如下:

均值= np
方差= np(1-p)

均值是什么意思?均值是指你进行 n 次尝试时的期望(平均)成功次数。如果每次尝试成功的概率为 p,那么可以说 n 次尝试的成功次数为 np。

文章评论

互联网 自媒体专栏 智能硬件 资本动态 移动互联网 游戏 数据驱动 滚动新闻 O2O 访问移动版
Copyright © 2002-2013 搞数码网 版权所有  电话:0510-898978789 邮箱:89898989@qq.com 地址:北京市新会金水岸国商大厦B-6-B