信息论 - 交叉熵

本文最后更新于:2021年11月1日 中午

交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。

定义

在信息论中,交叉熵(Cross Entropy)是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布,在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。。

  • 假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:

$$
\mathrm{H}(\mathrm{p})=\sum_{i} p(i) \cdot \log \left(\frac{1}{p(i)}\right)
$$

  • 但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:
    $$
    \mathrm{H}(\mathrm{p}, \mathrm{q})=\sum_{i} p(i) \cdot \log \left(\frac{1}{q(i)}\right)
    $$

  • 此时就将H(p,q)称之为交叉嫡。交叉嫡的计算方式如下:

    • 对于离散变量采用以下的方式计算:
      $$
      \mathrm{H}(\mathrm{p}, \mathrm{q})=\sum_{x} p(x) \cdot \log \left(\frac{1}{q(x)}\right)
      $$
    • 对于连续变量采用以下的方式计算:

$$
\mathrm{H}(\mathrm{p}, \mathrm{q})=-\int_{X} P(x) \log Q(x) d r(x)=E_{p}[-\log Q]
$$

含义

  • 交叉熵可以看作真实分布的熵与估计分布与真实分布的KL散度的和

$$
H(P, Q)=H§+D_{K L}(P | Q)=-\mathbb{E}_{X \sim P(X)} \log Q(x)
$$

  • KL散度不对称,不同分布熵值不同,因此交叉熵不对称
  • 交叉嫡刻画了使用错误分布 $ Q $ 来表示真实分布 $ P $ 中的样本的平均编码长度。
  • $ D_{K L(P|| Q)} $ 刻画了错误分布 $ Q $ 编码真实分布 $ P $ 带来的平均编码长度的增量。

示例

交叉熵在深度学习的损失函数中得到广泛应用

真实数据分布(标签)为$Y$,预测分布为$P$

事实上我们用的交叉熵为$H(Y,P)$,即使用Y的分布,用P的编码方式度量信息熵大小

  • 二分类时

$$
L=\frac{1}{N} \sum_{i} L_{i}=\frac{1}{N} \sum_{i}-\left[y_{i} \cdot \log \left(p_{i}\right)+\left(1-y_{i}\right) \cdot \log \left(1-p_{i}\right)\right]
$$

其中: $ y_{i}$ 表示样本 $ i $ 的label, 正类为 1, 负类为 0 $ p_{i} \longrightarrow $ 表示样本 $ i $ 预测为正的概率

  • 多分类

$$
L=\frac{1}{N} \sum_{i} L_{i}=\frac{1}{N} \sum_{i}-\sum_{c=1}^{M} y_{i c} \log \left(p_{i c}\right)
$$

至于为什么不用$H(P,Y)$,可能是因为$y$的值很容易取到0,超出了$log$运算的变量取值范围无法计算吧(个人猜测)

参考资料