交叉熵(Cross-Entropy)是信息论中的一个概念,在机器学习,特别是分类任务中,常被用作衡量模型预测分布与真实分布之间差异的损失函数。
1. 信息论基本概念
在了解交叉熵之前,我们首先定义几个关键的信息论量。
1.1 自信息 (Self-Information)
自信息量 衡量的是特定事件 发生所携带的信息量。一个事件发生的概率越低,其发生时所包含的信息量就越大。自信息量的定义为:
其中 是事件 发生的概率。对数通常以 2 为底,此时信息量单位为比特(bits)。在机器学习中,出于计算便利,也常使用自然对数,单位为纳特(nats)。
1.2 信息熵 (Entropy)
信息熵 衡量的是一个随机变量(或一个概率分布 )的平均不确定性或平均信息量。它是所有可能事件的自信息量的期望值。 对于离散随机变量,其概率分布为 ,信息熵的定义为:
其中求和符号 遍历随机变量 所有可能的取值。信息熵反映了对一个随机系统进行编码所需的平均最小比特数。
1.3 KL散度 (Kullback-Leibler Divergence)
KL散度 衡量的是两个概率分布 和 之间的差异性。它表示当我们使用一个近似分布 来编码真实分布 时,所产生的额外平均比特数。 KL散度的定义为:
KL散度具有以下性质:
- 非负性:。
- 相等性:当且仅当 对于所有 都成立时,。
- 非对称性:,因此它不是一个严格意义上的距离度量。
2. 交叉熵的定义
交叉熵 衡量的是当我们使用一个编码方案(基于分布 优化)来描述另一个分布 中的事件时,所需要的平均比特数。 交叉熵的定义为:
在机器学习中,通常 代表数据的真实标签分布(例如,在分类任务中通常是one-hot编码,真实类别概率为1,其他为0),而 代表模型预测的概率分布。
3. 交叉熵、信息熵与KL散度的关系推导
现在,我们将严格推导交叉熵、信息熵和KL散度之间的关系。 我们从交叉熵的定义开始:
为了引入 项,我们将 进行加减操作:
重新排列对数项:
根据对数运算性质 ,括号内第二项可以写为 。
现在,我们将 乘入括号内,并分配求和符号:
观察等式右侧的两个项:
- 第一个项:,根据信息熵的定义,这正是 。
- 第二个项:,根据KL散度的定义,这正是 。
因此,我们得到了交叉熵、信息熵和KL散度之间的关系:
4. 关系的意义
这个关系式揭示了交叉熵的深层含义及其在机器学习中的作用。
在机器学习的分类任务中:
- 是真实标签的概率分布。例如,如果一个样本的真实标签是类别 ,那么 ,而对于其他类别 。在这种情况下,(对于单点分布)。也就是说,真实标签的熵是一个常数,且通常为0。
- 是模型预测的概率分布。模型通过其参数来调整 ,使其尽可能接近 。
当我们将交叉熵作为损失函数来优化模型时,我们的目标是最小化 。 根据推导出的关系式 :
- 由于 是真实分布的熵,它是一个常数,不依赖于模型的参数。
- 因此,最小化 等价于最小化 。
所以说,最小化交叉熵损失,实际上就是在最小化模型预测分布 与真实分布 之间的KL散度。这促使模型学习到能够使预测分布尽可能接近真实分布的参数。由于 ,并且仅当 时取等号,这意味着交叉熵损失的最小值可以达到 ,此时模型完美地预测了真实分布。