信息论
顾名思义,信息论是研究信息的一门学科,不过在这篇文章里,只讨论一些简单的概念。
信息量
这里的信息量和“这句话信息量很大啊”的信息量有些像,但还是有区别的。
信息论
顾名思义,信息论是研究信息的一门学科,不过在这篇文章里,只讨论一些简单的概念。
信息量
这里的信息量和“这句话信息量很大啊”的信息量有些像,但还是有区别的。
我们常说的信息量很大,基本上的意思是表达某句话或者某个场面(较少见)蕴含了很丰富的可解读信息,有着很大的脑补空间,可以让读者或者观众进行大限度的脑补、意淫、无限遐想。
然而信息论的基本想法是一个不太可能发生的事件发生了,要比一个非常可能的事件发生,有更多的信息。
比如我说:“人终究会死”,就没什么信息量,而“有个人跳楼没死”,信息就很丰富了。
当然了,在数学书上,总是要用公式来表示,这个定义是这样的,对于一个事件
x
x
x,它包含的信息量(自信息)为:
I
(
x
)
=
−
l
n
P
(
x
)
I(x) = -lnP(x)
I(x)=−lnP(x)
这里使用了以 e e e为底的对数,单位是奈特(nats),实际上,也可以使用以2为底的对数,它的单位是比特(bit)或香农。两者区别并不大,同一个信息只有常数倍的差距。
这里贴上
−
l
n
x
-lnx
−lnx的函数,可以感受一下前面说的,当一个事件发生概率越大,信息量越小。
香农熵
上面说的自信息只针对单一事件,是单一事件信息量的量化,但是通常我们要对所有可能发生的事件做一个度量,也叫做香农熵。下面是公式:
H
(
x
)
=
E
x
∼
P
[
I
(
x
)
]
=
−
E
x
∼
P
[
l
n
P
(
x
)
]
H(x) = E_{x \sim P}[I(x)] = -E_{x \sim P}[lnP(x)]
H(x)=Ex∼P[I(x)]=−Ex∼P[lnP(x)]
香农熵其实就是所有可能发生的事件的信息量用它的概率的加权和。
我们把上面公式展开,思考一下概率分布与香农熵的关系:
H
(
x
)
=
−
∑
x
P
(
x
)
l
n
P
(
x
)
H(x) = - \sum_{x}P(x)lnP(x)
H(x)=−x∑P(x)lnP(x)
这个东西我本来感觉应该有规律的,但是写了个代码看一下貌似没有,不过整体趋势应该是方差越小,整个值越大。而花书的说法是,越接近均匀分布,熵越高,越接近确定的分布,熵越低,接近确定分布和方差高不是一回事,花书上还给了个二值随机变量的例子:
在上面的图中,横坐标是二值随机变量是1的概率,纵坐标是对应的香农熵。假设
p
p
p表示二值随机变量是1的概率,那么
1
−
p
1-p
1−p就是二值随机变量为0的概率。因此:
H
(
x
)
=
(
p
−
1
)
l
o
g
(
1
−
p
)
−
p
l
o
g
p
H(x) = (p-1)log(1-p) - plogp
H(x)=(p−1)log(1−p)−plogp
- 当 p → 0 p\rightarrow 0 p→0,随机变量几乎总是0,所以分布也是几乎确定的。
- 当 p → 1 p \rightarrow 1 p→1,随机变量几乎总是1,分布也是几乎确定的,整个表达式还是趋近于0。
KL散度
上面写的都是针对同一个概率分布的,而想要衡量两个单独的概率分布之间的差异,就可以用到KL散度了。
假设有两个单独的概率分布
P
(
x
)
P(x)
P(x)和
Q
(
x
)
Q(x)
Q(x),那么KL散度可以表示为:
D
K
L
(
P
∣
∣
Q
)
=
E
x
∼
P
[
l
o
g
P
(
x
)
Q
(
x
)
]
=
E
x
∼
P
[
l
o
g
P
(
x
)
−
l
o
g
Q
(
x
)
]
D_{KL}(P||Q) = E_{x \sim P}[log{\frac{P(x)}{Q(x)}}] = E_{x \sim P}[logP(x) - logQ(x)]
DKL(P∣∣Q)=Ex∼P[logQ(x)P(x)]=Ex∼P[logP(x)−logQ(x)]
花书上给KL散度一个解释:在离散型变量的情况下,KL 散度衡量的是,当我们使用一种被设计成能够使得概率分布 Q Q Q产生的消息的长度最小的编码,发送包含由概率分布 P P P产生的符号的消息时,所需要的额外信息量。
然而根本听不太懂啊。还是把公式展开分析一下吧:
D
K
L
(
P
∣
∣
Q
)
=
E
x
∼
P
[
l
o
g
P
(
x
)
Q
(
x
)
]
=
∑
x
P
(
x
)
l
o
g
P
(
x
)
Q
(
x
)
D_{KL}(P||Q) = E_{x \sim P}[log{\frac{P(x)}{Q(x)}}] = \sum_x{P(x)log{\frac{P(x)}{Q(x)}}}
DKL(P∣∣Q)=Ex∼P[logQ(x)P(x)]=x∑P(x)logQ(x)P(x)
我们可以推出的一些信息是:
- KL散度的值是大于等于0的,这个可以由吉布斯不等式推导出,这里不说。
- KL散度等于0当且仅当 P P P和 Q Q Q在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是"几乎处处"相同的。
- 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)。
在前面也说了,KL散度是用来衡量两个分布的差距,但是上面提到了KL散度是不对称的,那么这两者作为一个指标有什么不同呢?
假设分布 P P P是固定的,我们要用一个分布 Q Q Q去近似它,这个时候KL散度就可以做为一个衡量的指标,我们的目标就是最小化KL散度。
接下来我们看第一种:
D
K
L
(
P
∣
∣
Q
)
=
∑
x
P
(
x
)
l
o
g
P
(
x
)
Q
(
x
)
D_{KL}(P||Q)= \sum_x{P(x)log{\frac{P(x)}{Q(x)}}}
DKL(P∣∣Q)=x∑P(x)logQ(x)P(x)
在这种情况下, P P P的分布是固定的嘛,我们需要考虑的是怎么调整 Q Q Q,在 P P P的值比较大的时候, Q Q Q越大,整个值就越大,而 P P P比较小的地方,由于左边乘了 P P P所以反而 Q Q Q的值影响没那么大。因此,如果我们使用 D K L ( P ∣ ∣ Q ) D_{KL}(P||Q) DKL(P∣∣Q)作为最小化的目标,那么 Q Q Q就应该在 P P P大的地方尽可能的大,在 P P P小的地方,在满足前面的条件下 Q Q Q也是要尽量大。
然后是第二种:
D
K
L
(
Q
∣
∣
P
)
=
∑
x
Q
(
x
)
l
o
g
P
(
x
)
Q
(
x
)
D_{KL}(Q||P) = \sum_x{Q(x)log{\frac{P(x)}{Q(x)}}}
DKL(Q∣∣P)=x∑Q(x)logQ(x)P(x)
思路和上面一样想让结果小,首先要保证在 P P P小的时候, Q Q Q也要小,在这个前提下, P P P大的地方, Q Q Q还是要小一些。
附上一张图:
## JS散度
JS散度是KL散度的一种变形,下面是公式:
J
S
(
P
∣
∣
Q
)
=
1
2
K
L
(
P
∣
∣
P
+
Q
2
)
+
1
2
K
L
(
Q
∣
∣
P
+
Q
2
)
JS(P||Q) = \frac{1}{2}KL(P||\frac{P+Q}{2}) + \frac{1}{2}KL(Q||\frac{P+Q}{2})
JS(P∣∣Q)=21KL(P∣∣2P+Q)+21KL(Q∣∣2P+Q)
JS散度的值域是[0,1]。并且有一个好处,那就是对称性,从公式中就可以看出来 J S ( P ∣ ∣ Q ) = J S ( Q ∣ ∣ P ) JS(P||Q) = JS(Q||P) JS(P∣∣Q)=JS(Q∣∣P)
交叉熵
交叉熵其实和KL散度关系密切,先看一下公式:
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
(
P
,
Q
)
=
−
E
x
∼
P
[
l
o
g
Q
(
x
)
]
H(P, Q) = -E_{x \sim P}[log{Q(x)}]
H(P,Q)=−Ex∼P[logQ(x)]
再回顾一下KL散度公式:
D
K
L
(
P
∣
∣
Q
)
=
E
x
∼
P
[
l
o
g
P
(
x
)
−
l
o
g
Q
(
x
)
]
=
E
x
∼
P
[
l
o
g
P
(
x
)
]
−
E
x
∼
P
[
l
o
g
Q
(
x
)
]
D_{KL}(P||Q) = E_{x \sim P}[logP(x) - logQ(x)] = E_{x \sim P}[logP(x)] - E_{x \sim P}[logQ(x)]
DKL(P∣∣Q)=Ex∼P[logP(x)−logQ(x)]=Ex∼P[logP(x)]−Ex∼P[logQ(x)]
交叉熵其实就是KL散度去掉了左边那一项,如果我们固定
P
P
P优化的目标是
Q
Q
Q,那么优化KL散度和优化交叉熵的效果也是一样的,因为左边那一项是固定的。
最后一个问题,假定平常的分类任务中,训练数据可以用分布 P P P表示,为什么我们都是用 H ( P , Q ) H(P, Q) H(P,Q)而不是 H ( Q , P ) H(Q, P) H(Q,P)呢?我想,这可能是和它们优化的结果有关系吧,因为结果和KL散度的优化结果一样,我们可以参考上面KL散度那一节中的图,我的想法是, H ( P , Q ) H(P, Q) H(P,Q)可以覆盖 P P P的分布,而 H ( Q , P ) H(Q, P) H(Q,P)不能。
总结
上面的内容虽然不算难,但是在很多地方推导公式之类的都可能会用到,因此还是挺有用的。另外,如果有错误,欢迎大家指出。