交叉熵(Cross Entropy)是用来衡量两个概率分布之间的差异性的一种方法。在机器学习和深度学习中,交叉熵常常被用作损失函数,用来衡量模型预测的结果与真实结果之间的差距。

设有两个概率分布p和q,p表示真实的分布,q表示模型预测的分布,交叉熵的定义如下:

H(p,q)=− ∑ i=1n p ilog⁡( q i)H(p,q)=-\sum_{i=1}^{n}p_i\log(q_i) H(p,q)=i=1npilog(qi)

其中, pi p_ipi表示真实分布中第i个事件发生的概率, qi q_iqi表示模型预测分布中第i个事件发生的概率。

交叉熵越小,表示模型预测的结果与真实结果越接近,反之则越不接近。因此,在机器学习中,我们通常将交叉熵作为损失函数,用来指导模型的优化。

以分类问题为例,假设有m个样本,每个样本有k个类别,用 y i j y_{ij}yij表示第i个样本属于第j个类别的概率(0≤ y i j y_{ij}yij≤1, ∑ j = 1ky i j= 1\sum_{j=1}^{k}y_{ij}=1j=1kyij=1),用 t i j t_{ij}tij表示第i个样本的真实标签,如果第i个样本的真实标签是第j个类别,那么 t i j t_{ij}tij为1,否则为0。那么,模型的交叉熵损失函数可以表示为:

L=− 1 m ∑ i=1m ∑ j=1k t ij log⁡( y ij )L=-\frac{1}{m}\sum_{i=1}^{m}\sum_{j=1}^{k}t_{ij}\log(y_{ij}) L=m1i=1mj=1ktijlog(yij)

通过最小化交叉熵损失函数,我们可以训练出一个可以对输入进行有效分类的模型。

举例

交叉熵在机器学习中有广泛的应用,特别是在分类问题中。一个典型的例子是图像分类,假设我们有一张图片,我们需要将其分类到不同的类别中。我们可以使用神经网络模型进行分类,模型的输出是每个类别的概率。例如,我们将该图片分类为狗、猫或鸟的概率分别为0.6、0.3和0.1。我们可以使用交叉熵来计算模型输出和实际标签之间的差距。假设实际标签为狗,则交叉熵可以表示为:

H ( p , q ) = − ∑ i = 1np( x i)log(q( x i)) H(p,q)=-\sum_{i=1}^{n}{p(x_i)log(q(x_i))}H(p,q)=i=1np(xi)log(q(xi))

其中, p ( xi)p(x_i)p(xi)表示实际标签为狗的概率, q ( xi)q(x_i)q(xi)表示模型预测为狗的概率。将实际标签代入上式,可以得到:

H ( p , q ) = − 1 l o g ( 0.6 ) − 0 l o g ( 0.3 ) − 0 ∗ l o g ( 0.1 ) = 0.51H(p,q)=-1log(0.6)-0log(0.3)-0*log(0.1)=0.51H(p,q)=1log(0.6)0log(0.3)0log(0.1)=0.51

可以看到,交叉熵值越小,表示模型预测结果与实际标签越接近。因此,我们可以使用交叉熵作为损失函数,通过优化模型参数来最小化交叉熵,从而提高模型分类准确率。