来源:DeepHub IMBA
本文约900字,建议阅读5分钟
在本文中,我们将介绍熵、交叉熵和 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://github.com/azad-academy/kl_cross_entropy.git

引用:

[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/Kullback%E2%80%93Leibler_divergence

作者:J. Rafid S., PhD

编辑:黄继彦

为什么交叉熵和KL散度在作为损失函数时是近似相等的相关推荐

  1. 交叉熵损失函数、修正Huber损失、极大似然估计、负对数似然、似然与交叉熵、KL散度

    交叉熵损失函数.修正Huber损失.极大似然估计.负对数似然.似然与交叉熵.KL散度 目录

  2. 信息量、熵、交叉熵、KL散度、JS散度杂谈

    信息量.熵.交叉熵.KL散度.JS散度杂谈 信息量 任何事件都会承载着一定的信息量,包括已经发生的事件和未发生的事件,只是它们承载的信息量会有所不同.如昨天下雨这个已知事件,因为已经发生,既定事实,那 ...

  3. 信息量、熵、交叉熵、KL散度、JS散度、Wasserstein距离

    信息量.熵.交叉熵.KL散度.JS散度 文章目录 信息量.熵.交叉熵.KL散度.JS散度 前言 一.信息量 二.熵 三.交叉熵 四.KL散度 五.JS散度 六. Wasserstein距离 1.解决的 ...

  4. 交叉熵 与 KL散度

    交叉熵 与 KL散度(两者相一致) 一.背景 1.统计学习的方法 人们对人工智能所研究的东西的描述有很多版本. 其中<统计学习方法>一书中给出了一种说法是: "统计学习的方法是基 ...

  5. matlab计算kl散度命令,熵,交叉熵,KL散度公式与计算实例

    交叉熵(Cross Entropy)和KL散度(Kullback–Leibler Divergence)是机器学习中极其常用的两个指标,用来衡量两个概率分布的相似度,常被作为Loss Function ...

  6. 交叉熵与KL散度和交叉熵之间的关系

    1.熵 熵的本质是香农信息量log1plog\frac{1}{p}logp1​ 现有关于样本的两个概率分布ppp和qqq,其中ppp为真实分布,qqq为非真实分布.按照真实分布ppp来衡量识别一个样本 ...

  7. AI入门:通俗讲解熵、交叉熵和 KL 散度

    全文共 4351 字,23 幅图, 预计阅读时间 22 分钟. 本文被以下三份资料所启发,纯纯的致敬! [Christopher Colah] - Visual Information Theory ...

  8. 【Pytorch神经网络理论篇】 21 信息熵与互信息:联合熵+条件熵+交叉熵+相对熵/KL散度/信息散度+JS散度

    1 信息熵 熵 (Entropy),信息熵:常被用来作为一个系统的信息含量的量化指标,从而可以进一步用来作为系统方程优化的目标或者参数选择的判据. 1.1 信息熵的性质 单调性,发生概率越高的事件,其 ...

  9. matlab图像信息熵交叉熵,【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)...

    首先先强烈推荐一篇外文博客Visual Information Theory这个博客的博主colah是个著名的计算机知识科普达人,以前很是著名的那篇LSTM讲解的文章也是他写的.这篇文章详细讲解了信息 ...

最新文章

  1. 数据挖掘导论读书笔记5关联分析的基本概念和算法
  2. const形参与非const形参
  3. html ip输入框效果,html5 input文本框输入动画特效
  4. 集合中的遍历以及删除元素
  5. 深入剖析ThreadLocal实现原理以及内存泄漏问题
  6. iOS NSString 与NSData转化
  7. redis设置密码(redis-cli)
  8. spring aop 会根据实际情况(有无接口)自动选择 两种 动态代理(jdk和cglib)之一...
  9. 电脑上值得收藏的4个黑科技网站,日常办公中能帮你解决各种麻烦
  10. 卸载Oracle 12c
  11. WS2811B驱动使用及使用说明应用
  12. python名字起源_你知道这些编程语言名字的由来吗
  13. 服务器虚拟化厂商有哪些,国内外厂商的桌面虚拟化产品
  14. Qt 及QT VS Tools插件官方下载及安装
  15. window.open在苹果手机上失效的问题
  16. 机械/电信/生物/化学专业出身,为啥都要转行计算机?
  17. 当你的游戏道具,被做成了生意......
  18. Unity开发Excel表格读取器
  19. springboot+dubbo+zookeeper详细搭建
  20. 2023年JAVA面试宝典(全网最全未来十年可用)

热门文章

  1. logstsh xpack 认证_ElasticSearch Kibana 和Logstash 安装x-pack记录
  2. 定义一个员工类(JAVA)
  3. 定义一个有参宏判断一个字符是否在0~9之间
  4. 使用Redis 管理事务(Java)
  5. [译] RxJS: 避免 takeUntil 造成的泄露风险
  6. SQLAlchemy的使用---外键ForeignKey数据库创建与连接
  7. SSD数据可靠性问题分析
  8. canvas刮奖效果
  9. table和div在页面布局上应该注意的问题
  10. Linux 多线程应用中编写安全的信号处理函数