机器学习基础:交叉熵损失(Machine Learning Fundamentals: Cross Entropy Loss)

前言

交叉熵损失函数是分类问题里面一个非常常用的函数,本文就其物理意义进行两方面解读,一是从信息论的角度,另一个是从概率密度估计的角度来讲。

信息论的角度

在我本科的学习过程中,给我印象最深的理论要数傅里叶变换香农信息论了,傅里叶变换让我们从另一个角度观察和理解世界,颠覆了我对信号和系统的认识。信息论让我对信息的解析和传递产生了极大的兴趣,因此我十分佩服傅里叶和香农(以上是题外话,哈哈)。

好了,言归正传,在解释各种物理意义之前,让我们回顾一下信息论中的几个重要概念:

  1. 信息量:所谓的信息量,是一种度量信息多少的指标,是衡量一件事情所含有不确定度大小的指标。如果一件事情发生的概率越大,我们认为其所含有的信息越少;反之,则认为其信息量越大。一个经典的例子就是预测天气的例子:如果天气预报告诉我们明天有9成的可能下雨,那么我们很大程度上都会准备一把雨伞,因为明天下雨这件事的不确定度很小,因此其信息量就很小;如果天气预报告诉我们明天有5成下雨,相对于刚才的9成,显然我们更加不确定到底明天下不下雨,其不确定度大了一些,因此其所含有的信息量更大一些。
    从上面的例子我们可以看出信息量和一件事情发生的概率是成反比的,信息论中定义如下:
    I ( x ) = − log ⁡ 2 ( p ( x ) ) I(x) = -\log_2{(p(x))} I(x)=log2(p(x)) 其中 x ∈ X x \in X xX是离散型随机变量 X X X的一个取值, p ( x ) p(x) p(x)是随机变量 X X X的概率分布。当log底取2时信息量单位为比特。

  2. 信息熵:信息熵的定义是信息量的期望:
    H ( p ) = − ∑ p ( x ) log ⁡ ( p ( x ) ) H(p) = -\sum p(x)\log(p(x)) H(p)=p(x)log(p(x)) 如果 x x x表示信源发出的信号,那么信息熵就可以表示信源所有可能发生情况的平均不确定性。

  3. 交叉熵:一个通俗的解释是交叉熵表示两个概率分布之间的差异性信息。我们定义 p ( x ) p(x) p(x)表示随机变量 X X X的真实分布, q ( x ) q(x) q(x)表示其非真实分布,则交叉熵定义如下:
    H ( p , q ) = − ∑ p ( x ) l o g ( q ( x ) ) H(p, q) = -\sum p(x)log(q(x)) H(p,q)=p(x)log(q(x))

在知乎上看到一个特别好玩的解释[2],让我们跟着CyberRep在知乎上的回答[2]来理解一下上述概念,进而引申出交叉熵的一种理解姿势(下面的一些图直接copy过来了)。


假设现在有一个猜小球颜色的游戏,规则如下:
小明犯了错误,爸爸和小明玩猜小球颜色的游戏,箱子里有四种颜色的球,爸爸从箱子中拿出任意一个小球,小明猜球的颜色,爸爸可以回答小明任何问题,每猜一次,不管对错,小明就要接受一次惩罚,当然,猜对,游戏停止,否则继续猜。当然,当答案只剩下两种选择时,此次猜测结束后,无论猜对猜错都能100%确定答案,无需再猜一次,此时游戏停止。(我们可以看出,小明为了尽可能少的接受惩罚,需要用最低的代价猜对爸爸手里球的颜色,这里的代价就是次数)

题目一: 爸爸拿来一个箱子,跟小明说:里面有橙、紫、蓝及青四种颜色的小球任意个,各颜色小球的占比不清楚,现在我从中拿出一个小球,你猜我手中的小球是什么颜色?

猜测过程如下:
机器学习基础:交叉熵损失(Machine Learning Fundamentals: Cross Entropy Loss)_第1张图片
在这种情况下,小明什么信息都不知道,只能认为四种颜色的小球出现的概率是一样的。所以,根据策略1,1/4概率是橙色球,小明需要猜两次,1/4是紫色球,小明需要猜两次,其余的小球类似,所以小明预期的猜球次数为: 1 4 × 2 + 1 4 × 2 + 1 4 × 2 + 1 4 × 2 = 2 \frac{1}{4} \times 2 + \frac{1}{4} \times 2 + \frac{1}{4} \times 2 + \frac{1}{4} \times 2 =2 41×2+41×2+41×2+41×2=2

分析:这种情况下,小明不知道任何先验信息,因此他假设小球颜色服从的概率分布为 p ( x = 任意颜色 ) = 1 / 4 p(x=\text{任意颜色})=1/4 p(x=任意颜色)=1/4, 所以根据信息熵的定义 H ( p ) = − ∑ p ( x ) l o g 2 p ( x ) = − ∑ 1 / 4 × l o g 2 1 / 4 = 2 H(p)=-\sum p(x)log_2p(x) = -\sum1/4 \times log_2{1/4} = 2 H(p)=p(x)log2p(x)=1/4×log21/4=2

题目2:爸爸还是拿来一个箱子,跟小明说:箱子里面有小球任意个,但其中1/2是橙色球,1/4是紫色球,1/8是蓝色球及1/8是青色球。我从中拿出一个球,你猜我手中的球是什么颜色的?
机器学习基础:交叉熵损失(Machine Learning Fundamentals: Cross Entropy Loss)_第2张图片

**case 1:**在这种情况下,小明知道了每种颜色小球的比例,比如橙色占比二分之一,如果我猜橙色,很有可能第一次就猜中了。所以,根据策略2,1/2的概率是橙色球,小明需要猜一次,1/4的概率是紫色球,小明需要猜两次,1/8的概率是蓝色球,小明需要猜三次,1/8的概率是青色球,小明需要猜三次,所以小明猜题次数的期望为:
1 2 × 1 + 1 4 × 2 + 1 8 × 3 + 1 8 × 3 = 1.75 \frac{1}{2}\times 1 + \frac{1}{4}\times 2 + \frac{1}{8}\times 3 + \frac{1}{8}\times 3 = 1.75 21×1+41×2+81×3+81×3=1.75

分析:这种情况下,小明知道了小球颜色的概率分布,因此直接根据真实的概率分布计算信息熵如下:
H ( p ) = − ∑ p ( x ) l o g 2 p ( x ) = − ( 1 2 × l o g 2 1 2 + 1 4 × l o g 2 1 4 + 1 8 × l o g 2 1 8 + 1 8 × 1 8 ) = 1.75 H(p) = -\sum p(x)log_2p(x) = -(\frac{1}{2}\times log_2 \frac{1}{2} + \frac{1}{4}\times log_2 \frac{1}{4} + \frac{1}{8}\times log_2\frac{1}{8}+\frac{1}{8}\times \frac{1}{8}) = 1.75 H(p)=p(x)log2p(x)=(21×log221+41×log241+81×log281+81×81)=1.75

**case 2:**然而,现实生活中小明没有那么聪明。爸爸已经告诉小明这些小球的真实分布是 ( 1 / 2 , 1 / 4 , 1 / 8 , 1 / 8 ) (1/2, 1/4, 1/8, 1/8) (1/2,1/4,1/8,1/8),但小明所选择的策略却认为所有的小球出现的概率相同,相当于忽略了爸爸告诉小明关于箱子中各小球的真实分布,而仍旧认为所有小球出现的概率是一样的,认为小球的分布为 ( 1 / 4 , 1 / 4 , 1 / 4 , 1 / 4 ) (1/4, 1/4, 1/4, 1/4) (1/4,1/4,1/4,1/4),这个分布就是非真实分布。此时,小明猜中任何一种颜色的小球都需要猜两次,即
1 2 × 2 + 1 4 × 2 + 1 8 × 2 + 1 8 × 2 = 2 \frac{1}{2}\times 2 + \frac{1}{4}\times 2 + \frac{1}{8}\times 2 + \frac{1}{8}\times 2 = 2 21×2+41×2+81×2+81×2=2

分析:显然,使用这种方案将猜中的平均次数从1.75次提升到了两次,因此这不是一个最佳的策略。显然根据真实的概率分布可以使付出的代价达到最小,也就是信息熵最,但是实际中不是每个人都可以知道真是概率的分布,因此,当使用非最优策略来消除系统不确定性时,引入了一个交叉熵的概念。好了,至此我们可以使用交叉熵的定义来确定一下使用这种策略所需要的代价:
H ( p , q ) = − ∑ p ( x ) l o g 2 q ( x ) = 1 2 × l o g 2 1 4 + 1 4 × l o g 2 1 4 + 1 8 × l o g 2 1 4 + 1 8 × l o g 2 1 4 = 2 H(p,q)=-\sum p(x)log_2 q(x)=\frac{1}{2}\times log_2 \frac{1}{4} + \frac{1}{4}\times log_2 \frac{1}{4} + \frac{1}{8}\times log_2 \frac{1}{4} + \frac{1}{8}\times log_2 \frac{1}{4} = 2 H(p,q)=p(x)log2q(x)=21×log241+41×log241+81×log241+81×log241=2

题目3:其实,爸爸只想让小明意识到自己的错误,并不是真的想罚他,所以拿来一个箱子,跟小明说:里面的球都是橙色,现在我从中拿出一个,你猜我手中的球是什么颜色?

这种情况下,小明一次就可以猜对,因为里面只有橙色球。

分析:这种情况下的概率分布就是一个值,即 p ( x = 橙 色 ) = 1 p(x=橙色)=1 p(x=)=1,所以其信息熵表示如下:
H ( p ) = 1 × l o g 2 1 = 0 H(p) = 1\times log_2 1=0 H(p)=1×log21=0 也就是说,其信息熵为零,没什么不确定的信息在这个概率分布中。

总结:从上面的例子我们可以看出,交叉熵可以用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。 因此,交叉熵越低,这个策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因为此时的交叉熵等于信息熵。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布。


扩展**[1]**: Moreover, since the cross-entropy can be written in terms of entropy and the Kullback-Leibler divergence as H ( p , q ) = H ( p ) + D K L ( p ∣ ∣ q ) H(p,q) = H(p) + D_{KL}(p||q) H(p,q)=H(p)+DKL(pq), and the entropy of the delta function p p p is zero, this is also equivalent to minimizing the KL divergence between the two distributions (a measure of distance). In other words, the cross-entropy objective wants the predicted distribution to have all of its mass on the correct answer.

概率密度估计的角度

这块不翻译了,很简单[1]。

In the probabilistic interpretation, we are therefore minimizing the negative log likelihood of the correct class, which can be interpreted as performing Maximum Likelihood Estimation (MLE). A nice feature of this view is that we can now also interpret the regularization term R(W) in the full loss function as coming from a Gaussian prior over the weight matrix W, where instead of MLE we are performing the Maximum a posteriori (MAP) estimation.

参考

  1. cs231n_linear-classify
  2. 如何通俗的解释交叉熵与相对熵?
  3. 交叉熵-损失函数
  4. Understanding softmax and the negative log-likelihood
  5. 吴军,数学之美,人民邮电出版社

你可能感兴趣的:(机器学习,信息熵,人工智能,深度学习,交叉熵损失,Cross,Entropy)