损失函数之交叉熵

一、交叉熵的由来

  1. 信息量
    香农提出的“信息熵”, 是用来解决信息量化问题。信息的不确定性越强, 需要用来表达的数据量也就越多。事件的不确定性通常是概率分布P来表示, 所以信息的量化也是通过概率来实现。
    信息量的计算公式如下:


    信息量

2.熵
用来表示所有信息量的期望值,表示样本概率分布P,表达这些样本所需的最小编码长度:


  1. 交叉熵
    假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量表达一个样本所需要的编码长度的期望为:
交叉熵公式

4.相对熵或KL散列
类似于交叉熵,有两个概率分布p,q,其中p为真实分布,q为非真实分布,表达两个分布之间的相对熵概率,计算公式如下:


相对熵

接下来, 我们推到分析下相对熵、熵以及交叉熵之间的关系:


相对熵、熵与交叉熵之间关系

上面公式中第一部分是熵的计算, 第二部分是交叉熵(实际差一个负号,不影响比较暂时忽略)。简单概括:相对熵等于交叉熵减去熵(注意负号),物理含义是相对熵表达信息比熵需多出的编码长度。重点:如果p(x)的分布接近q(x), 相对熵接近于0.
通过上面的分析可知:相对熵是非常适合作为机器学习和深度学习领域目标优化的评估指标(主要是分类场景),p(x)作为训练样本的真实分布, q(x)表示训练出模型预测样本的分布,模型训练的目标量化是让模型预测样本的分布尽量接近训练样本的真实分布。
如果训练的样本已经确定,概率分布也就确定,上面公式第一部分是固定的,优化的目标可以集中在第二部分, 也就是交叉熵部分,让交叉熵的值尽量的小。

二、交叉熵的使用场景
交叉熵可在神经网络(机器学习)中作为损失函数,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。交叉熵作为损失函数还有一个好处是使用sigmoid函数在梯度下降时能避免均方误差损失函数学习速率降低的问题,因为学习速率可以被输出的误差所控制。

在特征工程中,可以用来衡量两个随机变量之间的相似度。

在语言模型中(NLP)中,由于真实的分布p是未知的,在语言模型中,模型是通过训练集得到的,交叉熵就是衡量这个模型在测试集上的正确率。

【参考文章】
详解机器学习中的熵、条件熵、相对熵和交叉熵 https://www.cnblogs.com/kyrieng/p/8694705.html
一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉https://blog.csdn.net/tsyccnh/article/details/79163834

你可能感兴趣的:(损失函数之交叉熵)