您的位置:首页 > 其它

自信息、熵、相对熵(KL散度)、交叉熵

2019-07-04 15:47 190 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/lairongxuan/article/details/94329920

信息熵(entropy)

我们先引入自信息的概念。随机变量XXX每取一个值,都会相应的带来一定的信息,例如:假设两个事件:x1=x_1=x1​=“海南下雪了”,x2=x_2=x2​=“哈尔滨下雪了”。显然,x1x_1x1​发生时所带来的信息量远大于x2x_2x2​发生时带来的信息量。因为海南基本不下雪,而在哈尔滨却很常见,一旦海南下了雪,说明海南的天气比较反常,其信息量也就比较大。通常意义上,随机变量XXX的某一事件发生的概率越小,当其发生时所带来的信息量就越大。那么,如何衡量信息量的大小呢?

我们定义自信息(self-information)为是变量X=xiX = x_iX=xi​时的信息量最短(优)编码长度
I(X=xi)=log⁡(1p(xi))=−log⁡[p(xi)]I(X=x_i)=\log \left( \frac{1}{p(x_i)} \right) = -\log [p(x_i)]I(X=xi​)=log(p(xi​)1​)=−log[p(xi​)]

上式中,p(xi)p(x_i)p(xi​)越小,则不确定性越大,包含的信息量就越多,所以信息量可以理解为不确定性的多少。

最早是物理学的概念,用于表示一个热力学系统的无序程度。熵在信息论中用来衡量一个随机事p(x)p(x)p(x)的不确定性,指的是随机变量的平均自信息量或者最短平均编码长度(即自信息的数学期望),用公式表示为:
H(p)=E[I(X)]=E[−log⁡(p(xi))]=−∑ip(xi)log⁡p(xi)H(p) = E \left[ I(X) \right] \\ = E \left[ -\log (p(x_i)) \right] \\ = -\sum_i p(x_i) \log p(x_i)H(p)=E[I(X)]=E[−log(p(xi​))]=−i∑​p(xi​)logp(xi​)

熵又被称为信息熵、信源熵、平均自信息量。从公式中可以看出,它表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。随机变量的取值个数越多,状态数就越多,混乱程度就越大,不确定性就越大,信息熵就越大。

交叉熵(cross entropy)

对于某一随机事件,假设其真实概率分布为p(x)p(x)p(x),从样本集中得到的概率分布为q(x)q(x)q(x)。根据上面熵的定义可知,熵可以理解为根据真实分布p(x)p(x)p(x)来衡量识别一个样本所需要的平均编码长度(编码长度的数学期望)

但在现实生活中,我们很难得到某一随机事件的真实分布,容易得到的是该随机事件的某一样本数据集的分布(分布为q(x)q(x)q(x)),我们根据从样本中得到的分布q(x)q(x)q(x)来衡量识别一个样本所需要的平均编码长度(即使用非真实分布q(x)q(x)q(x)来表示来自真实分布p(x)p(x)p(x)的平均编码长度):
H(p,q)=∑ip(xi)log1q(xi)=−∑ip(xi)logq(xi)H(p,q)=∫p(x)⋅log⁡1q(x)dxH(p,q)= \sum_{i}p(x_i) log \frac{1}{q(x_i) }=-\sum_{i}p(x_i)log{q(x_i)}\\ H(p,q) =\int p(x) \cdot \log \frac{1}{q(x)} dxH(p,q)=i∑​p(xi​)logq(xi​)1​=−i∑​p(xi​)logq(xi​)H(p,q)=∫p(x)⋅logq(x)1​dx

上式中的H(p,q)H(p,q)H(p,q),我们就称之为“交叉熵”。

相对熵(KL散度)(relative entropy)

相对熵(relative entropy),也称为KL散度(Kullback-Leibler divergence)。设p(x)p(x)p(x)、q(x)q(x)q(x)是从随机变量XXX中取值的两个概率分布,则ppp对qqq的相对熵按照离散和连续的情况可以定义为:
KL(p∥q)=∑ip(xi)⋅log⁡p(xi)q(xi)KL(p∥q)=∫p(x)⋅log⁡p(x)q(x)dxKL( p \lVert q ) = \sum_i p(x_i) \cdot \log \frac{p(x_i)}{q(x_i)} \\ KL \left(p \lVert q \right) =\int p(x) \cdot \log \frac{p(x)}{q(x)} dxKL(p∥q)=i∑​p(xi​)⋅logq(xi​)p(xi​)​KL(p∥q)=∫p(x)⋅logq(x)p(x)​dx

KL散度在信息论中有明确的物理意义,它是用来度量使用基于q(x)q(x)q(x)分布的编码来编码来自p(x)p(x)p(x)分布的样本平均所需的额外的Bit个数,即在相同事件空间里,概率分布p(x)p(x)p(x)的事件空间里,若用概率分布q(x)q(x)q(x)编码时,平均每个基本事件(符号)编码长度增加了多少比特。

而在机器学习领域中,KL散度是两个概率分布p(x)p(x)p(x)和q(x)q(x)q(x)差别的非对称性的度量,即表示两个分布的不同程度,其值越大说明两个分布越不相似

相对熵(KL散度)具有以下几个性质:

  1. 如果p(x),q(x)p(x),q(x)p(x),q(x)两个分布相同,那么其相对熵等于零;
  2. 不对称性:KL(p∥q)≠KL(q∥p)KL( p \lVert q ) \ne KL( q \lVert p )KL(p∥q)̸​=KL(q∥p);
  3. 非负性:KL(p∥q)≥0KL( p \lVert q ) \ge 0KL(p∥q)≥0。有两种方法可证明(以离散形式为例):
    (1)已知 ln⁡x≤x−1\ln x \leq x-1lnx≤x−1(该不等式证明较容易,略),则有:
    KL(p∥q)=∑ip(xi)⋅log⁡p(xi)q(xi)=−∑ip(xi)⋅log⁡q(xi)p(xi)≥∑ip(xi)⋅q(xi)−p(xi)p(xi)=∑iq(xi)−∑ip(xi)=0KL( p \lVert q ) = \sum_i p(x_i) \cdot \log \frac{p(x_i)}{q(x_i)} = -\sum_i p(x_i) \cdot \log \frac{q(x_i)}{p(x_i)} \\ \ge \sum_i p(x_i) \cdot \frac{q(x_i) - p(x_i)}{p(x_i)} = \sum_i q(x_i) - \sum_i p(x_i) = 0KL(p∥q)=i∑​p(xi​)⋅logq(xi​)p(xi​)​=−i∑​p(xi​)⋅logp(xi​)q(xi​)​≥i∑​p(xi​)⋅p(xi​)q(xi​)−p(xi​)​=i∑​q(xi​)−i∑​p(xi​)=0
    (2)根据Jensen不等式,有:KL(p∥q)=∑i=1npi⋅log⁡p(xi)q(xi)=−Ep(x)[log⁡q(x)p(x)]≥−log⁡(∑x∈Xp(x)⋅q(x)p(x))=−log⁡∑x∈Xq(x)=0KL(p \lVert q) =\sum_{i=1}^n p_i \cdot \log \frac{p(x_i)}{q(x_i)} = -E_{p(x)} \left[ \log \frac{q(x)}{p(x)} \right] \\ \ge -\log \left( \sum_{x \in X} p(x) \cdot \frac{q(x)}{p(x)} \right) = - \log \sum_{x \in X} q(x) = 0KL(p∥q)=i=1∑n​pi​⋅logq(xi​)p(xi​)​=−Ep(x)​[logp(x)q(x)​]≥−log(x∈X∑​p(x)⋅p(x)q(x)​)=−logx∈X∑​q(x)=0
    需要注意的是,在实际应用中,若用某已知分布q(x)q(x)q(x)逼近另一未知分布p(x)p(x)p(x),KL散度衡量指标应表示为:KL(q∥p)KL(q \lVert p)KL(q∥p)。

对于上述三个概念的理解

我们再次回顾上述三个概念及其公式:

  • 熵:H(X)=−∑ip(xi)log⁡p(xi)H(X) = -\sum_i p(x_i) \log p(x_i)H(X)=−∑i​p(xi​)logp(xi​)
  • 交叉熵:H(p,q)=∑ip(xi)log1q(xi)=−∑ip(xi)logq(xi)H(p,q)= \sum_{i}p(x_i) log \frac{1}{q(x_i) }=-\sum_{i}p(x_i)log{q(x_i)}H(p,q)=∑i​p(xi​)logq(xi​)1​=−∑i​p(xi​)logq(xi​)
  • 相对熵:KL(p∥q)=∑ip(xi)⋅log⁡p(xi)q(xi)KL( p \lVert q ) = \sum_i p(x_i) \cdot \log \frac{p(x_i)}{q(x_i)}KL(p∥q)=∑i​p(xi​)⋅logq(xi​)p(xi​)​

很显然,我们可以得到如下关系式:
KL(p∥q)=∑ip(xi)⋅log⁡p(xi)q(xi)=∑ip(xi)⋅log⁡p(xi)−∑ip(xi)⋅log⁡q(xi)=−H(p)+H(p,q)KL( p \lVert q ) = \sum_i p(x_i) \cdot \log \frac{p(x_i)}{q(x_i)} = \sum_i p(x_i) \cdot \log p(x_i) - \sum_i p(x_i) \cdot \log q(x_i) = -H(p) + H(p,q)KL(p∥q)=i∑​p(xi​)⋅logq(xi​)p(xi​)​=i∑​p(xi​)⋅logp(xi​)−i∑​p(xi​)⋅logq(xi​)=−H(p)+H(p,q)

即,H(p,q)=H(p)+KL(p∥q)H(p,q) = H(p) + KL( p \lVert q )H(p,q)=H(p)+KL(p∥q),交叉熵 = 信息熵 + KL散度(相对熵)

对于任意随机事件来说,其根据真实分布p(x)p(x)p(x)来衡量样本的最短编码长度(信息熵)H(p)H(p)H(p)是固定不变的,而根据非真实分布q(x)q(x)q(x)来衡量样本最短编码长度(交叉熵)H(p,q)H(p,q)H(p,q)是随着q(x)q(x)q(x)的不同而不同的,而这两者之间的冗余信息量就是KL散度(相对熵)。

Reference

1.【直观详解】信息熵、交叉熵和相对熵
2. 如何通俗的解释交叉熵与相对熵?
3. 信息熵,相对熵,交叉熵的理解
4. 信息量,熵,交叉熵,相对熵与代价函数
5. 简单的交叉熵损失函数,你真的懂了吗?

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: