感觉很多博客对于熵这个概念都说不明白,而且有直接能看出来的错误,这里为了深刻认识,故做此小结。
信息熵
直观理解
熵,我们知到:是不确定的度量、是信息的度量、是对事件的理想编码;
如果我们完全认识一个事件,那么我们获得了足够大的信息量;反之,则获得的信息量不足。
虽然我们已经用概率做了不确定的度量,但是熵和概率比,有什么区别呢?
如果我们知到一件事必然发生,虽然它的概率是1,但是熵却是0,没有不确定度。如果一件事必然不发生,虽然概率是0,但是熵也是0,因为没有不确定度。但是如果一个概率为1的事件没发生,或者概率为0的事件发生了,那么熵就是无穷大,因为这一事实所带来的信息量很大。
总之,概率和熵,对于不确定的度量采取了不同方式。
定义
直观理解上,如果某个概率的事件发生了,这一个事实带来极大的信息量。因此一个(原子)事件的信息量,就是:
S
(
x
)
=
−
l
o
g
(
x
)
S(x)=-log(x)
S(x)=−log(x)
其中,log的底,可以是任意大于1的底,换底等价于更换信息的单位。如果一个随机变量
X
X
X(一个事件)对应多个原子事件(对应
X
=
x
i
X=x_i
X=xi),那么随机变量
X
X
X的熵是:
S
(
x
)
=
−
∑
x
p
(
x
)
l
o
g
(
x
)
S(x)=-\sum_x p(x)log(x)
S(x)=−x∑p(x)log(x)
上面是离散型随机变量,而连续性可以写作:
S
(
x
)
=
−
∫
x
p
(
x
)
l
o
g
(
x
)
d
x
S(x)=-\int_x p(x)log(x) dx
S(x)=−∫xp(x)log(x)dx
就是原子事件的信息熵的期望。
这意味着,事件 X X X发生,能够为我们带来的信息量。
理解建模
首先,为什么是对数呢?我认为有两个关键:
- 独立可加性;
- 理想视角下的编码长度;
如果我们认为两个事件
X
X
X和
Y
Y
Y是互相独立的,那么我们有:
p
(
x
,
y
)
=
p
(
x
)
p
(
y
)
p(x,y)=p(x)p(y)
p(x,y)=p(x)p(y)
对应的,我们认为联合事件
X
Y
XY
XY发生的熵,其实就是
X
X
X的熵 加上
Y
Y
Y的熵。因为X和Y完全没关系,因此我们把他们两个联合在一起看,和分开看的不确定度是一样的。
S
(
X
Y
)
=
S
(
X
)
+
S
(
Y
)
S(XY)=S(X)+S(Y)
S(XY)=S(X)+S(Y)
而对数满足这种性质:
S
(
X
Y
)
=
−
∑
x
,
y
p
(
x
,
y
)
l
o
g
p
(
x
,
y
)
=
−
∑
x
,
y
p
(
x
)
p
(
y
)
(
l
o
g
p
(
x
)
+
l
o
g
p
(
y
)
)
=
−
∑
x
p
(
x
)
l
o
g
p
(
x
)
−
∑
y
p
(
y
)
l
o
g
p
(
y
)
=
S
(
X
)
+
S
(
Y
)
\begin{aligned} S(XY)=& -\sum_{x,y} p(x,y)log p(x,y) \\ =& -\sum_{x,y} p(x)p(y)(log p(x)+log p(y)) \\ =& -\sum_{x} p(x)log p(x) - \sum_{y} p(y)log p(y) \\ =& S(X)+S(Y) \\ \end{aligned}
S(XY)====−x,y∑p(x,y)logp(x,y)−x,y∑p(x)p(y)(logp(x)+logp(y))−x∑p(x)logp(x)−y∑p(y)logp(y)S(X)+S(Y)
其次,理解一下
l
o
g
1
p
(
x
)
log {1 \over p(x)}
logp(x)1的含义:
我们如果从频率派估计事件
x
i
x_i
xi发生的概率,那么:
p
(
x
i
)
=
x
i
N
p(x_i)= x_i \over N
Np(xi)=xi
再思考,如果样本空间中有
M
M
M个事件,那么我们如果采用
k
k
k进制编码,理想情况,我们需要
l
o
g
k
M
log_k M
logkM长度的编码。
而
1
p
(
x
i
)
=
N
x
i
{1 \over p(x_i)}=N \over x_i
xip(xi)1=N,实际上是将
x
i
x_i
xi发生次数归一化后,估计了样本空间大小,为
N
x
i
N \over x_i
xiN。也就是说,在
x
i
x_i
xi的视角下,我们需要
l
o
g
k
N
x
i
log_k N \over x_i
xilogkN来对总体事件编码。
而
S
(
X
)
S(X)
S(X)相当于求取这种“各自理想视角”下,最优编码的均值。
其实还有两件事,一是值域,而是“单调性”:
- 如果事件完全“确定”,那么我们没有不确定度,熵为0,对应的是 X X X只有确定事件或者不确定事件产生。
- 信息量越大,熵越大。确定性事件的熵肯定比不确定的事件的熵要小(不确定的事情蕴含的信息越大),确定性事件的概率分布也就是恒等于1,对应的熵是0,因此在这两种情况下,熵最小。
理论一些
如果我们希望把上述建模变得理论一些,那么我们可以算一算。实际上这就是数学建模,别紧张。
我们定义熵应该满足以下条件:
1、它是概率分布p(x)的函数,为了研究的方便,我们还希望它是一个光滑函数;
2、它具有独立可加性,这意味着熵满足:
S
[
p
(
x
)
]
=
∑
x
f
(
p
(
x
)
)
S[p(x)] = \sum_x f(p(x))
S[p(x)]=x∑f(p(x))
3、信息量越大,熵越大。
我们需要确定函数
f
f
f的表达式。
我们先考虑二元分布(由于是理解,就不考虑多元了,多元的话考虑归纳就行).
我们再考虑二元分布下,非常简单的形式,即
p
(
X
)
=
p
,
p
(
X
ˉ
)
=
1
−
p
,
p
(
Y
)
=
q
,
p
(
Y
ˉ
)
=
1
−
q
p(X)=p,p(\bar X)=1-p,p(Y)=q,p(\bar Y)=1-q
p(X)=p,p(Xˉ)=1−p,p(Y)=q,p(Yˉ)=1−q。这里我们就不得不解函数方程了,这里偷懒,暂时就不解了。但是可以解出:
f
(
x
)
=
α
x
l
n
x
f(x)=\alpha x lnx
f(x)=αxlnx
我们根据这个定义,衍生出对于多元变量、联合分布的一些信息量讨论。
联合熵
如果我们知到随机变量
X
X
X和
Y
Y
Y,那么联合熵定义如下:
S
[
x
,
y
]
=
−
∑
x
∑
y
p
(
x
,
y
)
l
n
p
(
x
,
y
)
S[x,y]=-\sum_x \sum_y p(x,y) ln p(x,y)
S[x,y]=−x∑y∑p(x,y)lnp(x,y)
当然,直观的看,就是对上述熵定义的直接延拓,只不过变为多变量的情况。
条件熵
条件熵,其实就是可以进一步延拓:
S
(
Y
∣
X
)
=
∑
x
p
(
x
)
S
(
Y
∣
X
=
x
)
=
∑
x
p
(
X
=
x
)
∑
y
p
(
Y
=
y
∣
X
=
x
)
l
o
g
p
(
Y
=
y
∣
X
=
x
)
\begin{aligned} S(Y|X)=& \sum_x p(x)S(Y|X=x) \\ =& \sum_x p(X=x) \sum_y p(Y=y|X=x) logp(Y=y|X=x) \end{aligned}
S(Y∣X)==x∑p(x)S(Y∣X=x)x∑p(X=x)y∑p(Y=y∣X=x)logp(Y=y∣X=x)
意思是,当我们确定条件
x
x
x下,计算熵
S
(
Y
∣
X
=
x
)
S(Y|X=x)
S(Y∣X=x)的均值。
或者说,暴力的看就是:
S
(
Y
∣
X
)
=
−
∑
x
∑
y
p
(
x
,
y
)
l
o
g
p
(
y
∣
x
)
S(Y|X)=-\sum_x \sum_y p(x,y)log p(y|x)
S(Y∣X)=−x∑y∑p(x,y)logp(y∣x)
互信息
互信息(Mutual information )可以看作是两个随机事件的信息交集。可以从多个角度、公式看待这个变量。
I
(
X
,
Y
)
=
H
(
X
)
+
H
(
Y
)
−
H
(
X
Y
)
≥
0
I(X, Y) = \mathbb{H}(X)+ \mathbb{H}(Y) - \mathbb{H}(XY) \ge 0
I(X,Y)=H(X)+H(Y)−H(XY)≥0
I
(
X
,
Y
)
=
D
K
L
(
P
(
X
,
Y
)
∣
∣
P
(
X
)
P
(
Y
)
)
=
E
P
(
x
,
y
)
[
log
P
(
x
,
y
)
P
(
x
)
P
(
y
)
]
I(X, Y) = \mathcal{D}_{KL}(P{(X,Y)} || P(X) P(Y)) = \mathbb{E}_{P_{(x,y)}} [\log \frac{P(x,y)}{P(x)P(y)}]
I(X,Y)=DKL(P(X,Y)∣∣P(X)P(Y))=EP(x,y)[logP(x)P(y)P(x,y)]
I
(
X
,
Y
)
=
H
(
Y
)
−
H
(
Y
∣
X
)
=
H
(
X
)
−
H
(
X
∣
Y
)
I(X, Y) = \mathbb{H}(Y) - \mathbb{H}(Y|X)=\mathbb{H}(X) - \mathbb{H}(X|Y)
I(X,Y)=H(Y)−H(Y∣X)=H(X)−H(X∣Y),其中
H
(
Y
∣
X
)
=
∫
x
,
y
p
(
x
,
y
)
log
p
(
x
,
y
)
p
(
x
)
d
x
d
y
\mathbb{H}(Y|X) = \int_{x, y} p(x, y) \log \frac{p(x,y)}{p(x)} dxdy
H(Y∣X)=∫x,yp(x,y)logp(x)p(x,y)dxdy
如果类似熵的角度看,
l
o
g
p
(
y
∣
x
)
p
(
y
)
log {p(y|x) \over p(y)}
logp(y)p(y∣x)是点互信息,即具体的考虑了
X
=
x
,
Y
=
y
X=x,Y=y
X=x,Y=y时,两个变量的相关性。而
I
(
X
,
Y
)
I(X,Y)
I(X,Y)考虑的是所有的
X
X
X和
Y
Y
Y取值下,点互信息的期望,即:
I
(
X
,
Y
)
=
∫
x
,
y
p
(
x
,
y
)
log
p
(
x
,
y
)
p
(
x
)
d
x
d
y
I(X,Y)=\int_{x, y} p(x, y) \log \frac{p(x,y)}{p(x)} dxdy
I(X,Y)=∫x,yp(x,y)logp(x)p(x,y)dxdy
总结
我们可以用一张图,看明白这些关于熵的概念。
如果我们把熵看作是,某事件发生所能带来的信息量(不确定度),那么:
- 条件熵就是确定了另一事件 Y Y Y,将降低当前事件 X X X的信息量;
- 联合熵就是,两件事合起来的信息量;
- 互信息就是,两件事共同能确定的信息量。