在机器学习中通常会使用各种熵来描述分布与分布之间的关系,如条件熵和交叉熵等,也有直接优化熵的模型,如最大熵模型。
这篇文章简单总结一下之前见到过的一些熵相关的概念。
假设有离散随机变量 X X X 满足分布 P ( X = x i ) = p i P(X = x_{i}) = p_{i} P(X=xi)=pi , 定义事件 X = x i X = x_{i} X=xi的信息量为
I ( x i ) = − l o g ( p i ) I(x_{i}) = -log(p_{i}) I(xi)=−log(pi)
取值范围在 [0, +∞)
区间内
顾名思义,一个事件的信息量可以直观的理解为事件发生给人带来的信息多少。由定义可以看出当事件发生概率越小时,信息量越大。
信息熵用于描述随机变量 X X X ,定义信息熵为信息量的期望值
H ( X ) = E x ∼ P [ I ( x ) ] = − ∑ i = 1 n p i l o g ( p i ) H(X) = E_{x \sim P}[I(x)] = -\sum_{i = 1}^{n}{p_{i} log(p_{i})} H(X)=Ex∼P[I(x)]=−i=1∑npilog(pi)
取值范围在 [0, log(n)]
区间内
信息熵描述了随机变量的不确定性,当所有事件等可能地发生时,信息熵取得最大值
同样的可以定义联合分布 P ( X , Y ) P(X, Y) P(X,Y) 和条件分布 P ( X ∣ Y = y i ) P(X | Y = y_{i}) P(X∣Y=yi) 的信息熵
假设有离散随机变量 X X X 和 Y Y Y 满足联合分布 P ( X = x i , Y = y i ) = p i j P(X = x_{i}, Y = y_{i}) = p_{ij} P(X=xi,Y=yi)=pij ,记边缘分布 P ( X = x i ) = p i P(X = x_{i}) = p_{i} P(X=xi)=pi ,定义条件熵为
H ( X ∣ Y ) = − ∑ i = 1 n p i H ( Y ∣ X = x i ) H(X | Y) = -\sum_{i = 1}^{n}{p_{i}H(Y | X = x_{i})} H(X∣Y)=−i=1∑npiH(Y∣X=xi)
可以证明 H ( X ∣ Y ) = H ( X , Y ) − H ( X ) H(X | Y) = H(X, Y) - H(X) H(X∣Y)=H(X,Y)−H(X)
条件熵描述了在 X X X 已知的情况下, Y Y Y 的信息熵
相对熵又称KL散度(KL divergence)。假设有离散的随机变量 X X X ,和定义在 X X X 上的两个分布 P ( X = x i ) = p i P(X = x_{i}) = p_{i} P(X=xi)=pi 和 Q ( X = x i ) = q i Q(X = x_{i}) = q_{i} Q(X=xi)=qi ,定义相对熵为
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p i l o g ( p i q i ) D_{KL}(p || q) = \sum_{i = 1}^{n}{p_{i} log(\frac{p_{i}}{q_{i}})} DKL(p∣∣q)=i=1∑npilog(qipi)
KL散度通常用来描述两个分布之间的差异或距离。当两个分布越接近,则KL散度越小,因此在GAN的论文中,KL散度被用来衡量生成器生成的样本分布与真实样本分布之间的差异。
但是KL散度却不满足距离的对称性,即 D K L ( p ∣ ∣ q ) ≠ D K L ( q ∣ ∣ p ) D_{KL}(p || q) \neq D_{KL}(q || p) DKL(p∣∣q)̸=DKL(q∣∣p)
假设有离散的随机变量 X X X ,和定义在 X X X 上的两个分布 P ( X = x i ) = p i P(X = x_{i}) = p_{i} P(X=xi)=pi 和 Q ( X = x i ) = q i Q(X = x_{i}) = q_{i} Q(X=xi)=qi ,定义交叉熵为
H ( p , q ) = − ∑ i = 1 n p i l o g ( q i ) H(p, q) = -\sum_{i = 1}^{n}{p_{i} log(q_{i})} H(p,q)=−i=1∑npilog(qi)
可以证明 H ( p , q ) = H ( p ) − D K L ( p ∣ ∣ q ) H(p, q) = H(p) - D_{KL}(p || q) H(p,q)=H(p)−DKL(p∣∣q)
注意交叉熵是定义在一个随机变量的两个分布上的,和信息熵 H ( X , Y ) H(X, Y) H(X,Y) 有区别
交叉熵定义了使用分布 Q Q Q 拟合分布 P P P 时的损失,在机器学习中使用的交叉熵损失函数就是将预测分布和真实数据分布的交叉熵来作为损失函数的
JS散度修正了KL散度部队称的特点,定义为
J S D ( p ∣ ∣ q ) = 1 2 D K L ( p ∣ ∣ p + q 2 ) + 1 2 D K L ( q ∣ ∣ p + q 2 ) JSD(p || q) = \frac{1}{2} D_{KL}(p || \frac{p + q}{2}) + \frac{1}{2} D_{KL}(q || \frac{p + q}{2}) JSD(p∣∣q)=21DKL(p∣∣2p+q)+21DKL(q∣∣2p+q)
解决了KL散度不对称的特点