信息熵(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))]=−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
)
=
∑
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)=i∑p(xi)logq(xi)1=−i∑p(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(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散度)具有以下几个性质:
- 如果 p ( x ) , q ( x ) p(x),q(x) p(x),q(x)两个分布相同,那么其相对熵等于零;
- 不对称性: K L ( p ∥ q ) ≠ K L ( q ∥ p ) KL( p \lVert q ) \ne KL( q \lVert p ) KL(p∥q)=KL(q∥p);
- 非负性:
K
L
(
p
∥
q
)
≥
0
KL( p \lVert q ) \ge 0
KL(p∥q)≥0。有两种方法可证明(以离散形式为例):
(1)已知 ln x ≤ x − 1 \ln x \leq x-1 lnx≤x−1(该不等式证明较容易,略),则有:
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(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不等式,有: 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(p∥q)=i=1∑npi⋅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散度衡量指标应表示为: K L ( q ∥ p ) KL(q \lVert p) KL(q∥p)。
信息增益(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(X∣A)
其中:
信息熵
H
(
X
)
H(X)
H(X)表示数据集
X
X
X的不确定性
条件熵
H
(
X
∣
A
)
H(X|A)
H(X∣A)表示在特征
A
A
A给定的条件下,数据集
X
X
X的不确定性
H ( X ) H(X) H(X)和 H ( X ∣ A ) H(X|A) H(X∣A)之间的差,就是信息增益,表示由于特征 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(p∥q)=∑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(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 ) + K L ( 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散度(相对熵)。
机器学习中的交叉熵和相对熵
斯坦福大学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. 简单的交叉熵损失函数,你真的懂了吗?