信息量、信息熵、交叉熵、似然

1,371 阅读2分钟

交叉熵,KL散度,信息熵,信息量是有密切的关系的。

信息量

  • 信息量是对信息的度量,一件事情发生之后我们会从中得到的信息。一般来说概率小的事情发生比概率大的事情发生传递更多的消息。因此信息量与事件发生概率成负相关。同时信息量不能为负。两个不相关的事情xy同时发生,我们观察到的信息量应该等于x和y分别发生得到的信息量的和。

p(x,y)=p(x)×p(y)p(x,y)=p(x)\times p(y)

h(x,y)=h(x)+h(y)h(x,y)=h(x)+h(y)

其中h(x)=log2p(x)h(x)=-log_2p(x)

信息熵

有个事件x发生之后,会产生信息量h(x)。

那么如果我们有一个事件集合X,其中包含了多个事件x。我们可以计算信息量的期望,就是每一个事件发生概率x事件的信息量。

h(X)=i=1np(xi)log2p(xi)h(X) = -\sum^n_{i=1}{p(x_i)log_2p(x_i)}

这个就是离散变量的信息熵。

KL散度

信息熵是针对一个随机变量,也就是一个事件集合。一个随机变量每一个事件都有不同的概率,这就是一个概率分布。那么假设这个变量的每一个事件的概率发生了变化,那么这个概率分布就发生了变化,那么信息熵也随之改变。我们想衡量两个概率分布之间的差异,就可以从信息熵入手。

最简单的考虑是两个概率分布的信息熵的差值:

Δ=i=1n[p(xi)log2p(xi)q(xi)log2q(xi)]\Delta = \sum^n_{i=1}{[p(x_i)log_2p(x_i)-q(x_i)log_2q(x_i)]}

这里的问题就是,如果两个分布的不同,但是他们的信息熵也是可能等于0.比方说【0.1,0.9】和【0.9,0.1】.因为一个分布对应一个信息熵,而一个信息熵可以对应多个分布。

我们也可以直接让两个分布的每一个事件的信息量相减:

Δ=i=1n[log2p(xi)log2q(xi)]\Delta = \sum^n_{i=1}{[log_2p(x_i)-log_2q(x_i)]}

但是这样好像分布当中,每一个事件发生的概率又忽视了。

所以可以从某一个分布的视角来看待这个事情:

Δ=i=1np(xi)[log2p(xi)log2q(xi)]\Delta = \sum^n_{i=1}{p(x_i)[log_2p(x_i)-log_2q(x_i)]}

这样就是以p为视角,看看自己和q之间的不同之处。这个就是KL散度,也可以叫做相对熵。

交叉熵

Δ=i=1n[p(xi)log2p(xi)p(xi)log2q(xi)]\Delta = \sum^n_{i=1}{[p(x_i)log_2p(x_i)-p(x_i)log_2q(x_i)]}

上面公式第一项就是信息熵,第二项就叫做交叉熵。交叉熵也是一种熵,不过是两个不同的分布形成的熵。