# 1. 交叉熵
# 1.1. 信息量
假设我们听到了两件事,分别如下:
- 事件A:巴西队进入了2018世界杯决赛圈。
- 事件B:中国队进入了2018世界杯决赛圈。
仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大。究其原因,是因为事件A发生的概率很大,事件B发生的概率很小。所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小。那么信息量应该和事件发生的概率有关。
假设X是一个离散型随机变量,其取值集合为χ, 概率分布函数p(x)=Pr(X=x), x∈χ, 则定义事件X=x0的信息量为:I(x0)=−log(p(x0))
由于是概率所以p(x0)的取值范围是[0,1], 绘制为图形如下:
可见该函数符合我们对信息量的直觉
# 1.2. 熵
假设小明的考试结果是一个0-1分布,XA只有两个取值{0:不及格,1:及格},在某次考试结果公布前,小明的考试结果有多大的不确定度呢? 你肯定会说:十有八九不及格!因为根据先验知识,小明及格的概率仅有0.1, 90%的可能都是不及格的。 怎么来度量这个不确定度?求期望!不错,我们对所有可能结果带来的额外信息量求取均值(期望),其结果不就能够衡量出小明考试成绩的不确定度了吗。
即:HA(x)=−[p(xA)log(p(xA))+(1−p(xA))log(1−p(xA))]=0.4690
我们再假设一个成绩相对普通的学生小东,他及格的概率是P(xC)=0.5,即及格与否的概率是一样的,对应的熵:
HC(x)=−[p(xC)log(p(xC))+(1−p(xC))log(1−p(xC))]=1
其熵为1,他的不确定性比前边两位同学要高很多,在成绩公布之前,很难准确猜测出他的考试结果。
可以看出**,熵其实是信息量的期望值,它是一个随机变量的确定性的度量。熵越大,变量的取值越不确定,反之就越确定**。
对于一个随机变量X而言,它的所有可能取值的信息量的期望(E[I(x)])就称为熵。
X的熵定义为:H(X)=Eplogp(x)=−∑p(x)logp(x)
如果p(x)是连续型随机变量的pdf,则熵定义为:H(X)=−∫p(x)logp(x)dx
为了保证有效性,这里约定当p(x)→0时,有p(x)logp(x)→0
当X为0-1分布时,熵与概率p的关系如下图:
可以看出,当两种取值的可能性相等时,不确定度最大(此时没有任何先验知识),这个结论可以推广到多种取值的情况。在图中也可以看出,当p=0或1时,熵为0,即此时X完全确定。
熵的单位随着公式中log运算的底数而变化,当底数为2时,单位为“比特”(bit),底数为e时,单位为“奈特”。
# 1.3. KL散度(相对熵)
相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。记为DKL(p||q)
。它度量当真实分布为p时,假设分布q的无效性。
DKL(p||q) = Ep[logp(x)q(x)] = ∑p(x)logp(x)q(x)
= ∑[p(x)logp(x)−p(x)logq(x)]
= ∑p(x)logp(x)−∑p(x)logq(x)
= −H(p)−∑p(x)logq(x)
= −H(p)+Ep[−logq(x)]
= Hp(q)−H(p)
并且为了保证连续性,做如下约定:
0log0=0
,0logq=0
,plogp0=∞
显然,当p=q时, 两者之间的相对熵DKL(p||q)=0
上式最后的Hp(q)表示在p分布下,使用q进行编码需要的bit数,而H(p)表示对真实分布p所需要的最小编码bit数。基于此,相对熵的意义就很明确了:DKL(p||q)表示在真实分布为p的前提下,使用q分布进行编码相对于使用真实分布p进行编码(即最优编码)所多出来的bit数。
# 1.4. 交叉熵
交叉熵容易跟相对熵搞混,二者联系紧密,但又有所区别。假设有两个分布p,q,则它们在给定样本集上的相对熵定义如下:
CEH(p, q) = Ep[−logq] = −∑p(x)logq(x) = H(p) + DKL(p||q)
可以看出,交叉熵与上一节定义的相对熵仅相差了H(p), 当p已知时,可以把H(p)看做一个常数,此时交叉熵与KL距离在行为上是等价的,都反映了分布p,q的相似程度。
最小化交叉熵等于最小化KL距离。它们都将在p=q 时取得最小值H(p)(p=q时KL距离为0),因此有的工文献中将最小化KL距离的方法称为Principle of Minimum Cross-Entropy
(MCE)或Minxent方法。