Skip to main content

交叉熵(Cross-Entropy)

交叉熵(Cross-Entropy)

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

什么是信息量?

假设 X 是一个离散型随机变量,其取值集合为 \\( \chi \\) ,概率分布函数为 \(p(x)=P_r(X=x), x \in X\) ,我们定义事件 \(X=x_0\) 的信息量为:

\( I(x_0) = − \log(p(x_0)) \)

可以理解为,一个事件发生的概率越大,则它所携带的信息量就越小, 而当 \(p(x_0)=1\) 时,熵将等于 0,也就是说该事件的发生不会导致任何信息量的增加。

举个例子,小明平时不爱学习,考试经常不及格,而小王是个勤奋学习的好学生,经常得满分,所以我们可以做如下假设:

事件 A:小明考试及格,对应的概率 \(P(x_A)=0.1\) ,信息量为 \(I(x_A)=−log(0.1)=3.3219\)

事件 B:小王考试及格,对应的概率 \(P(xB)=0.999\) ,信息量为 \(I(xB)=−log(0.999)=0.0014\)

可以看出,结果非常符合直观:小明及格的可能性很低(十次考试只有一次及格),因此如果某次考试及格了(大家都会说:XXX 竟然及格了!), 必然会引入较大的信息量,对应的 I 值也较高。

而对于小王而言,考试及格是大概率事件,在事件 B 发生前,大家普遍认为事件 B 的发生几乎是确定的, 因此当某次考试小王及格这个事件发生时并不会引入太多的信息量,相应的 I 值也非常的低。

什么是熵?

那么什么又是熵呢?还是通过上边的例子来说明,假设小明的考试结果是一个 0-1 分布 \(X_A\) 只有两个取值~{0:不及格,1:及格}~, 在某次考试结果公布前,小明的考试结果有多大的不确定度呢?你肯定会说:十有八九不及格! 因为根据先验知识,小明及格的概率仅有 0.1,90%的可能都是不及格的。怎么来度量这个不确定度?求期望! 不错,我们对所有可能结果带来的额外信息量求取均值(期望),其结果不就能够衡量出小明考试成绩的不确定度了吗。

即:

$$H_A(x)=−[p(x_A)\log_2(p(x_A))+(1−p(x_A))\log_2(1−p(x_A))]=0.4690$$

对应小王的熵:

$$H_B(x)=−[p(x_B)\log_2(p(x_B))+(1−p(x_B))\log_2(1−p(x_B))]=0.0114$$

虽然小明考试结果的不确定性较低,毕竟十次有 9 次都不及格,但是也比不上小王(1000 次考试只有一次才可能不及格,结果相当的确定)

我们再假设一个成绩相对普通的学生小东,他及格的概率是 P(xC)=0.5,即及格与否的概率是一样的,对应的熵:

$$H_C(x)=−[p(x_C)\log_2(p(x_C))+(1−p(x_C))\log_2(1−p(x_C))]=1$$

其熵为 1,他的不确定性比前边两位同学要高很多,在成绩公布之前,很难准确猜测出他的考试结果。

可以看出,熵其实是信息量的期望值,它是一个随机变量的确定性的度量。熵越大,变量的取值越不确定,反之就越确定。

对于一个随机变量 X 而言,它的所有可能取值的信息量的期望( \(\mathrm{E}[I(x)]\) )就称为熵。

\(\mathrm{X}\) 的熵定义为:

$$H(X)=\mathrm{E}_p \log_2 \frac{1}{p(x)}=−\sum_{x \in X} p(x)\log_2 p(x)$$

如果 p(x)是连续型随机变量的 pdf,则熵定义为:

$$H(X)=−\int_{x \in X} p(x) \log_2 p(x)\,\mathrm{d}x$$

为了保证有效性,这里约定当 \(p(x) \to 0\) 时,有 \(p(x) \log_2 p(x) \to 0\)

当 \(\mathrm{X}\) 为 0-1 分布时,熵与概率 p 的关系如下图:

nil

可以看出,当两种取值的可能性相等时,不确定度最大(此时没有任何先验知识),这个结论可以推广到多种取值的情况。在图中也可以看出,当 p=0 或 1 时,熵为 0,即此时 X 完全确定。 熵的单位随着公式中 log 运算的底数而变化,当底数为 2 时,单位为“比特”(bit),底数为 e 时,单位为“奈特”。

什么是相对熵? (KL Divergence)

相对熵(relative entropy)又称为 KL 散度(Kullback-Leibler divergence), KL 距离,是两个随机分布间距离的度量 。记为 \(D_{KL}(p||q)\) 。 它度量当真实分布为 p 时,假设分布 q 的无效性

并且为了保证连续性,做如下约定:

\(0 \log_2 \frac{0}{0} = 0\) , \(0 \log_2 \frac{0}{q} = 0\) , \(p \log_2 \frac{p}{0} = \infty\)

显然,当 \(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 数。

Jensen-Shannon 散度

JS 散度 (Jensen-Shannon Divergence) 是一种 度量两个随机分布之间的相似程度 的方法。其平方根经常被成为 JS 距离 (Jensen-Shannon Distance)。

$$\mathrm{JSD}(p||q) = \frac{1}{2} D(p||m) + \frac{1}{2} D(q||m) \text{, where } M = \frac{1}{2}(p+q)$$

泛化形式:

$$\mathrm{JSD}_{\pi_1,...,\pi_n}(p_1, p_2, ..., p_n) = H(\sum_{i=1}^n \pi_i p_i) - \sum_{i=1}^n \pi_i H(p_i) $$

什么是交叉熵?

交叉熵容易跟相对熵搞混,二者联系紧密,但又有所区别。假设有两个分布 p,q,则它们在给定样本集上的相对熵定义如下:

$$\mathrm{CEH}(p,q) = \mathrm{E}_p [− \log q] = − \sum_{x \in X} p(x) \log q(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)\)

两者的交叉熵为:

对所有训练样本取均值得:

$$−\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log h_θ(x^{(i)}) + (1−y^{(i)}) \log(1−h_θ(x^{(i)}))]$$

这个结果与通过最大似然估计方法求出来的结果一致。

Comments

Comments powered by Disqus