0%

更通俗的理解熵

时至今日,早已忘记高中化学里面的熵代表什么,还好化学里的熵和我要研究的熵并非同一性质。在进坑DL中,遇到了许多和熵有关的概念,于是今天就彻底来扒一扒熵的有关概念和常用领域。包括:

  1. 什么是熵
  2. 条件熵
  3. KL散度
  4. 交叉熵

注:本篇文章默认读者有一定的求期望、计算联合概率分布、计算条件概率分布和知道什么是概率密度的基础知识。

什么是熵

首先,仅需要知道熵能够衡量信息的不确定性即可。一条信息的价值和他的不确定性有密切的关系,如:明天下雨的概率是1%和明天下雨的概率是99%这两条信息的价值是不一样的。不清楚事物的不确定性时,决策时出错的概率就越大;相反,通过自己逐步抽丝剥茧搞清了一个事物的本质,那么他的不确定性就为0,决策就不可能出错。那么如何衡量事物的不确定性呢?答案就是熵。

假设此时有32个盒子,31个盒子里是白球,1个盒子里是黑球。假设让人用二分法来猜测黑球在哪个盒子里,猜一次1块钱,只需要5次就能猜中$(\log_232=5)$,那么这个信息值5块钱。当然信息的不确定性不能用钱来衡量,香农给出的定义是:
\begin{equation}
H = -(p_1\log p_1 + p_2\log p_2 + \cdots+p_n\log p_n), n=32
\end{equation}

$p_i$为黑球在第$i$个盒子里的概率,$H$即为信息熵,且此时的熵恰好为5。在通俗一点,对于一个随机变量$X$,它的熵定义如下:

\begin{equation}
H = \sum_{x\in X}P(x)\log P(x)
\end{equation}

在通俗一点,对于序列0, 0, 0, 1, 1, 1,它的熵为2,单位是bit,因为序列里不是1就是0,2,即需要几个bit能够表示序列的全部的信息。或者说,对于这个系统或分布,信息量的期望就是熵,可以衡量系统的不确定程度。所以也可以得到变量的不确定性越大,熵也就越大这样的结论。

条件熵

信息的作用在于消除不确定性,根据相关的信息来减少另外信息的不确定性。如:A想明天邀请B来做客,但不知道B有没有时间,此时的信息由不确定性因素,但A此时得到了一条消息:B出门旅游了,那么A就不必在明天邀请B反而可以去做一些别的事情。

这就是利用其他信息来减少不确定性,知道的相关信息越多,一件事的不确定性就越小。那么如何用数学语言描述呢?

假设两个随机变量$X, Y$,$X$是我们了解的,可以根据$X$的分布来求出$X$的熵:

\begin{equation}
H(X) = -\sum_{x\in X}P(x)\log P(x)
\end{equation}

而此时恰好知道$X,Y$的联合分布$p(x,y)$和条件概率分布$p(x|y)$,定义$X$在$Y$下的熵为:

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

此时便可以得到互信息$I(X;Y)$:

\begin{equation}
H(X)-H(X|Y) = I(X;Y) = H(Y)-H(Y|X) = H(X)+H(Y)-H(X,Y)
\end{equation}

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

互信息一定是大于等于0,当互信息为0时,表明$\frac{P(x,y)}{P(x)P(y)} = 1$,此时$P(x,y)=P(x)P(y)$,表明了随机变量$X,Y$相互独立。可见,只有两个信息相关时,才可以有效降低当前信息的不确定性。如明天是否下雨这个信息和小明今晚出去购物这两条信息是没有任何相关性的,他们的互信息为0。

借鉴这个思路,在2019年美国大学生数学建模竞赛的C题中,成功分析了主要是哪些人群在吸毒,合理提出建议。即吸毒人口的熵减去各种身份吸毒人口的熵,单亲家庭、残疾人员等,得到互信息,互信息越大,说明相关性越高,互信息越小则说明两者完全无关。

KL散度

KL 散度可以用来衡量两个分布的差异。在深度学习中,我们经常会将一个复杂的分布用一个简单的近似分布来代替。KL 散度可以帮助我们测量在选择一个近似分布时丢失的信息量。

对于离散型随机变量$X$,假设原概率分布为$P(x)$,近似概率分布为$Q(x)$,则使用 KL 散度衡量这两个分布的差异:

\begin{equation}
\begin{aligned}
KL(P||Q) &=\sum_{x\in X}P(x)(-\log Q(x) + \log P(x) ) \\
{ } &= -\sum_{x\in X} (P(x)\log Q(x)) + \sum_{x\in X} (P(x)\log P(x))
\end{aligned}
\end{equation}

那么公式的第二项就是 $P(x)$ 的熵,是个定值,公式的第一项就是交叉熵。KL 散度衡量两个分布的差异,如果想要使分布差异小,我们优化公式的第一项交叉熵即可。补充:由吉布斯不等式可以知道 KL 散度恒正,那么交叉熵也恒正。

交叉熵

交叉熵(也有人叫相对熵)也可以用来衡量两个分布的差异。以离散型变量 $x$ 为例,交叉熵$H(P,Q)$的定义如下:

\begin{equation}
H(P,Q)=-\sum_{x\in X} P(x)\log Q(x)
\end{equation}

当然也可以写成期望的形式:$-E_{x\sim P}\log Q(x)$,也许你善于观察,肯快发现了交叉熵与KL散的联系(公式推导较为简单,不在展示):

\begin{equation}
H(P,Q) = H(P) + KL(P||Q)
\end{equation}

在机器学习评价两个分布之间的差异时,由于分布 $P$ 会是给定的(如测试样本的标签值),所以此时 KL 散度和交叉熵的作用其实是一样的,而且因为交叉熵少算一项,更加简单,所以选择交叉熵会更好。交叉熵也有以下的性质:

  1. 对于两个完全相同的函数,它们的交叉熵等于零。
  2. 交叉熵越大,两个函数差异越大;反之,交叉熵越小,两个函数差异越小。

举例

也许说了一大堆你还是不明白,那么在这里举例说明。

信息熵

还是那个例子,32个箱子,31个箱子里是白球,1个箱子里是黑球,你用二分法去摸球,直到摸到黑球位置,此时摸球次数的随机变量$X$为:

条件熵

根据以下的表格,对于第一列上班族,上班族的随机变量为$X$,且1表示上班,那么上班族的熵$H(X)=0.589$。对于第二列上班族的年龄,年龄在区间内$[0,20]$为0,年龄在区间$[20, 100]$内为1,那么年龄这列的熵$H(Y)$为0.589。互信息$I(X;Y)$(自行手动按照公式计算即可)为0.42,表明两者上班的人和上班的人的年龄之间有一定的相关性。

上班族$X$ 上班族的年龄$Y$
1 1
1 0
0 0
1 1
0 0

参考

站在巨人的肩膀上。

  1. 《数学之美(第二版)》第六章:信息的度量和作用
  2. 互信息公式推导:
    https://www.cnblogs.com/gatherstars/p/6004075.html
  3. KL散度与交叉熵:
    https://www.cnblogs.com/wuliytTaotao/p/9713038.html
感谢上学期间打赏我的朋友们。赛博乞讨:我,秦始皇,打钱。

欢迎订阅我的文章