这一小节的知识点主要是信息论中的熵、相对熵(KL散度)、条件熵以及互信息。这几个信息论中的概念在机器学习中起到很大的作用,比如决策树上特征的选择,以及最近的一些工作利用互信息取得了不错的效果。
在熵之前,有一个信息量的概念,什么是信息量?当你被告知“有效抗癌药物研发成功”,你一定非常惊讶,觉得信息量很大;当你被告知"今天下午将停电",你就不那么惊讶了;而当你被告知“明天太阳会升起”,你估计就直接忽视这条消息了。你对这三条消息表现出的惊讶程度(degree of surprise)是不一样的。对于第一条消息,你是表现的非常惊讶,那么意味着它的信息量很大,而对于第三条消息,你对它一点都不惊讶,它的信息量就近乎于0,那么信息量就可以被看做是在一条消息上你表现出的"惊讶程度"。
另外,这三条消息中的事件发生的概率是不一样的,第一条消息中的事件就目前来看概率是很低的,对应着信息量很大,而第三条消息发生的概率是100%,对应着信息量为0,从这就可以发现,消息量与事件发生的概率相关,事件概率越低,信息量越大,事件发生的概率越大,信息量越小。
从另外一个角度看,事件发生概率低,意味着消息的不确定性大,而概率越高,消息的不确定越低,那么信息量也度量了消息的不确定性。
Entropy and conditional entropy
上面只是对信息量比较直观的理解,下面是具体的数学定义。
考虑一个离散的随机变量 xxx,当观察到变量的一个具体值时,我们从中收到了多少信息,这就是信息量。上面也提到了,信息量就可以看成在学习 xxx 值时的惊讶程度,它也与事件发生的概率相关,那么在计算信息量 hhh 时就依赖于概率分布 p(x)p(x)p(x)。因此,我们寻找一个函数 h(x)h(x)h(x),它是关于 p(x)p(x)p(x) 的单调函数,以及它的计算结果表示着信息量 hhh。
值得注意的是,h(?)h(\cdot)h(?) 还需满足:存在两个不相关的事件 xxx 和 yyy,即 p(x,y)=p(x)p(y)p(x,y) = p(x)p(y)p(x,y)=p(x)p(y),那么从事件 (x,y)(x, y)(x,y) 中获得的信息量应该等于单独从 xxx 和 yyy 事件中获得的信息量之和,即 h(x,y)=h(x)+h(y)h(x, y) = h(x) + h(y)h(x,y)=h(x)+h(y)。因此,h(?)h(\cdot)h(?) 一个可能的定义为:
h(x)=?log?p(x)h(x) = -\log{p(x)} h(x)=?logp(x)
上式加了一个负号保证计算出的信息量为非负。有了单一的信息量定义,就可以考虑在传递一个随机变量的值时,它的平均信息量,就可以通过概率分布 p(x)p(x)p(x) 求其期望,则随机变量 xxx 的熵(entropy)定义如下:
H[x]=?∑xp(x)log?p(x)H[x] = -\sum_x{p(x)} \log p(x) H[x]=?x∑?p(x)logp(x)
上面提到,信息量也度量了消息的不确定性,那么熵刻画了随机变量的不确定性,熵越大,随机变量的不确定性就越大。当然,还有另外一种解释就是最短平均编码长度。如下图,随机变量的分布越均匀,对应的熵越大,而分布集中在少数取值上,对应的熵越小。不难发现,离散随机变量的熵取最小值时,即为有一个 p(xi)=1p(x_i) = 1p(xi?)=1,而其他取值的概率为0。
而对于求最大熵,可以通过Lagrange乘子法求解。Lagrange函数为:
H~=?∑ip(xi)ln?p(xi)+λ(∑ip(xi)?1)\tilde{H} = - \sum_{i} p(x_i) \ln p(x_i) + \lambda \left(\sum_{i}p(x_i) - 1 \right) H~=?i∑?p(xi?)lnp(xi?)+λ(i∑?p(xi?)?1)
最大化这个函数,通过令其偏导等于0,得到:
?H~?p(xi)=?1?ln?p(xi)+λ=0\frac{\partial{\tilde{H}}}{\partial{p(x_i)}} = -1 - \ln p(x_i) + \lambda = 0 ?p(xi?)?H~?=?1?lnp(xi?)+λ=0
得到最大熵应该满足一个均匀分布 p(xi)=p(xj),?i,jp(x_i) = p(x_j), \forall i, jp(xi?)=p(xj?),?i,j,若随机变量 xxx 的取值有 MMM 种情况,即 p(xi)=1Mp(x_i) = \frac{1}{M}p(xi?)=M1?,其对应的熵值为 H=ln?MH = \ln MH=lnM。考虑连续随机变量,其熵的计算如下:
H[x]=?∫p(x)ln?p(x)dxH[x] = -\int{p(x) \ln p(x) dx} H[x]=?∫p(x)lnp(x)dx
连续随机变量的熵也被称为微分熵(differential entropy),其最大熵的情况是随机变量服从正态分布。
考虑随机变量 (x,y)(x, y)(x,y), 其联合概率分布为 p(x,y)p(x, y)p(x,y)。如果随机变量 xxx 的值已知,那么有条件概率 p(y∣x)p(y |x)p(y∣x),另外确定 yyy 的值需要的信息量应该由 ?ln?p(y∣x)- \ln p(y|x)?lnp(y∣x) 来衡量,那么平均另外需要的信息量为
H[y∣x]=??p(y,x)ln?p(y∣x)dydx=??p(x)p(y∣x)ln?p(y∣x)dxdy=?∫p(xi)H[y∣x=xi]dx\begin{aligned} H[y|x] &= -\iint{p(y,x)\ln p(y|x)\mathrm{d} y\mathrm{d} x} \\ &= - \iint{p(x) p(y|x) \ln p(y|x) \mathrm{d}x \mathrm{d}y} \\ &= -\int p(x_i) H[y | x = x_i] \mathrm{d}x \\ \end{aligned} H[y∣x]?=??p(y,x)lnp(y∣x)dydx=??p(x)p(y∣x)lnp(y∣x)dxdy=?∫p(xi?)H[y∣x=xi?]dx?
也可以称为给定 xxx 的 yyy 的条件熵(conditional entropy),也可以理解为 xxx 给定条件下 yyy 的条件概率分布的熵对 xxx 的数学期望。可以看到条件熵满足以下公式:
H[x,y]=H[y∣x]+H[x]H[x,y] = H[y|x] + H[x] H[x,y]=H[y∣x]+H[x]
其证明可见下面 exercise 1.37的解答。 上式可以理解为描述 x,yx, yx,y 所需要的信息量等于描述 xxx 所需要的信息量与再给定 xxx 的情况下另外所需要的信息量的和。
Relative entropy and mutual information
Relative entropy
考虑一个未知的概率分布 p(x)p(x)p(x),假设采用 q(x)q(x)q(x) 来近似原分布,那么采用 q(x)q(x)q(x) 分布去计算确定 xxx 的值所需要的平均信息量为 ∫p(x)ln?q(x)dx\int{p(x) \ln q(x) \mathrm{d}x}∫p(x)lnq(x)dx,这个便是交叉熵,则另外所需的信息量为:
KL(p∥q)=?∫p(x)ln?q(x)dx?(?∫p(x)ln?p(x)dx)=?∫p(x)ln?{q(x)p(x)}dx=E(ln?p(x)?ln?q(x))\begin{aligned} \mathrm{KL} (p \| q) &= - \int{p(x) \ln q(x) \mathrm{d}x} - (-\int{p(x) \ln p(x) \mathrm{d}x}) \\ &= -\int{p(x) \ln\left\{\frac{q(x)}{p(x)}\right\} \mathrm{d}x} \\ &=E\left(\ln p(x) - \ln q(x)\right) \end{aligned} KL(p∥q)?=?∫p(x)lnq(x)dx?(?∫p(x)lnp(x)dx)=?∫p(x)ln{
p(x)q(x)?}dx=E(lnp(x)?lnq(x))?
上式即是相对熵(Relative entropy)的定义,更多见的是称为 KL散度(Kullback-Leibler divergence, KL divergence)。KL散度描述了两个概率分布 p(x)p(x)p(x) 和 q(x)q(x)q(x) 相似度的一种度量,而KL散度是非对称的,也不满足三角不等式,不是严格意义上的距离度量。
可以将 Jensen 不等式应用于上式计算,得到:
KL(p∣∣q)=?∫p(x)ln?{q(x)p(x)}dx≥?ln?∫q(x)dx=0KL(p||q) = -\int{p(x) \ln\left\{\frac{q(x)}{p(x)} \right\} \mathrm{d}x} \geq - \ln{\int{q(x)} \mathrm{d}x} = 0 KL(p∣∣q)=?∫p(x)ln{
p(x)q(x)?}dx≥?ln∫q(x)dx=0
上面的推导可以得到KL散度是大于等于0,而使得等于0成立的唯一情况是 p(x)=q(x)p(x) = q(x)p(x)=q(x),可以看出KL散度所描述的是两个分布不相似的程度,即越相似,KL散度越低,反之亦然。
考虑用带参数的分布 q(x∣θ)q(x|\theta)q(x∣θ) 去估计未知分布 p(x)p(x)p(x),比如多元高斯分布。确定参数 θ\thetaθ 的一种方式即是最小化 p(x)p(x)p(x) 与 q(x∣θ)q(x|\theta)q(x∣θ) 的 KL散度。但一个问题是我们不知道 p(x)p(x)p(x) 的真实分布,可以采用训练集中的训练样本去估计。在上面 KL 散度的定义中有一种定义是 ln?p(x)?ln?q(x)\ln p(x) - \ln q(x)lnp(x)?lnq(x) 的期望,而期望 E(f)E(f)E(f) 可以用训练样本得到 1N∑n=1Nf(xn)\frac{1}{N} \sum_{n = 1}^N{f(x_n)}N1?∑n=1N?f(xn?)去做近似,那么KL散度近似为:
KL(p∥q)≈1N∑n=1N{?ln?q(xn∣θ)+ln?p(xn)}KL(p \| q) \approx \frac{1}{N}\sum_{n=1}^N \{-\ln q(x_n|\theta) + \ln p(x_n)\} KL(p∥q)≈N1?n=1∑N?{
?lnq(xn?∣θ)+lnp(xn?)}
可以发现上式的第二项是与参数 θ\thetaθ 无关的,而第一项正是 negative log likelihood function,因此,最小化KL散度就相当于最大化似然函数。
Mutual information
考虑两个变量 x,yx, yx,y 的联合分布 p(x,y)p(x, y)p(x,y)。如果两个变量相互独立,则有 p(x,y)=p(x)p(y)p(x, y) = p(x)p(y)p(x,y)=p(x)p(y);如果它们不独立,则可以用 p(x,y)p(x, y)p(x,y) 和 p(x)p(y)p(x)p(y)p(x)p(y) 的KL散度来衡量它们接近独立的程度,而不同于普通的相似性度量方法,互信息可以捕捉到变量间非线性的统计相关性,因而可以认为其能度量真实的依赖性:
I(x,y)≡KL(p(x,y)∥p(x)p(y))=??p(x,y)ln?(p(x)p(y)p(x,y))dxdy\begin{aligned} I(x,y) & \equiv KL(p(x,y) \| p(x)p(y)) \\ &= -\iint{p(x,y) \ln \left(\frac{p(x)p(y)}{p(x,y)}\right) \mathrm{d}x \mathrm{d}y} \end{aligned} I(x,y)?≡KL(p(x,y)∥p(x)p(y))=??p(x,y)ln(p(x,y)p(x)p(y)?)dxdy?
上式便是互信息(mutual information)的定义。通过 KL散度大于等于0的性质,可以得出 I(x,y)≥0I(x,y) \geq 0I(x,y)≥0,当 xxx 和 yyy 独立时等于0成立。不难得出其与条件熵之间的关系,即:
I[x,y]=H[x]?H[x∣y]=H[y]?H[y∣x]\begin{aligned} I[x,y] = H[x] - H[x|y] = H[y] - H[y|x] \end{aligned} I[x,y]=H[x]?H[x∣y]=H[y]?H[y∣x]?
*其证明可以见下面 exercise 1.41。*前面提到 H[y]H[y]H[y] 可以看作是随机变量不确定性的度量,以及前面提到 H[y∣x]H[y|x]H[y∣x] 可以看成是已知 xxx 后另外所需的信息量(这部分信息量是不被 xxx 所有的),那么从不确定性角度看, H[y∣x]H[y|x]H[y∣x] 可以看成是 xxx 没有涉及到的 yyy 部分的不确定性的度量,那么互信息就可以看成 yyy 的不确定度,减去在 xxx 已知之后 yyy 的剩余不确定度的量。这证实了互信息的直观意义为给定 xxx 之后 yyy 信息量的减少值。
其实通过下面的 Venn 图能比较直观的解读,比如上面那句"给定 yyy 之后的 xxx 信息量的减少值",原本 yyy 的信息量即下图的右边那个圆部分,而在给定 xxx 之后,信息量只有右边 H(y∣x)H(y|x)H(y∣x) 那部分,而减少的就是中间那部分,那部分就是互信息。
如果将上面的两个变量对应到训练集中的类与特征,那么类与特征的互信息是等价于决策树学习中的信息增益的。给定训练集DDD 和 特征 AAA,H(D)H(D)H(D) 表示对数据集 DDD 进行分类的不确定性,而条件熵 H(D∣A)H(D|A)H(D∣A)表示在特征A给定的条件下对数据集进行分类的不确定性,而类与特征的互信息即 H(D)?H(D∣A)H(D) - H(D|A)H(D)?H(D∣A),得到的便是信息增益,表示由于特征A而使得对数据集D的分类的不确定性减少的程度。
总结
这一节的内容是比较重要的,其中信息量的定义是一切的出发点。总结上面提到的几个概念:
- 熵:随机变量不确定性的度量;编码方案完美时,最短平均编码长度
- 条件熵:给定一个变量后,确定另外一个变量另外还需的信息量;
- 相对熵(KL散度):描述了两个分布不相似的程度;
- 互信息:衡量两个变量接近独立的程度。
Exercise
1.37 Using the definition (1.111) together with the product rule of probability, prove the result (1.112).
H[y∣x]+H[x]=?(?p(y,x)ln?p(y∣x)dydx+∫p(x)ln?p(x)dx)=?(?p(y,x)ln?p(y∣x)dydx+?p(y,x)ln?p(x)dydx)=??p(y,x)ln?p(y,x)dydx=?H[x,y]\begin{aligned} H[y|x] + H[x] &= -\left( \iint{p(y,x)\ln p(y|x)\mathrm{d} y\mathrm{d} x} + \int{p(x) \ln p(x) dx} \right) \\ &= -\left( \iint{p(y,x)\ln p(y|x)\mathrm{d} y\mathrm{d} x} + \iint{p(y,x)\ln p(x)\mathrm{d} y\mathrm{d} x} \right) \\ &= - \iint{p(y,x)\ln p(y,x)\mathrm{d} y\mathrm{d} x} = -H[x,y] \end{aligned} H[y∣x]+H[x]?=?(?p(y,x)lnp(y∣x)dydx+∫p(x)lnp(x)dx)=?(?p(y,x)lnp(y∣x)dydx+?p(y,x)lnp(x)dydx)=??p(y,x)lnp(y,x)dydx=?H[x,y]?
1.41 Using the sum and product rules of probability, show that the mutual information I(x,y)I(x,y)I(x,y) satisfies the relation.
I(x,y)=??p(x,y)ln?(p(x)p(y)p(x,y))dxdy=??p(x,y)(ln?(p(y))?ln?(p(y∣x)))dxdy=??p(x,y)ln?(p(y))dxdy+?p(x,y)ln?(p(y∣x))dxdy=?∫p(y)ln?(p(y))dy+?p(x,y)ln?(p(y∣x))dxdy=H[y]?H[y∣x]\begin{aligned} I(x,y) &= - \iint{p(x,y) \ln \left( \frac{p(x)p(y)}{p(x,y)}\right) \mathrm{d}x \mathrm{d}y} \\ &= - \iint{p(x,y) \left( \ln(p(y)) - \ln(p(y|x))\right) \mathrm{d}x \mathrm{d}y} \\ &= -\iint{p(x,y) \ln(p(y)) \mathrm{d}x \mathrm{d}y} + \iint{p(x,y)\ln (p(y|x)) \mathrm{d}x \mathrm{d}y} \\ &= -\int{p(y) \ln (p(y)) \mathrm{d}y} + \iint{p(x,y)\ln (p(y|x)) \mathrm{d}x \mathrm{d}y} \\ &= H[y] - H[y|x] \end{aligned} I(x,y)?=??p(x,y)ln(p(x,y)p(x)p(y)?)dxdy=??p(x,y)(ln(p(y))?ln(p(y∣x)))dxdy=??p(x,y)ln(p(y))dxdy+?p(x,y)ln(p(y∣x))dxdy=?∫p(y)ln(p(y))dy+?p(x,y)ln(p(y∣x))dxdy=H[y]?H[y∣x]?
参考文献
[1] 如何理解K-L散度(相对熵), https://www.jianshu.com/p/43318a3dc715
[2] 互信息(Mutual Information), https://www.cnblogs.com/gatherstars/p/6004075.html
[3] 统计学习方法(第二版), 李航
[4] 如何通俗的解释交叉熵与相对熵?, https://www.zhihu.com/question/41252833