交叉熵的直观理解
交叉熵的直观理解
Bin Lian信息论基础
信息论(information theory)涉及编码、解码、发送以及尽可能简洁地处理信息或数据。
熵
信息论的核心思想是量化数据中的信息内容。
在信息论中,该数值被称为分布的熵(entropy)。可以通过以下方程得到:
信息论的基本定理之一指出,为了对从分布中随机抽取的数据进行编码,
我们至少需要"纳特(nat)"对其进行编码。
"纳特"相当于比特(bit),但是对数底为而不是2。因此,一个纳特是比特。
信息量
压缩与预测有什么关系呢?
想象一下,我们有一个要压缩的数据流。
如果我们很容易预测下一个数据,那么这个数据就很容易压缩。
举一个极端的例子,假如数据流中的每个数据完全相同,这会是一个非常无聊的数据流。
由于它们总是相同的,我们总是知道下一个数据是什么。
所以,为了传递数据流的内容,我们不必传输任何信息。也就是说,"下一个数据是xx"这个事件毫无信息量。
但是,如果我们不能完全预测每一个事件,那么我们有时可能会感到"惊异"。
克劳德·香农决定用信息量来量化这种惊异程度。
在观察一个事件时,并赋予它(主观)概率。
当我们赋予一个事件较低的概率时,我们的惊异会更大,该事件的信息量也就越大。
熵,是当分配的概率真正匹配数据生成过程时的信息量的期望。
重新审视交叉熵
如果把熵想象为"知道真实概率的人所经历的惊异程度",那么什么是交叉熵?
交叉熵从到,记为。
我们可以把交叉熵想象为"主观概率为的观察者在看到根据概率生成的数据时的预期惊异"。
当时,交叉熵达到最低。在这种情况下,从到的交叉熵是。
简而言之,我们可以从两方面来考虑交叉熵分类目标:
(i)最大化观测数据的似然;(ii)最小化传达标签所需的惊异。
小结
- softmax运算获取一个向量并将其映射为概率。
- softmax回归适用于分类问题,它使用了softmax运算中输出类别的概率分布。
- 交叉熵是一个衡量两个概率分布之间差异的很好的度量,它测量给定模型编码数据所需的比特数。
数值稳定性:Softmax 的实现技巧
在前面计算模型的输出时,我们将输出送入交叉熵损失。从数学上讲,这是一件完全合理的事情。然而,从计算角度来看,指数可能会造成数值稳定性问题。
上溢问题
softmax函数,其中是预测的概率分布。
如果中的一些数值非常大,那么可能大于数据类型容许的最大数字,即上溢(overflow)。
这将使分母或分子变为inf(无穷大),最后得到的是0、inf或nan(不是数字)的。
解决方案:减去最大值
解决这个问题的一个技巧是:在继续softmax计算之前,先从所有中减去。
下溢问题与 LogSumExp 技巧
在减法和规范化步骤之后,可能有些具有较大的负值。由于精度受限,将有接近零的值,即下溢(underflow)。
通过将softmax和交叉熵结合在一起,可以避免反向传播过程中可能会困扰我们的数值稳定性问题:
这,就是著名的 LogSumExp 技巧。









