什么是交叉熵

什么是交叉熵

交叉熵是一个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。

1.什么是信息量?

假设$x$是一个离散型随机变量,其取值集合为$X$,概率分布函数为$p(x)=Pr(X=x), x \in X $,我们定义事件的信息量为:$X=x_0$,可以理解为,一个事件发生的概率越大,则它所携带的信息量就越小,而当$p(x_0)=1$时,熵将等于0,也就是说该事件的发生不会导致任何信息量的增加。举个例子,小明平时不爱学习,考试经常不及格,而小王是个勤奋学习的好学生,经常得满分,所以我们可以做如下假设: 事件A:小明考试及格,对应的概率$P(x_A)=0.1$,信息量为$I(x_A)=−log(0.1)=3.3219$ 事件B:小王考试及格,对应的概率$P(x_B)=0.999$,信息量为$I(x_B)=−log(0.999)=0.0014$ 可以看出,结果非常符合直观:小明及格的可能性很低(十次考试只有一次及格),因此如果某次考试及格了(大家都会说:XXX竟然及格了!),必然会引入较大的信息量,对应的$I$值也较高。而对于小王而言,考试及格是大概率事件,在事件B发生前,大家普遍认为事件B的发生几乎是确定的,因此当某次考试小王及格这个事件发生时并不会引入太多的信息量,相应的$I$值也非常的低。

2.什么是熵?

那么什么又是熵呢?还是通过上边的例子来说明,假设小明的考试结果是一个0-1分布$X_A$只有两个取值{0:不及格,1:及格},在某次考试结果公布前,小明的考试结果有多大的不确定度呢?你肯定会说:十有八九不及格!因为根据先验知识,小明及格的概率仅有0.1,90%的可能都是不及格的。怎么来度量这个不确定度?求期望!不错,我们对所有可能结果带来的额外信息量求取均值(期望),其结果不就能够衡量出小明考试成绩的不确定度了吗。 即: $H_A(x) = -[p(x_A)log(p(X_A))] + (1-p(x_A))log(1-p(x_A))]=0.4690$ 对应小王的熵: $H_B(x)=−[p(x_B)log(p(x_B))+(1−p(x_B))log(1−p(x_B))]=0.0114$ 虽然小明考试结果的不确定性较低,毕竟十次有9次都不及格,但是也比不上小王(1000次考试只有一次才可能不及格,结果相当的确定) 我们再假设一个成绩相对普通的学生小东,他及格的概率是$P(x_C)=0.5$,即及格与否的概率是一样的,对应的熵: $H_C(x)=−[p(x_C)log(p(x_C))+(1−p(x_C))log(1−p(x_C))]=1$ 其熵为1,他的不确定性比前边两位同学要高很多,在成绩公布之前,很难准确猜测出他的考试结果。 可以看出,熵其实是信息量的期望值,它是一个随机变量的确定性的度量。熵越大,变量的取值越不确定,反之就越确定。

对于一个随机变量X而言,它的所有可能取值的信息量的期望$(E[I(x)]$就称为熵。 $X$的熵定义为: $H(X)=Ep \space log \frac 1 {p(x)}=−\sum \limits_{x \in X}p(x)logp(x)$ 如果$p(x)$是连续型随机变量的pdf,则熵定义为: $H(X)=−∫_{x∈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时,单位为“奈特”。

3.什么是相对熵?

相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。记为$D_{KL}(p||q)$。它度量当真实分布为p时,假设分布$q$的无效性。 $$\begin{split} \ D_{KL}(p||q) &= Ep[log \frac {p(x)} {q(x)}] \ &=\sum _{x∈X} p(x) log \frac {p(x)} {q(x)} \ &=\sum {x∈X}[p(x)logp(x)−p(x)logq(x)] \ &=\sum{x∈X}p(x)logp(x)−\sum _{x∈X}p(x)logq(x) \ &=−H(p)−\sum _{x∈X} p(x)logq(x) \ &=−H(p)+Ep[−logq(x)] \ &=Hp(q)−H(p)\end{split}$$

并且为了保证连续性,做如下约定: $$0log \frac 0 0=0,0log \frac 0 q=0,plog \frac p 0=∞$$ 显然,当$p=q$时,两者之间的相对熵$D_{KL}(p||q)=0$ 上式最后的$H_p(q)$)表示在p分布下,使用q进行编码需要的bit数,而$H(p)$表示对真实分布p所需要的最小编码bit数。基于此,相对熵的意义就很明确了:$D_{KL}(p||q)$)表示在实分布为$p$的前提下,使用q分布进行编码相对于使用真实分布p进行编码(即最优编码)所多出来的bit数。

4. 什么是交叉熵?

交叉熵容易跟相对熵搞混,二者联系紧密,但又有所区别。假设有两个分布$p,q$则它们在给定样本集上的交叉熵定义如下: $$ CEH(p,q)=Ep[−logq]=−∑\limits_{x∈X}p(x)logq(x)=H(p)+D_{KL}(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方法。 特别的,在logistic regression中, p:真实样本分布,服从参数为p的0-1分布,即$X∼B(1,p)$ q:待估计的模型,服从参数为q的0-1分布,即$X∼B(1,q)$ 两者的交叉熵为: $$\begin{split} CEH(p,q) &=−\sum _{x∈X}p(x)logq(x) \ &=−[P_p(x=1)logP_q(x=1)+P_p(x=0)logP_q(x=0)] \ &=−[plogq+(1−p)log(1−q)] \ &=−[ylogh_θ(x)+(1−y)log(1−h_θ(x))] \ \end{split}$$ 对所有训练样本取均值得: $$−\frac 1 m \sum \limits^{m} \limits _{i=1m} [y(i)logh_θ(x^{(i)})+(1−y^{(i)})log(1−h_θ(x^{(i)}))]$$ 这个结果与通过最大似然估计方法求出来的结果一致。

转载出处:

0%