KL 散度是另一个在机器学习中用来衡量相似度的量:从 q 到 p 的 KL 散度如下:D_KL(p||q)。在贝叶斯推理中,D_KL(p||q) 衡量当你修改了从先验分布 q 到后验分布 p 的信念之后带来的信息增益,或者换句话说,就是用后验分布 q 来近似先验分布 p 的时候造成的信息损失。例如,在训练一个变分自编码器的隐藏空间表征时就使用了 KL 散度。KL 散度可以用熵和交叉熵表示:
D_{KL}(p||q) = H(p,q) - H(p)
交叉熵衡量的是用编码方案 q 对服从 p 的事件进行编码时所需 bit 数的平均值,而 KL 散度给出的是使用编码方案 q 而不是最优编码方案 p 时带来的额外 bit 数。从这里我们可以看到,在机器学习中,p 是固定的,交叉熵和 KL 散度之间只相差一个常数可加项,所以从优化的目标来考虑,二者是等价的。而从理论角度而言,考虑 KL 散度仍然是有意义的,KL 散度的一个属性就是,当 p 和 q 相等的时候,它的值为 0。
KL 散度有很多有用的性质,最重要的是它是非负的。KL 散度为 0 当且仅当 P 和 Q 在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是 『几乎 处处』 相同的。因为 KL 散度是非负的并且衡量的是两个分布之间的差异,它经常 被用作分布之间的某种距离。然而,它并不是真的距离因为它不是对称的:对于某 些 P 和 Q,D_KL(P||Q) 不等于 D_KL(Q||P)。这种非对称性意味着选择 D_KL(P||Q) 还是 D_KL(Q||P) 影响很大。
在李宏毅课程(http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html)的讲解中,KL 散度可以从极大似然估计中推导而出。若给定一个样本数据的分布 P_data(x) 和生成的数据分布 P_G(x;θ),那么 GAN 希望能找到一组参数θ使分布 P_g(x;θ) 和 P_data(x) 之间的距离最短,也就是找到一组生成器参数而使得生成器能生成十分逼真的图片。
现在我们可以从训练集抽取一组真实图片来训练 P_G(x;θ) 分布中的参数θ使其能逼近于真实分布。因此,现在从 P_data(x) 中抽取 m 个真实样本 {𝑥^1,𝑥^2,…,𝑥^𝑚},其中符号「^」代表上标,即 x 中的第 i 个样本。对于每一个真实样本,我们可以计算 P_G(x^i;θ),即在由θ确定的生成分布中,x^i 样本所出现的概率。因此,我们就可以构建似然函数:
L = \prod_{i=1}^m P_G(x^i; \theta)
其中P_G(x^i;θ) 代表第 i 个样本在生成分布出现的概率。从该似然函数可知,我们抽取的 m 个真实样本在 P_G(x;θ) 分布中全部出现的概率值可以表达为 L。又因为若 P_G(x;θ) 分布和 P_data(x) 分布相似,那么真实数据很可能就会出现在 P_G(x;θ) 分布中,因此 m 个样本都出现在 P_G(x;θ) 分布中的概率就会十分大。
下面我们就可以最大化似然函数 L 而求得离真实分布最近的生成分布(即最优的参数θ):
\theta^* = arg max_{\theta} \prod_{i=1}^m P_G(x^i; \theta) = arg max_{\theta} log\prod_{i=1}^m P_G(x^i; \theta) = arg max_{\theta} \sum_{i=1}^m logP_G(x^i; \theta) {x^1, x^2, .., x^m} from P_{data}(x) \approx arg max_{\theta} E_{x~P_{data}} [logP_G(x; \theta)] =arg max_{\theta} \int_x P_{data}(x) logP_G(x; \theta)dx - \int_x P_{data}(x)logP_{data}(x)dx =arg min_{\theta} KL(P_{data}(x)||P_G(x;\theta))
在上面的推导中,我们希望最大化似然函数 L。若对似然函数取对数,那么累乘 ∏ 就能转化为累加 ∑,并且这一过程并不会改变最优化的结果。因此我们可以将极大似然估计化为求令 log[P_G(x;θ)] 期望最大化的θ,而期望 E[logP_G(x;θ)] 可以展开为在 x 上的积分形式:∫P_data(x)logP_G(x;θ)dx。又因为该最优化过程是针对θ的,所以我们添加一项不含θ的积分并不影响最优化效果,即可添加 -∫P_data(x)logP_data(x)dx。添加该积分后,我们可以合并这两个积分并构建类似 KL 散度的形式。该过程如下:
\int_xP_{data}logP_G(x,\theta)-P_{data}(x)logP_{data}(x)dx = \int_x P_{data}(x)log\frac{P_G(,\theta)}{P_{data}(x)}
这一个积分就是 KL 散度的积分形式,因此,如果我们需要求令生成分布 P_G(x;θ) 尽可能靠近真实分布 P_data(x) 的参数θ,那么我们只需要求令 KL 散度最小的参数θ。此外,我们可以将 KL 散度的积分形式转换为我们熟悉的 KL 散度表达式:
D_{KL}(P||Q) = E_{X~P}[log\frac{P(x)}{Q(x)}] = E_{X~P}[logP(x)-logQ(x)]
在离散型变量的情况下,KL 散度衡量的是,当我们使用一种被设计成能够使得概率分布 Q 产生的消息的长度最小的编码,发送包含由概率分布 P 产生的符号消息时,所需要的额外信息量。
[图片及描述来源:从香农熵到手推KL散度:一文带你纵览机器学习中的信息论|机器之心]
2. 发展历史
描述
KL散度由Solomon Kullback和Richard Leibler于1951年引入,用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。两人在命名上有些分歧,但其定义是一样的。在机器学习领域,KL散度的应用非常广泛。
上世纪90年代,变分推断在概率模型上得到迅速发展,Attias的两篇文章给出了在贝叶斯框架下一般的变分法,从那时起KL散度就常被用作变分贝叶斯的不相似函数。
2013年,Diederik P.Kingma和Max Welling提出变分自动编码器(Variational autoencoder,VAE),所使用的目标函数就由KL散度组成。
2017年,Eric Xing等人通过一个新的公式建立生成对抗网络(GAN)和变分自编码器(VAE)间的形式化联系。他们将 GAN 的样本生成过程视为后验推断,展示出 GAN 和 VAE 分别涉及最小化后验分布和推断分布的方向相反的 KL 散度。他们认为 VAE 和 GAN 分别涉及最小化对应后验分布和推断分布的 KL 散度,但生成模型参数θ在 KL 散度中的位置相反。由于 KL 散度的不对称性,这直接解释了上述 GAN 和 VAE 明显不同的模型行为:GAN 中的 KL 散度倾向于驱使生成模型分布塌缩到真实后验分布的少数几个高密度区域,这使得 GAN 通常能够生成清晰图像,但是缺少样本多样性。对比来看,VAE 中的 KL 散度会驱使生成模型分布覆盖真实后验分布的所有区域,包括真实后验分布的低密度区域,这通常导致生成模糊图像。此类互补属性自然促进 GAN 和 VAE 目标的结合,以解决每个孤立模型的问题。
2018年,Shuai Wang等人针对基于神经网络的单通道多说话人识别框架进行了多种改进,其中一项是将KL散度修改为 Focal-KLD 使得训练过程中给与 hard samples 更多的权重。实验结果表明他们提出的系统相对于基线系统取得了明显的性能提升,在两个说话人情况下达到 92.47% 的正确率,三个说话人时正确率为 55.83%。
主要事件
年份 | 事件 | 相关论文/Reference |
1951 | 相对熵(relative entropy),又称为KL散度(Kullback–Leibler divergence,简称KLD)被提出 | Kullback, S., & Leibler, R. A. (1951). On Information and Sufficiency. The Annals of Mathematical Statistics, 22(1), 79-86. |
2000 | Attias的两篇文章给出了在贝叶斯框架下一般的变分法,从那时起KL散度就常被用作变分贝叶斯的不相似函数 | Attias, H. (2000). A variational baysian framework for graphical models. In Advances in neural information processing systems (pp. 209-215). |
2013 | Diederik P.Kingma和Max Welling提出的变分自编码器的目标函数由KL散度组成 | Kingma, D. P., & Welling, M. (2013). Auto-encoding variational bayes. arXiv preprint arXiv:1312.6114. |
2017 | Eric Xing等人通过一个新的公式建立生成对抗网络(GAN)和变分自编码器(VAE)间的形式化联系 | Hu, Z.; Yang, Z. Salakhutdinov, R.; Xing, E. (2017). On Unifying Deep Generative Models. arXiv:1706.00550v5. |
2018 | Shuai Wang等人针对基于神经网络的单通道多说话人识别框架进行了多种改进,其中一项是将KL散度修改为 Focal-KLD 使得训练过程中给与 hard samples 更多的权重 | Wang, S.; Qian, Y. and Kai, Y. (2018). FOCAL KL-DIVERGENCE BASED DILATED CONVOLUTIONAL NEURAL NETWORKS FOR CO-CHANNEL SPEAKER IDENTIFICATION. ICASSP. |
3. 发展分析
瓶颈
KL散度可以衡量两个分布之间的相似性,即其定义上假设事物状态是可以用一个以经典集合论为基础的概率模型来描述的。然而在实际情况中,有些事物的运动状态很难找到一个合适的概率模型。
未来发展方向
目前KL散度仍然在人工智能领域有很重要的作用,其可以直接用来衡量模型表现,也可以进行特定需改使其更符合特定应用场景,如Focal-KLD的提出;此外,目前也有一些研究试图令神经网络自己学习损失函数。
Contributor: Yuanyuan Li