专栏首页悦思悦读什么是交叉熵啊?| 小白深度学习入门

什么是交叉熵啊?| 小白深度学习入门

大家在学习深度学习的过程中,都会碰到cross-entropy这个词,中文叫“交叉熵”,多么高大上的名词!

然而这个“熵”到底是干啥用的,实际上很多人包括我,在一开始都没好好琢磨过。

在面试算法工程师的过程中,经常会问道这样的问题:“什么是熵?”

信息熵?

热力学那个先不说,这里准确的说是“信息熵”。而要知道什么是信息熵,我们得知道什么是信息。

网上的“太阳从东边升起来”的例子大家应该都看过了。我们说,这是一句毫无信息量的话,因为他没有消除任何不确定性。

前女友对你说“我结婚了”,这句话包含了信息量,去除了不确定性。但如果前女友和你说“我是女的”,这句话就毫无信息量,这就是废话。

信息熵,泛泛的说是用来衡量一段信息的信息量大小的。

这个定义我之前也不理解,直到我看见一个说法,突然茅塞顿开:信息熵是用来衡量表达一个随机变量需要的最少的比特位数。

在信息论的世界里,我们追求的是用最经济实惠的方法表达信息(“好话不说二遍”嘛)。

对一个不确定的信息(随机变量)来说,怎么最经济实惠的表达它呢,即如何用最少的比特位表达?

你肯定是看这个随机变量的各个可能的值,概率最大的值,你就用最短的位数去表达,概率越小,你就用越长的位。

而表达位数的期望值,即表达这个随机变量用的比特位数的平均值,就是该随机变量的信息熵。

如果上文看着还是绕,我们做这样一个解释:

假设有两艘军舰在海上航行,它们相隔一定的距离,然后也非常落后没有其他通信手段,两艘军舰相约每隔一分钟就用闪探照灯的方法互相确认一下有没有在附近发现敌人,现在船长让你来具体设计这个方法,你怎么设计呢?

因为大多数时间海上是没敌人的,所以为了节省时间,为了不频繁闪灯被敌人发现,你肯定倾向于用最简单的方式来表示绝大部分时间的情况,比如说只闪一下,而等到真正敌人出现的时候,你再连续的闪烁。

舰娘之间、阿不是,军舰之间如何沟通?

明白了以上道理,信息熵的公式也不难推导出了:

其中x是随机变量,p是x的概率分布函数,logp(1/xi)是该概率下需要的比特位(为啥?香农定理,背就对了)。

从定义我们可以看得出来,对一个随机变量来说,如果它的信息熵越大,一般表示这个随机变量取值越多,概率分布越均匀,“混乱程度”就越高;如果信息熵越小则反之,就像刚才军舰探照灯的例子,因为很可能大部分时间这个随机变量都是一个值。

交叉熵?

终于到正题了,前边咱们费这么大劲说了信息熵。懂了信息熵,交叉熵就简单啦。

从上边的公式我们可以得到一个很简单的结论,就是一个随机变量的信息熵只取决于它的概率分布。

既然是概率分布,肯定就分真假,有真实分布(就是随机变量真正的分布),也有因为各种原因导致的非真实分布(比如样本太小啦,数数没数对,或者深度学习中网络没训练好的时候算出来的概率分布)。

那咱们怎么衡量非真实分布和真实分布的差别呢?这时候就轮到交叉熵的出场了:

这个公式是不是看着眼熟多了?这不就是深度学习里的loss function嘛!

其中p和q就是真实分布和非真实分布。如果随机变量的真实分布和非真实分布的交叉熵越小,那表明他们的分布越接近。

咦,这不正适合当深度学习的损失函数嘛!

实际上我们通过形式也很容易看出,大部分深度学习的损失函数就长这个样子,p就是y(就是1或者0),而q就是y帽(就是网络算出来的概率),换了个马甲而已。

好,关于交叉熵咱们聊到这里,下期再见。

本文分享自微信公众号 - 悦思悦读(yuesiyuedu),作者:暴走三轮车

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从销售到 AI 算法工程师 | 转行人工智能 (含面经&裁员幸存指南)

    我是土生土长的农村人,小时候经常和小鱼小虾打交道,上大学的时候就选择了农学专业,想着毕业之后回老家搞养殖种植。

    叶锦鲤
  • 计算机是怎么理解人类语言的?

    让计算机理解人类语言 “教”计算机理解人类的自然语言这部分工作,称作自然语言理解(Natural Language Understanding / NLU)。 ...

    叶锦鲤
  • 怎么投简历才有效?

    4. 熟人引荐:由既了解在招聘岗位、招聘老板,又了解你本人的能力人品的熟人,在认定你和开发职位非常匹配的情况下,将你推荐给招聘老板;

    叶锦鲤
  • 谷歌开启 Naturalist 2018 挑战赛,大型物种分类技术有望突破

    雷锋网 AI 研习社按:计算机视觉技术从 70 年代到现在,40 多年时间得到迅速发展,许多计算机视觉的应用出现在了生产生活领域。尤其是到了 2012 年,基于...

    朱晓霞
  • 技术规范(2): 后端技术开发规范

    PEP8 规范: https://www.python.org/dev/peps/pep-0008/

    机械视角
  • 解开uKit AI项目的幕后秘密:自动化网站重新设计

    ? 第1部分:基础知识 没有什么是一成不变的,有时你需要修改网站上的一些东西以保持网站的新鲜度。也许是外观和新的配色方案。也许存在技术问题,比如取消Flash...

    AiTechYun
  • 谷歌开启 Naturalist 2018 挑战赛,大型物种分类技术有望突破

    雷锋网 AI 研习社按:计算机视觉技术从 70 年代到现在,40 多年时间得到迅速发展,许多计算机视觉的应用出现在了生产生活领域。尤其是到了 2012 年,基于...

    AI研习社
  • 谷歌开启 Naturalist 2018 挑战赛,大型物种分类技术有望突破

    雷锋网 AI 研习社按:计算机视觉技术从 70 年代到现在,40 多年时间得到迅速发展,许多计算机视觉的应用出现在了生产生活领域。尤其是到了 2012 年,基于...

    朱晓霞
  • ​如何处理Express和Node.js应用程序中的错误

    使用Express创建API时,我们定义了路由及其处理程序。在理想情况下,API的使用者只会向我们定义的路由发出请求,并且路由将正常运行。但是,我们不会生活在理...

    前端知否
  • 国人开发的一套MVC框架

    最近经常闲逛码云,发现了一款国人开发的MVC,感觉非常不错。用在中小型的项目非常合适,它就是JFinal。已经有不少开源的项目基于这个MVC框架开发。

    java乐园

扫码关注云+社区

领取腾讯云代金券