乐趣区

关于深度学习:为什么交叉熵和KL散度在作为损失函数时是近似相等的

在本文中,咱们将介绍熵、穿插熵和 Kullback-Leibler Divergence [2] 的概念,并理解如何将它们近似为相等。

只管最后的倡议应用 KL 散度,但在构建生成反抗网络 [1] 时,在损失函数中应用穿插熵是一种常见的做法。这经常给该畛域的老手造成凌乱。当咱们有多个概率分布并且咱们想比拟它们之间的关系时,熵和 KL 散度的概念就会发挥作用。

在这里咱们将要验证为什么最小化穿插熵而不是应用 KL 散度会失去雷同的输入。所以咱们首先从正态分布中抽取两个概率分布 p 和 q。如图 1 所示,两种散布都不同,然而它们共享一个事实,即两者都是从正态分布中采样的。

熵是零碎不确定性的度量。直观地说它是从零碎中打消不确定性所需的信息量。零碎各种状态的概率分布 p 的熵能够计算如下:

穿插熵

穿插熵是指存在于两个概率分布之间的信息量。在这种状况下,散布 p 和 q 的穿插熵能够表述如下:

KL 散度

两个概率分布之间的散度是它们之间存在的间隔的度量。概率分布 p 和 q 的 KL 散度(KL-Divergence)能够通过以下等式测量:

其中方程右侧的第一项是散布 p 的熵,第二项是散布 q 对 p 的冀望。在大多数理论利用中,p 是理论数据 / 测量值,而 q 是假如散布。对于 GAN,p 是实在图像的概率分布,而 q 是生成的假图像的概率分布。

验证

当初让咱们验证 KL 散度的确与应用穿插熵散布 p 和 q 雷同。咱们别离在 python 中计算熵、穿插熵和 KL 散度。

右侧的第二项,即散布 p 的熵能够被认为是一个常数,常数的导数是 0,对反向流传不会有影响。因而咱们能够得出结论,最小化穿插熵代替 KL 散度会呈现雷同的输入,因而能够近似相等。

总结

在本文中,咱们理解了熵、穿插熵和 kl- 散度的概念。而后咱们答复了为什么这两个术语在深度学习应用程序中常常调换应用。咱们还在 python 中实现并验证了这些概念。残缺代码参考这个地址 https://www.overfit.cn/post/cec0eb1d28c446129b38aedf11182fbb

援用

[1] Goodfellow, I. et al., Generative adversarial nets. In Advances in neural information processing systems. pp. 2672–2680, 2014

[2]https://en.wikipedia.org/wiki…

作者:J. Rafid S., PhD

退出移动版