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

信息熵(entropy)

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

我们定义自信息(self-information)为是变量 X = x i X = x_i X=xi时的信息量最短(优)编码长度
I ( X = x i ) = log ⁡ ( 1 p ( x i ) ) = − log ⁡ [ p ( x i ) ] 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 ( x i ) p(x_i) p(xi)越小,则不确定性越大,包含的信息量就越多,所以信息量可以理解为不确定性的多少。

最早是物理学的概念,用于表示一个热力学系统的无序程度。熵在信息论中用来衡量一个随机事件 p ( x ) p(x) p(x)的不确定性,指的是随机变量的平均自信息量或者最短平均编码长度(即自信息的数学期望),用公式表示为:
H ( p ) = E [ I ( X ) ] = E [ − log ⁡ ( p ( x i ) ) ] = − ∑ i p ( x i ) log ⁡ p ( x i ) 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))]=ip(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 ) = ∑ i p ( x i ) l o g 1 q ( x i ) = − ∑ i p ( x i ) l o g q ( x i ) H ( p , q ) = ∫ p ( x ) ⋅ log ⁡ 1 q ( x ) d x 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) =\int p(x) \cdot \log \frac{1}{q(x)} dx H(p,q)=ip(xi)logq(xi)1=ip(xi)logq(xi)H(p,q)=p(x)logq(x)1dx

上式中的 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)是从随机变量 X X X中取值的两个概率分布,则 p p p q q q的相对熵按照离散和连续的情况可以定义为:
K L ( p ∥ q ) = ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) q ( x i ) K L ( p ∥ q ) = ∫ p ( x ) ⋅ log ⁡ p ( x ) q ( x ) d x KL( 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)} dx KL(pq)=ip(xi)logq(xi)p(xi)KL(pq)=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. 不对称性: K L ( p ∥ q ) ≠ K L ( q ∥ p ) KL( p \lVert q ) \ne KL( q \lVert p ) KL(pq)=KL(qp)
  3. 非负性: K L ( p ∥ q ) ≥ 0 KL( p \lVert q ) \ge 0 KL(pq)0。有两种方法可证明(以离散形式为例):
    (1)已知 ln ⁡ x ≤ x − 1 \ln x \leq x-1 lnxx1(该不等式证明较容易,略),则有:
    K L ( p ∥ q ) = ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) q ( x i ) = − ∑ i p ( x i ) ⋅ log ⁡ q ( x i ) p ( x i ) ≥ ∑ i p ( x i ) ⋅ q ( x i ) − p ( x i ) p ( x i ) = ∑ i q ( x i ) − ∑ i p ( x i ) = 0 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 \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) = 0 KL(pq)=ip(xi)logq(xi)p(xi)=ip(xi)logp(xi)q(xi)ip(xi)p(xi)q(xi)p(xi)=iq(xi)ip(xi)=0
    (2)根据Jensen不等式,有: K L ( p ∥ q ) = ∑ i = 1 n p i ⋅ log ⁡ p ( x i ) q ( x i ) = − E p ( x ) [ log ⁡ q ( x ) p ( x ) ] ≥ − log ⁡ ( ∑ x ∈ X p ( x ) ⋅ q ( x ) p ( x ) ) = − log ⁡ ∑ x ∈ X q ( x ) = 0 KL(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) = 0 KL(pq)=i=1npilogq(xi)p(xi)=Ep(x)[logp(x)q(x)]log(xXp(x)p(x)q(x))=logxXq(x)=0
    需要注意的是,在实际应用中,若用某已知分布 q ( x ) q(x) q(x)逼近另一未知分布 p ( x ) p(x) p(x),KL散度衡量指标应表示为: K L ( q ∥ p ) KL(q \lVert p) KL(qp)

信息增益(Information Gain)

给定训练数据集 X X X和特征 A A A,特征 A A A对训练数据集 X X X的信息增益为: g ( X , A ) = H ( X ) − H ( X ∣ A ) g(X,A)=H(X)-H(X|A) g(X,A)=H(X)H(XA)
其中:
信息熵 H ( X ) H(X) H(X)表示数据集 X X X的不确定性
条件熵 H ( X ∣ A ) H(X|A) H(XA)表示在特征 A A A给定的条件下,数据集 X X X的不确定性

H ( X ) H(X) H(X) H ( X ∣ A ) H(X|A) H(XA)之间的差,就是信息增益,表示由于特征 A A A的确定,而使得数据集 X X X不确定性减少的程度。

不同的特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力

对于信息熵、交叉熵、相对熵三个概念的理解

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

  • 熵: H ( X ) = − ∑ i p ( x i ) log ⁡ p ( x i ) H(X) = -\sum_i p(x_i) \log p(x_i) H(X)=ip(xi)logp(xi)
  • 交叉熵: H ( p , q ) = ∑ i p ( x i ) l o g 1 q ( x i ) = − ∑ i p ( x i ) l o g q ( x i ) 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)=ip(xi)logq(xi)1=ip(xi)logq(xi)
  • 相对熵: K L ( p ∥ q ) = ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) q ( x i ) KL( p \lVert q ) = \sum_i p(x_i) \cdot \log \frac{p(x_i)}{q(x_i)} KL(pq)=ip(xi)logq(xi)p(xi)

很显然,我们可以得到如下关系式:
K L ( p ∥ q ) = ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) q ( x i ) = ∑ i p ( x i ) ⋅ log ⁡ p ( x i ) − ∑ i p ( x i ) ⋅ log ⁡ q ( x i ) = − 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(pq)=ip(xi)logq(xi)p(xi)=ip(xi)logp(xi)ip(xi)logq(xi)=H(p)+H(p,q)

即, H ( p , q ) = H ( p ) + K L ( p ∥ q ) H(p,q) = H(p) + KL( p \lVert q ) H(p,q)=H(p)+KL(pq)交叉熵 = 信息熵 + 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散度(相对熵)。

机器学习中的交叉熵和相对熵

斯坦福大学NLP课程(CS224N)的第二讲,在讲解CBOW模型时,为了最小化输入概率和输出概率的差异,用的目标函数就是交叉熵。这是为什么?

Agenter在Reference 2.中回答:

相对熵公式的前半部分[公式] 就是交叉熵(cross entropy)。若 p ( x ) p(x) p(x)是数据的真实概率分布, q ( x ) q(x) q(x)是由数据计算得到的概率分布。机器学习的目的就是希望 q ( x ) q(x) q(x)尽可能地逼近甚至等于 p ( x ) p(x) p(x),从而使得相对熵接近最小值 0 0 0。由于真实的概率分布是固定的,相对熵公式的后半部分 − ∫ p ( x ) ln ⁡ p ( x ) d x -\int p(x)\ln p(x) dx p(x)lnp(x)dx就成了一个常数。那么相对熵达到最小值的时候,也意味着交叉熵达到了最小值。对 q ( x ) q(x) q(x)的优化就等效于求交叉熵的最小值。

Reference

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值