信息熵

现代社会都在讨论信息的重要新,但是信息这个概念很抽象,如何去度量呢?一本<哈利波特>能带给我们多少信息?如何定量的表达?这个问题一直困扰着科学界,直到香侬提出信息熵这个概念.

举个例子,比如说:

明天下雨

这句话带给我们多少信息呢?

假设天气情况只有晴天,下雨,下雪,多云4种情况,如果用计算机来表达这四种情况需要几个比特?

00 晴天
01 下雨
10 下雪
11 多云

所以"明天下雨"这句话带来的信息只需要用2个比特就可以表达出来,所以这句话的信息量为2比特.信息量与每种情况的概率有如下关系:

I(x) = \log\frac{1}{P(x)}

这里的对数是以2为底的,当然也可以其他底的对数,只不过是单位不同罢了.

这里有个问题,我在上海,下雪的情况是非常少的,下雪对我来说几乎可以忽略,从这个角度来考虑"明天下雨"这句话带来的信息对我来说可能没有2比特,所以我们会乘以每种情况的概率:

H(X) =\sum_{x\in X} P(x)\log \frac{1}{P(x)}= -\sum_{x\in X} P(x)\log P(x)

条件熵

当我们已知某个条件,信息熵可以表示为条件熵:

H(X|Y) = -\sum_{x\in X,y\in Y} P(x,y)\log P(x|y)

比如说,我给个提示,说"现在是夏天",那么"明天下雨"这句话带来的信息量就会更少,因为夏天基本上不会下雪.也就是说其他信息可以帮我们消除了不确定性,即:

H(X|Y) \leq H(X)

互信息

当获取的信息和要研究的事物"有关系"时,这些信息可以帮助我们消除不确定性.当然"有关系"这种说法太模糊,不太科学,最好能够量化独立"相关性".

香侬提出一个"互信息"的概念来作为两个随机事件"相关性"的量化独立:

I(X;Y) = \sum_{x\in X,y\in Y} P(x,y)\log \frac{P(x,y)}{P(x)P(y)}

互信息还可以写成:

I(X;Y) = H(X) - H(X|Y)

所谓两个事件相关度的量化,就是在了解一个事件的情况下,对另一个事件不确定性消除的大小.
image.png

KL散度

KL散度,也叫相对熵或KL距离.它主要用来衡量两个分布的相似程度,相似程度越大,KL散度越小。

KL(f(x)||g(x)) = \sum _ { x\in X }  f(x)\cdot\log\frac{f(x)}{g(x)}

机器学习的过程其实就是让模型模拟训练数据分布的过程,所以可以使用KL散度作为机器学习的好坏的指标。将KL散度展开:

KL(f(x)||g(x)) = \sum _ { x\in X }  f(x)\cdot\log\frac{f(x)}{g(x)}=\sum _ { x\in X }  f(x)\cdot\log f(x) -  f(x)\cdot\log g(x)

其中f(x)\cdot\log f(x)是熵的负数,这是由训练集决定的相当与常数,所以最小化KL散度等价于最小化交叉熵。所以机器学习经常用交叉熵作为损失函数。

交叉熵

由KL散度可知,当训练数据给定时,最小化KL散度等价于最小化交叉熵,所以机器学习经常用交叉熵作为损失函数。

H ( f(x),g(x) ) = - \sum_x f ( x ) \log g ( x )


参考:

posted @ 2019-01-24 19:32:44
评论加载中...

发表评论