[机器学习]理解熵,交叉熵和交叉熵的应用

一 信息量

信息论当中的熵指的是信息量的混乱程度,也可以理解成信息量的大小。

举个简单的例子,以下两个句子,哪一个句子的信息量更大呢?

  1. 我今天没中彩票
  2. 我今天中彩票了

从文本上来看,这两句话的字数一致,描述的事件也基本一致,但是显然第二句话的信息量要比第一句大得多,原因也很简单,因为中彩票的概率要比不中彩票低得多。一个低概率的结果与一个高概率的结果相比,低概率的结果带来的信息量更大。

我们用对数函数来量化一个事件的信息量:

因为一个事件发生的概率取值范围在0到1之间,所以log(p(X))的范围是负无穷到0,我们加一个负号将它变成正值。画成函数大概是下面这个样子:

二 信息熵

现在我知道一个事件产生某个结果的自信息,我想知道这个事件平均带来多少自信息。对自信息s进行加权平均是很直观的。现在的问题是选择什么权重?因为我知道每个结果的概率,所以用概率作为权重是有意义的,因为这是每个结果应该发生的概率

我们上面的公式定义的是信息量,但是这里有一个问题,我们定义的只是事件X的一种结果的信息量。对于一个事件来说,它可能的结果可能不止一种。我们希望定义整个事件的信息量,其实也很好办,我们算下整个事件信息量的期望即可,这个期望就是信息熵。

期望的公式我们应该都还记得:

套入信息量的公式可以得到信息熵H(x):

对于某个事件,有n种可能性,每一种可能性都有一个概率p(xi) ,这样就可以计算出某一种可能性的信息量。举一个例子,假设你拿出了你的电脑,按下开关,会有三种可能性,下表列出了每一种可能的概率及其对应的信息量。

所以上面的问题结果就是 :

三 交叉熵

现在,如果每个结果的实际概率为 pi 却有人将概率估计为 qi怎么办。在这种情况下,每个事件都将以pi的概率发生,但是公式里的自信息就要改成qi(因为人们以为结果的概率是qi)。现在,在这种情况下,加权平均自信息就变为了交叉熵c,它可以写成:

交叉熵总是大于熵,并且仅在以下情况下才与熵相同 pi = qi,你可以观看 https://www.desmos.com/calculator/zytm2sf56e 的插图来帮助理解

 

交叉熵损失

    

紫色线代表蓝色曲线下的面积,估计概率分布(橙色线),实际概率分布(红色线)

在上面我提到的图中,你会注意到,随着估计的概率分布偏离实际/期望的概率分布,交叉熵增加,反之亦然。因此,我们可以说,最小化交叉熵将使我们更接近实际/期望的分布,这就是我们想要的。这就是为什么我们尝试降低交叉熵,以使我们的预测概率分布最终接近实际分布的原因。因此,我们得到交叉熵损失的公式为:

在只有两个类的二分类问题的情况下,我们将其命名为二分类交叉熵损失,以上公式变为:

 

从期望角度上理解来说,信息熵计算的是log(p)在p上的期望,交叉熵则是log(q)在p上的期望;换句话说,信息熵为事件的信息量关于其事件发生的概率分布的期望值,那么交叉熵可以认为是事件的信息量关于真实概率分布的期望值

 

四 交叉熵的应用

1.为什么要用交叉熵做loss函数?

在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数,比如:

这里的m表示m个样本的,loss为m个样本的loss均值。
MSE在线性回归问题中比较好用,那么在逻辑分类问题中还是如此么?

 

2.交叉熵在单分类问题中的使用

这里的单类别是指,每一张图像样本只能有一个类别,比如只能是狗或只能是猫。
交叉熵在单分类问题上基本是标配的方法

上式为一张样本的loss计算方法,n代表着n种类别。


举例说明,比如有如下样本

对应一个batch的loss就是

m为当前batch的样本数

 

3.交叉熵在多分类问题中的使用

这里的多类别是指,每一张图像样本可以有多个类别,比如同时包含一只猫和一只狗
和单分类问题的标签不同,多分类的标签是n-hot。

有一张图,即有青蛙,又有老鼠,所以是一个多分类问题

值得注意的是,这里的Pred不再是通过softmax计算的了,这里采用的是sigmoid。将每一个节点的输出归一化到[0,1]之间。所有Pred值的和也不再为1。换句话说,就是每一个Label都是独立分布的,相互之间没有影响。所以交叉熵在这里是单独对每一个节点进行计算,每一个节点只有两种可能值,所以是一个二项分布。前面说过对于二项分布这种特殊的分布,熵的计算可以进行简化。
同样的,交叉熵的计算也可以简化,即

注意,上式只是针对一个节点的计算公式。这一点一定要和单分类loss区分开来。
例子中可以计算为:

单张样本的loss即为loss=loss猫+loss蛙+loss鼠

每一个batch的loss就是:

m为当前batch中的样本量,n为类别数。

 

单分类时,每张图片的损失是一个交叉熵,交叉熵针对的是所有类别(所有类别概率和是1)。 多分类时,每张图片的损失是N个交叉熵之和(N为类别数),交叉熵针对的是单个类别(单个类别概率和是1)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值