前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >熵、交叉熵和KL散度的基本概念和交叉熵损失函数的通俗介绍

熵、交叉熵和KL散度的基本概念和交叉熵损失函数的通俗介绍

作者头像
deephub
发布于 2020-07-02 03:14:12
发布于 2020-07-02 03:14:12
1.1K0
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA
交叉熵(也称为对数损失)是分类问题中最常用的损失函数之一。但是,由于当今庞大的库和框架的存在以及它们的易用性,我们中的大多数人常常在不了解熵的核心概念的情况下着手解决问题。所以,在这篇文章中,让我们看看熵背后的基本概念,把它与交叉熵和KL散度联系起来。我们还将查看一个使用损失函数作为交叉熵的分类问题的示例。

什么是熵?

为了开始了解熵到底指的是什么,让我们深入了解信息理论的一些基础知识。在这个数字时代,信息是由位(0和1)组成的。在通信时,有些位是有用的,有些是多余的,有些是错误的,等等。当我们传递信息时,我们希望尽可能多地向接收者传递有用的信息。

在Claude Shannon的论文“通信数学理论(1948)”中,他指出传输1位信息意味着将接收者的不确定性降低2倍。

让我们看看他是什么意思。例如,假设一个地方的天气是随机的,每天都有50-50个晴天或下雨的机会。

现在,如果一个气象站告诉你明天会下雨,那么他们已经把你的不确定性降低了2倍。起初,有两种可能性相同,但在收到气象站的最新消息后,我们只有一种可能性。在这里,气象台给我们发送了一点有用的信息,不管他们如何编码这些信息,这都是真的。

即使发送的消息是“未雨绸缪”的,每个字符占用一个字节,消息的总大小对应40位,但它们仍然只传递1位有用信息。

假设天气有8种可能的状态,所有的可能性都一样。

现在,当气象台给你第二天的天气时,他们会把你的不确定性降低8倍。由于每个事件都有1/8的机会发生,因此折减系数为8。

但如果可能性不一样呢?比如说,75%的几率是晴天,25%的几率是雨天。

现在,如果气象台说第二天会下雨,那么你的不确定性就降低了4倍,这是2位信息。不确定性的降低只是事件概率的倒数。在这种情况下,25%的反比是4,对数(4)到基2等于2。所以,我们得到了2位有用的信息。

如果气象台说第二天会是晴天,那么我们就能得到0.41位有用的信息。那么,我们平均要从气象站得到多少信息呢?

好吧,有75%的可能性明天会是晴天,这给了你0.41比特的信息,25%的可能性明天会下雨,这给了你2比特的信息,这相当于,

我们平均每天从气象站得到0.81位信息。所以,我们刚才计算的是熵。这是一个很好的衡量事件有多不确定的指标。它是由,

熵的方程现在完全有意义了。它测量你每天学习天气时得到的平均信息量。一般来说,它给出了我们从一个给定概率分布的样本中得到的平均信息量,它告诉我们概率分布是多么不可预测。

如果我们生活在一个每天都是晴天的沙漠中间,平均来说,我们每天从气象站得不到多少信息。熵将接近于零。另一方面,如果天气变化很大,熵就会大得多。

交叉熵

现在,我们来谈谈交叉熵。它只是平均消息长度。考虑到8种可能的天气条件的相同示例,所有这些条件都同样可能,每个条件都可以使用3位编码。

这里的平均消息长度是3,这就是交叉熵。但现在,假设你生活在一个阳光充足的地区,那里的天气概率分布如下:

每天有35%的可能性是晴天,只有1%的可能性是雷雨。所以,我们可以计算这个概率分布的熵,

Entropy = -(0.35 * log(0.35) + 0.35 * log(0.35) + 0.1 * log(0.1) + 0.1 * log(0.1) + 0.04 * log(0.04) + 0.04 * log(0.04) + 0.01 * log(0.01) + 0.01 * log(0.01))

Entropy = 2.23 bits

注意,这里使用的二元的记录。

所以,平均来说,气象台发送3位,但收信人只能得到2.23个有用的位。我们可以做得更好。

例如,让我们这样更改代码:

我们现在只使用2位表示晴天或部分晴天,3位表示多云和大部分多云,4位表示小雨和中雨,5位表示大雨和雷雨。天气的编码方式是明确的,如果你链接多条信息,只有一种方法可以解释比特序列。例如,01100只能表示部分晴天,然后是小雨。所以,如果我们计算电台每天发送的平均比特数,

35%*2 + 35%*2 + 10%*3 + 10%* 3+ 4%*4 + 4%*4 + 1%*5 + 1%*5 = 2.42 bits

这是我们的新的和改进的交叉熵,比之前的3位要好。现在,假设我们在不同的地方使用相同的代码,那里的天气正好相反,而且大部分时间都在下雨。

我们计算交叉熵,

1%*2 + 1%*2 + 4%*3 + 4%* 3+ 10%*4 + 10%*4 + 35%*5 + 35%*5 = 4.58 bits

我们得到4.58比特。大约是熵的两倍。平均而言,电台发送4.58位,但只有2.23位对接收者有用。它发送的信息是每条消息所需信息的两倍。这是因为我们使用的代码对天气分布做了一些隐含的假设。例如,当我们对晴天使用2位消息时,我们隐式地预测晴天的概率为25%。这是因为负二元对数(0.25)给出2。

同样,我们计算所有的天气条件。

分母中2的幂对应于用于传输消息的位数。现在,很明显,预测的分布q与真实的分布p有很大的不同。

因此,现在我们可以将交叉熵表示为真概率分布p和预测概率分布q的函数,其表示为:

注意,我们示例中使用的是以2为基数的。

如你所见,它看起来与熵方程非常相似,除了我们在这里使用预测概率的对数。如果我们的预测是完美的,即预测分布等于真分布,那么交叉熵就是简单的熵。但是,如果分布不同,那么交叉熵将比熵大一些位。交叉熵超过熵的量称为相对熵,或者更常见的称为Kullback-Leibler散度(KL散度)。简而言之,

从上面的例子,我们得到K-L散度=交叉熵 - 熵=4.58–2.23=2.35位。

应用

现在,让我们在应用程序中使用交叉熵。考虑到我们正在训练一个图像分类器来对外观基本相似的不同动物进行分类,例如浣熊、小熊猫、狐狸等等。

因此,对于可能的7个类中的每一个,分类器估计一个概率,这称为预测分布。由于这是一个有监督的学习问题,我们知道真实的分布。

在上面的例子中,我拍摄了一只浣熊的图像,所以在真实分布中,它的概率是100%,其他的概率是0。我们可以用这两种分布之间的交叉熵作为代价函数,称之为交叉熵损失。

这只是我们前面看到的方程,除了它通常使用自然对数而不是二元对数。这对于训练来说并不重要,因为二元对数(x)等于自然对数(x)/log(2),其中分母是常数。

因此,当类概率被称为一个热向量时(这意味着一个类有100%,其余的都是0),那么交叉熵就是真类估计概率的负对数。

在这个例子中,交叉熵=1*log(0.3)=-log(0.3)=1.203

现在,当真类的预测概率接近0时,代价将变得非常大。但当预测概率接近1时,成本函数接近于0。

由于得到的损失较多(由于预测的分布太低),我们需要为每一类训练更多的例子来减少损失量。

结论

我们以气象站更新次日天气为例,了解香农信息论的概念。然后我们把它与熵和交叉熵联系起来。最后,我们以一个例子来说明交叉熵损失函数的实际应用。希望本文能澄清熵、交叉熵和KL散度背后的基本概念及其相互关系。

作者:Aakarsh Yelisetty

deephub翻译组

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习----交叉熵(Cross Entropy)如何做损失函数
意义:N为样本数量。公式表示为每一个真实值与预测值相减的平方去平均值。均值平方差的值越小,表明模型越好。 对于回归问题,均方差的损失函数的导数是局部单调的,可以找到最优解。但是对于分类问题,损失函数可能是坑坑洼洼的,很难找到最优解。故均方差损失函数适用于回归问题。
一枕眠秋雨
2024/04/04
9.3K0
机器学习----交叉熵(Cross Entropy)如何做损失函数
交叉熵--损失函数
语言模型的性能通常用交叉熵和复杂度(perplexity)来衡量。交叉熵的意义是用该模型对文本识别的难度,或者从压缩的角度来看,每个词平均要用几个位来编码。复杂度的意义是用该模型表示这一文本平均的分支数,其倒数可视为每个词的平均概率。
zhangjiqun
2024/12/14
1100
交叉熵--损失函数
深度学习 | 交叉熵损失函数
任何事件都会承载着一定的信息量,包括已经发生的事件和未发生的事件,只是它们承载的信息量会有所不同。如昨天下雨这个已知事件,因为已经发生,是既定事实,那么它的信息量就为0。如明天会下雨这个事件,因为未有发生,那么这个事件的信息量就大。
Justlovesmile
2021/12/14
2.6K0
为什么交叉熵和KL散度在作为损失函数时是近似相等的
来源:DeepHub IMBA本文约900字,建议阅读5分钟在本文中,我们将介绍熵、交叉熵和 Kullback-Leibler Divergence [2] 的概念,并了解如何将它们近似为相等。 尽管最初的建议使用 KL 散度,但在构建生成对抗网络 [1] 时,在损失函数中使用交叉熵是一种常见的做法。这常常给该领域的新手造成混乱。当我们有多个概率分布并且我们想比较它们之间的关系时,熵和 KL 散度的概念就会发挥作用。 在这里我们将要验证为什么最小化交叉熵而不是使用 KL 散度会得到相同的输出。所以我们首先从
数据派THU
2022/03/04
1.1K0
交叉熵损失函数计算,联邦学习FL的关键概念
假设 事件X 共有n种可能,发生 xi 的概率为 p(xi) ,那么该事件的熵 H(X) 为:
zhangjiqun
2024/12/13
1380
交叉熵损失函数计算,联邦学习FL的关键概念
KL散度与交叉熵
也记作 。换言之,一个分布的香农熵是指遵循这个分布的时间所产生的期望的信息总量。它给出了对依据概率分布P生成的符号进行编码所需的比特数在平均意义上的下界。哪些接近确定性的分布(输出几乎可以确定)具有较低的熵:那些接近均匀分布的概率分布的概率分布具有较高的熵。当x是连续时,香农熵被称为微分熵(differential entropy)。
狼啸风云
2019/08/18
2.1K0
从概率角度出发,对交叉熵和 KL 散度进行分析和推导
交叉熵是一个衡量两个概率分布之间差异的指标。在机器学习中,这通常用于衡量真实标签的分布与模型预测分布之间的差异。对于两个概率分布
叶庭云
2024/05/25
3550
小孩都看得懂的熵、交叉熵和 KL 散度
本文是「小孩都看得懂」系列的第八篇,本系列的特点是极少公式,没有代码,只有图画,只有故事。内容不长,碎片时间完全可以看完,但我背后付出的心血却不少。喜欢就好!
用户5753894
2019/11/08
1.4K0
小孩都看得懂的熵、交叉熵和 KL 散度
从熵到交叉熵损失的直观通俗的解释
对于机器学习和数据科学的初学者来说,必须清楚熵和交叉熵的概念。它们是构建树、降维和图像分类的关键基础。 在本文中,我将尝试从信息论的角度解释有关熵的概念,当我第一次尝试掌握这个概念时,这非常有帮助。让我们看看它是如何进行的。
deephub
2021/12/27
4100
从熵到交叉熵损失的直观通俗的解释
从熵到交叉熵损失的直观通俗的解释
来源:DeepHub IMBA 本文约1100字,建议阅读5分钟本文从信息论的角度解释有关熵的概念。 对于机器学习和数据科学的初学者来说,必须清楚熵和交叉熵的概念。它们是构建树、降维和图像分类的关键基础。 在本文中,我将尝试从信息论的角度解释有关熵的概念,当我第一次尝试掌握这个概念时,这非常有帮助。让我们看看它是如何进行的。 什么是-log(p)? 信息论的主要关注点之一是量化编码和传输事件所需的总比特数:罕见的事件即概率较低的事件,需要表示更多位,而频繁事件不需要很多位。因此我们可以从编码器和通信机的角
数据派THU
2022/03/04
3670
交叉熵 KL散度
熵这个概念在信息表示中就是“信息含量”,有时候我们常会说“这句话信息含量好多啊”,这也是一种熵的体现。对于一个事件来说,熵越大,也就是信息含量越大,其能实现的可能性越小,反之则亦然。
用户10713522
2023/08/17
1560
损失函数,基于概率分布度量的损失函数,信息量,信息熵的作用
​Loss 在使用似然函数最大化时,其形式是进行连乘,但是为了便于处理,一般会套上log,这样便可以将连乘转化为求和,求和形式更容易求偏导,应用到梯度下降中求最优解;
zhangjiqun
2024/12/14
990
损失函数,基于概率分布度量的损失函数,信息量,信息熵的作用
LOSS:交叉熵损失函数
交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。以前做一些分类问题的时候,经常会用到,最近老师让看下交叉熵损失函数,今天就来看看他是何方神圣。
AngelNH
2020/07/17
9800
LOSS:交叉熵损失函数
从香农熵到手推KL散度:一文带你纵览机器学习中的信息论
IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 信息论是应用数学的一个分支,主要研究的是对一个信号包含信息的多少进行量化。它最初被发明是用来研究在一个含有噪声的信道上用离散的字母表来发送消息,例如通过无线电传输来通信。而本文主要探讨信息熵在 AI 或机器学习中的应用,一般在机器学习中,我们可以将信息论应用在连续型变量上,并使用信息论的一些关键思想来描述概率分布或者量化概率分布之间的相似性。 因此在机器学习中,通常要把与随机事件相关信息的期望值进行量化,此外还要量化不同概率分布之间的相似性
IT派
2018/03/27
8560
从香农熵到手推KL散度:一文带你纵览机器学习中的信息论
从香农熵到手推KL散度:一文带你纵览机器学习中的信息论
选自Medium 作者:Frank Preiswerk 机器之心编译 参与:Nurhachu Null、蒋思源 信息论与信息熵是 AI 或机器学习中非常重要的概念,我们经常需要使用它的关键思想来描述概率分布或者量化概率分布之间的相似性。在本文中,我们从最基本的自信息和信息熵到交叉熵讨论了信息论的基础,再由最大似然估计推导出 KL 散度而加强我们对量化分布间相似性的理解。最后我们简要讨论了信息熵在机器学习中的应用,包括通过互信息选择决策树的特征、通过交叉熵衡量分类问题的损失和贝叶斯学习等。 信息论是应用数学的
机器之心
2018/05/10
1.2K0
你是否有过疑问:为啥损失函数很多用的都是交叉熵(cross entropy)?
我们都知道损失函数有很多种:均方误差(MSE)、SVM的合页损失(hinge loss)、交叉熵(cross entropy)。这几天看论文的时候产生了疑问:为啥损失函数很多用的都是交叉熵(cross entropy)?其背后深层的含义是什么?如果换做均方误差(MSE)会怎么样?下面我们一步步来揭开交叉熵的神秘面纱。
zenRRan
2019/05/13
6.7K0
你是否有过疑问:为啥损失函数很多用的都是交叉熵(cross entropy)?
深度学习中的损失函数
与回归任务不同,分类任务是指标签信息是一个离散值,其表示的是样本对应的类别,一般使用one-hot向量来表示类别,例如源数据中有两类,分别为猫和狗,此时可以使用数字1和数字2来表示猫和狗,但是更常用的方法是使用向量[0,1]表示猫,使用向量[1,0]表示狗。one-hot的中文释义为独热,热 的位置对应于向量中的1,所以容易理解独热的意思是指向量中只有一个位置为1,而其他位置都为0。那么使用独热编码表征类别相较于直接用标量进行表征有什么好处呢,从类别的区分性来说,两者都可以完成对不同类别的区分。但是从标量数字的性质来说,其在距离方面的诠释不如one-hot。例如现在有三个类别,分别为猫,狗和西瓜,若用标量表示可以表示为label猫=1,label狗=2,label西瓜=3,从距离上来说,以欧氏距离为例,dist(猫,狗)=1,dist(狗,西瓜)=1,dist(猫,西瓜)=2,这样会得出一个荒谬的结论,狗要比猫更像西瓜,因此用标量来区分类别是不明确的,若以独热编码表示类别,即label猫=[1,0,0],label狗=[0,1,0],label西瓜=[0,0,1],容易验证各类别之间距离都相同。
Tom2Code
2022/11/21
4310
视觉信息理论
我喜欢有一个新的思维方式来思考这个世界。我特别喜欢把一些模糊的想法正式化为一个具体的概念。信息理论就是一个很好的例子。
Hi胡瀚
2018/02/02
1.3K0
视觉信息理论
信息论中的基本概念
1 信息量 定义:信息量是对信息的度量。 就跟时间的度量是秒一样,当我们考虑一个离散的随机变量x的时候,当我们观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢? 多少信息用信息量来衡量,我
用户1432189
2019/02/25
1K0
深度学习基础知识(三)--交叉熵损失函数
在监督学习进行训练的过程中,我们学习的目的是得到输入到输出的映射关系,在给定 后,预测出 ,期望 尽可能的接近 ,也就是 和 的差距尽可能小。而损失函数就是衡量 和 之间差距的指标,通过损失函数指明模型优化的方向。
languageX
2022/06/01
2.2K0
推荐阅读
相关推荐
机器学习----交叉熵(Cross Entropy)如何做损失函数
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文