本文最后更新于:2024年5月7日 下午
交叉熵(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(P)+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$运算的变量取值范围无法计算吧(个人猜测)
参考资料
- http://www.huaxiaozhuan.com/数学基础/chapters/2_probability.html
- https://baike.baidu.com/item/交叉熵/8983241?fr=aladdin
- https://zhuanlan.zhihu.com/p/35709485
文章链接:
https://www.zywvvd.com/notes/study/information-theory/cross-entropy-KL-divergence/cross-entropy/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付