交叉熵,KL散度,信息熵,信息量是有密切的关系的。
信息量
- 信息量是对信息的度量,一件事情发生之后我们会从中得到的信息。一般来说概率小的事情发生比概率大的事情发生传递更多的消息。因此信息量与事件发生概率成负相关。同时信息量不能为负。两个不相关的事情xy同时发生,我们观察到的信息量应该等于x和y分别发生得到的信息量的和。
p(x,y)=p(x)×p(y)
h(x,y)=h(x)+h(y)
其中h(x)=−log2p(x)
信息熵
有个事件x发生之后,会产生信息量h(x)。
那么如果我们有一个事件集合X,其中包含了多个事件x。我们可以计算信息量的期望,就是每一个事件发生概率x事件的信息量。
h(X)=−∑i=1np(xi)log2p(xi)
这个就是离散变量的信息熵。
KL散度
信息熵是针对一个随机变量,也就是一个事件集合。一个随机变量每一个事件都有不同的概率,这就是一个概率分布。那么假设这个变量的每一个事件的概率发生了变化,那么这个概率分布就发生了变化,那么信息熵也随之改变。我们想衡量两个概率分布之间的差异,就可以从信息熵入手。
最简单的考虑是两个概率分布的信息熵的差值:
Δ=∑i=1n[p(xi)log2p(xi)−q(xi)log2q(xi)]
这里的问题就是,如果两个分布的不同,但是他们的信息熵也是可能等于0.比方说【0.1,0.9】和【0.9,0.1】.因为一个分布对应一个信息熵,而一个信息熵可以对应多个分布。
我们也可以直接让两个分布的每一个事件的信息量相减:
Δ=∑i=1n[log2p(xi)−log2q(xi)]
但是这样好像分布当中,每一个事件发生的概率又忽视了。
所以可以从某一个分布的视角来看待这个事情:
Δ=∑i=1np(xi)[log2p(xi)−log2q(xi)]
这样就是以p为视角,看看自己和q之间的不同之处。这个就是KL散度,也可以叫做相对熵。
交叉熵
Δ=∑i=1n[p(xi)log2p(xi)−p(xi)log2q(xi)]
上面公式第一项就是信息熵,第二项就叫做交叉熵。交叉熵也是一种熵,不过是两个不同的分布形成的熵。