信息度量——熵

1 熵

1.1 熵的定义和理解

热力学用熵值描述系统混乱程度或不确定程度,香农用信息熵的概念来描述信源的不确定度。信息量与信息熵是相对的,告诉你一件事实,你获取了信息量,但减少了熵。或者说,得知一件事实后信息熵减少的量,就是你得到的这个事实所包含的信息的量。

对于随机变量 X X X ,其概率分布 P X P_{X} PX ,熵为:
H ( X ) = E [ log ⁡ 1 P X ( X ) ] = ∑ x ∈ X P X ( x ) log ⁡ 1 P X ( x ) = − ∑ x ∈ X P X ( x ) log ⁡ P X ( x ) \begin{aligned} H(X) &=\mathbb{E}\left[\log \frac{1}{P_{X}(X)}\right] \\ &=\sum_{x \in \mathcal{X}} P_{X}(x) \log \frac{1}{P_{X}(x)}\\ &=-\sum_{x \in \mathcal{X}} P_{X}(x) \log {P_{X}(x)} \end{aligned} H(X)=E[logPX(X)1]=xXPX(x)logPX(x)1=xXPX(x)logPX(x)

这个公式可以理解为,随机元素的熵是 log ⁡ 1 P X ( x ) \log \frac{1}{P_{X}(x)} logPX(x)1,然后所有随机元素熵的加权平均数就是随机变量的熵。

如下图,我们以2项分布为例,事件发生的概率是p,不发生的概率是1-p, − x l o g x -xlogx xlogx(图中默认log底是2)是一个凸函数,当概率接近0或者1的时候元素值都很小,最高点出现在0.3678附近(自然常数的倒数1/e),当p=0.5即所有事件发生的概率是等概率(完全随机),熵是最大的,如果有些事件概率大或者小,熵都会趋向于减少,也就是不确定性更少。不同的对数底,对元素和熵最大值绝对值有影响,底越大,曲线越平坦,底越小,曲线越陡峭,但出现其最大值的对应的概率值x都是一样的。
在这里插入图片描述
熵公式中log函数不同的底对应熵的单位不同,如果底是2,熵的单位是bits,如果底是自然常数e,熵的单位是nats,如果底是256,熵的单位是bytes。从信息编码的角度理解,如果用二进制编码,熵就是某个概率分布对信息编码所需要的最短平均编码长度(如果有更短反推概率和一定不为1)。

1.2 交叉熵

一个样本集中两个概率分布 P \mathrm{P} P , Q \mathrm{Q} Q ,在机器学习中 P \mathrm{P} P 为真实概率分布, Q \mathrm{Q} Q 为预测的概率分布。交叉熵是用 Q \mathrm{Q} Q 来编码P的平均编码长度。
H ( P , Q ) = ∑ i = 1 n P ( x i ) log ⁡ 1 Q ( x i ) H(P, Q)=\sum_{i=1}^{n} P\left(x_{i}\right) \log\frac{1}{Q\left(x_{i}\right)} H(P,Q)=i=1nP(xi)logQ(xi)1 在机器学习中,交叉熵通常作为损失函数loss,更常见的形式是:
H ( y , y ^ ) = − ∑ i y i log ⁡ y ^ i H(y, \hat{y})=-\sum_{i} y_{i} \log \hat{y}_{i} H(y,y^)=iyilogy^i 其中, y \mathrm{y} y是真实标签分布, y ^ \hat{y} y^是模型预估标签,每一个标签的最小编码长度变成 log ⁡ ( 1 y ^ i ) \log \left(\frac{1}{\hat{y}_{i}}\right) log(y^i1),最终整体平均编码长度就是上面加权平均的结果,损失函数越小,即模型预估来表示真实标签分布需要的编码长度越小,说明二者更接近。

预测分布和真实分布的交叉熵大于等于真实分布本身的熵, 因为我们使用了带有预测误差的分布会带来更多bit的使用。(这里即使是预测的分布,也是严格遵守概率和为 1 的, 只要有这个条件约束, 交叉熵就会大于等于真实分布的熵)

1.3 相对熵——KL散度

相对熵也叫KL散度(Kullback-Leibler divergence),描述两个概率分布的差异。以上面真实概率分布 P \mathrm{P} P 和预测概率分布 Q \mathrm{Q} Q 为例,相对熵=预测分布和真实分布交叉熵-真实分布自身的熵

Q \mathrm{Q} Q 表示 P \mathrm{P} P 的平均编码长度(预测分布和真实分布交叉熵): ∑ i = 1 n P ( x i ) log ⁡ 2 1 Q ( x i ) \sum_{i=1}^{n} P\left(x_{i}\right) \log _{2} \frac{1}{Q\left(x_{i}\right)} i=1nP(xi)log2Q(xi)1 P \mathrm{P} P 表示 P \mathrm{P} P 的平均编码长度(真实分布自身的熵) : ∑ i = 1 n P ( x i ) log ⁡ 2 1 P ( x i ) \sum_{i=1}^{n} P\left(x_{i}\right) \log _{2} \frac{1}{P\left(x_{i}\right)} i=1nP(xi)log2P(xi)1 K L \mathrm{KL} KL散度:
∑ i = 1 n P ( x i ) log ⁡ 2 1 Q ( x i ) − ∑ i = 1 n P ( x i ) log ⁡ 2 1 P ( x i ) \quad \sum_{i=1}^{n} P\left(x_{i}\right) \log _{2} \frac{1}{Q\left(x_{i}\right)}-\sum_{i=1}^{n} P\left(x_{i}\right) \log _{2} \frac{1}{P\left(x_{i}\right)} i=1nP(xi)log2Q(xi)1i=1nP(xi)log2P(xi)1 根据log的运算法则变形 ( P P P Q Q Q相同时, K L K L KL 等于零, 表示分布相同): ∑ i = 1 n P ( x i ) log ⁡ 2 P ( x i ) Q ( x i ) \quad \sum_{i=1}^{n} P\left(x_{i}\right) \log _{2} \frac{P\left(x_{i}\right)}{Q\left(x_{i}\right)} i=1nP(xi)log2Q(xi)P(xi) 还是用机器学习里更常用的真实标签分布 y \mathrm{y} y和模型预估标签分布 y ^ \hat{y} y^来表示:
K L ( y ∥ y ^ ) = ∑ i y i log ⁡ 1 y ^ i − ∑ i y i log ⁡ 1 y i = ∑ i y i log ⁡ y i y ^ i K L(y \| \hat{y})=\sum_{i} y_{i} \log \frac{1}{\hat{y}_{i}}-\sum_{i} y_{i} \log \frac{1}{y_{i}}=\sum_{i} y_{i} \log \frac{y_{i}}{\hat{y}_{i}} KL(yy^)=iyilogy^i1iyilogyi1=iyilogy^iyi 交叉熵减去真实分布的熵, 其实就是表示预测误差带来了多少额外 bit的使用。机器学习中,一旦训练数据集定了后, 真实分布的熵是个常数,所以, 最小化交叉熵和最小化KL散度得到的结果等价。

顺便提一下,KL散度是不对称的,即 D K L ( p ∥ q ) ≠ D K L ( q ∥ p ) D_{K L}(p \| q) \neq D_{K L}(q \| p) DKL(pq)=DKL(qp), 因此选择作为衡量两个分布的差距时要慎重选择。还有其他形式的散度,可以参考这篇不错的文章机器学习中的散度

深入理解熵、交叉熵、KL散度、极大似然估计与最大后验估计
知识提炼理解
机器学习中的散度
KL散度(Kullback-Leibler Divergence)介绍及详细公式推导
Chapter 1: Information Measures: Entropy and Divergence

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值