交叉熵这个概念来自信息论。设
其连续形式为
其离散形式为
其经验形式为
经验形式即上述积分的 Monte-Carlo 估计。注意到这里有若干符号的滥用,其中数据样本
是可重复的值,而在理论形式中 则是在测度空间中的唯一值。经验形式中没有出现 是因为此时分布在某一特定值的权重或密度 本身由采样得到的相同值的频率刻画。
在机器学习提到的交叉熵主要是指其经验形式。在机器学习的语境下,
我们需要指出交叉熵的经验形式,其实正是负对数似然函数的形式,由于此时我们假设了数据分布的解析形式为
相应的对数似然为
于是最小化交叉熵就意味着最大化对数似然即最大化似然函数。
而在机器学习的语境中,交叉熵的语义实际更加特殊,它专指类别分布的负对数似然函数。所谓类别分布是伯努利分布的推广,即
这里需要解释一下,所谓的分数
通常是模型的最后一层输出,它指的是未标准化以前的分数,实际上是某种概率的刻画。给定第 个数据点的特征 ,它属于第 类的分数为通过一个映射 得到。通常这一映射通常由神经网络来完成。但我们更常见到的是非常简单的分数函数,如分数矩阵 的投影 ,此时映射的复杂部分主要是特征提取的工作,即 。
在分类问题中,
而概率分布
那么对数似然就等于
这里
代表 的真实类。即唯一使示性函数 非零的值。
如果把每个数据点都代入,整体的对数似然就等于
这个是 Pytorch 文档
torch.nn.CrossEntropy中的交叉熵形式,需要注意的是那里的是此处的 ,也就是上面的 logit 。
再把矩阵形式的分数代入就得到:
一般文献中常见的形式。