熵、相对熵、互信息、交叉熵

西瓜书、花书第二部分以及李航的《统计学习方法》已经大概翻看了一遍,感觉算是有了一定的机器学习理论基础。当然,以上书籍在内容方面各有侧重,根据朋友的建议,在以上几本书中没搞懂或者一知半解的部分,大多可以在PRML这本经典之作中找到答案。

本文记录关于机器学习中涉及的几个信息论的重要概念。多数内容摘自PRML。

1、熵

考虑⼀个离散的随机变量x。当我们观察到这个变量的⼀个具体值的时候,我们接收到了多少信息呢?信息量可以被看成在学习x的值时“出乎意料的程度”。如果有人告诉我们⼀个相当不可能的事件(取值)发生了,我们收到的信息要多于我们被告知某个很可能发生的事件(取值)发生时收到的信息。如果我们知道某件事情⼀定会发生,那么我们就不会接收到信息。比如我告诉你“明天太阳从东方升起”,就没有任何信息量。

于是,我们对于信息的度量将依赖于概率分布p(x),因此我们想要寻找⼀个表达了信息多少的函数h(x),它是概率p(x)的单调函数。h(·)形式可以这样寻找:如果我们有两个不相关的事件xy ,那么我们观察到两事件同时发生时获得的信息应该等于观察到事件各自发生时获得的信息之和,即h(x, y) = h(x) + h(y)。两个不相关事件是统计独立的,因此p(x, y) = p(x)p(y)根据这两个关系,很容易看出h(x)一定与p(x)对数有关。因此,我们有:

h(x)=-\log _{2} p(x)

其中,负号确保了信息⼀定是正数或者是零。注意,低概率事件应于高 的信息量。对数的底的选择是任意的。现在我们将遵循信息论的普遍传统,使用2作为对数的底。在这种情形下,h(x)单位是比特(bit)。

现在假设⼀个发送者想传输⼀个随机变量的值给接收者。这个过程中,他们传输的平均信息量通可以通过求h(x)关于概率分布p(x)的期望得到。这个期望值为:

H[x]=-\sum_{x} p(x) \log _{2} p(x)

这个重要的量被叫做随机变量的熵(entrop)。注意,\lim _{p \rightarrow 0} p \log _{2} p=0,因此对p(x) = 0我们令p(x) \log _{2} p(x)=0

有了熵的定义,接下来我们从另一个角度来看待熵的含义。

考虑⼀个随机变量x,这个随机变量有8种可能的状态,每个状态都是等可能的。为了把x的值传给接收者,我们需要传输⼀个3比特的消息。这个变量的熵由下式给出:

H[x]=-8 \times \frac{1}{8} \log _{2} \frac{1}{8}=3

若8种状态各自的概率为\left(\frac{1}{2}, \frac{1}{4}, \frac{1}{8}, \frac{1}{16}, \frac{1}{64}, \frac{1}{64}, \frac{1}{64}, \frac{1}{64}\right),则熵为:

H[x]=-\frac{1}{2} \log _{2} \frac{1}{2}-\frac{1}{4} \log _{2} \frac{1}{4}-\frac{1}{8} \log _{2} \frac{1}{8}-\frac{1}{16} \log _{2} \frac{1}{16}-\frac{4}{64} \log _{2} \frac{1}{64}=2

我们看到,非均匀分布比均匀分布的熵要小。

与之前⼀样,我们可以使用⼀个3比特的数字来完成这件事情。然而,我们可以利用非均匀分布这个特点,使用更短的编码来描述更可能的事件,使用更长的编码来描述不太可能的事件。我们希望这样做能够得到⼀个更短的平均编码长度。我们可以使⽤下⾯的编码串:0、10、110、1110、111100、111101、111110、111111来表示8个状态,传输的编码的平均长度就是:

\frac{1}{2} \times 1+\frac{1}{4} \times 2+\frac{1}{8} \times 3+\frac{1}{16} \times 4+4 \times \frac{1}{64} \times 6=2

这个值又⼀次与随机变量的熵相等。注意,我们不能使用更短的编码串,因为必须能够从多个这种字符串的拼接中分割出各个独立的字符串。

熵和最短编码长度的这种关系是⼀种普遍的情形。无噪声编码定理(Shannon, 1948)表明,熵是传输⼀个随机变量状态值所需的比特位的下界。

假设我们有⼀个联合概率分布p(x, y)我们从这个概率分布中抽取了⼀对xy。如果x的值已知,那么需要确定对应的y值所需的附加的信息就是−\ln p(y | x)。因此,用来确定y值的平均附加信息可以写成:

\begin{aligned} H(Y | X) &=\sum_{x} p(x) H(Y | X=x) \\ &=-\sum_{x} p(x) \sum_{y} p(y | x) \log p(y | x) \\ &=-\sum_{x} \sum_{y} p(x, y) \log p(y | x) \end{aligned}

这被称为给定x的情况下,y条件熵

现在开始,我们会把熵的定义中的对数变成自然对数,这种情况下,熵的度量的单位是nat而不是bit,两者的差别是⼀个\ln 2的因子。

2、相对熵和互信息

考虑某个未知的分布p(x)。假定我们使用⼀个近似的分布q(x)对它进行了建模。如果我们使用q(x)建立一个编码体系,用来把x的值传给接收者,那么,由于我们使用q(x)而不是真实分布p(x),因此在具体化x的值(假定我们选择了⼀个高效的编码系统)时,我们需要⼀些附加的信息。我们需要的平均附加信息量(单位是nat)为:

\begin{aligned} \mathrm{KL}(p || q) &=-\int p(\boldsymbol{x}) \ln q(\boldsymbol{x}) \mathrm{d} \boldsymbol{x}-\left(-\int p(\boldsymbol{x}) \ln p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x}\right) \\ &=-\int p(\boldsymbol{x}) \ln \left\{\frac{q(\boldsymbol{x})}{p(\boldsymbol{x})}\right\} \mathrm{d} \boldsymbol{x} \end{aligned}

这被称为分布p(x)和分布q(x)间的相对熵或者KL散度\mathrm{KL}(p \| q) \geq 0,并且当且仅当p(x) = q(x)等号成立。我们可以把KL散度看做两个分布p(x)q(x)间不相似程度的度量。

现在考虑由p(x, y)出的两个变量xy组成的数据集。如果变量的集合是独立的,那么他们的联合分布可以分解为边缘分布的乘积p(x, y) = p(x)p(y);如果变量不是独立的,那么我们可以通过考察联合概率分布与边缘概率分布乘积之间的KL散度来判断它们是否“接近”于相互独立。此时,KL散度为:

\begin{aligned} I[\boldsymbol{x}, \boldsymbol{y}] & \equiv \mathrm{KL}(p(\boldsymbol{x}, \boldsymbol{y}) \| p(\boldsymbol{x}) p(\boldsymbol{y})) \\ &=-\iint p(\boldsymbol{x}, \boldsymbol{y}) \ln \left(\frac{p(\boldsymbol{x}) p(\boldsymbol{y})}{p(\boldsymbol{x}, \boldsymbol{y})}\right) \mathrm{d} \boldsymbol{x} \mathrm{d} \boldsymbol{y} \end{aligned}

这被称为变量x和变量y之间的互信息(mutual information)。根据KL散度的性质,我们看到I[x, y] ≥ 0,当且仅当xy相互独立时等号成立。使用概率的加和规则和乘积规则,我们看到互信息和条件熵之间的关系为:

I[\boldsymbol{x}, \boldsymbol{y}]=H[\boldsymbol{x}]-H[\boldsymbol{x} | \boldsymbol{y}]=H[\boldsymbol{y}]-H[\boldsymbol{y} | \boldsymbol{x}]

因此我们可以把互信息看成由于知道y值而造成的x的不确定性的减小(反之亦然)。从贝叶斯的观点来看,我们可以把p(x)x的先验概率分布,把p(x | y)成我们观察到新数据y之后的后验概率分布。因此互信息表示⼀个新的观测y造成的x的不确定性的减小。

3、交叉熵

本节并非来自于PRML,而是后来复习Logistic回归看到交叉熵的概念时补充的。

首先给出交叉熵的公式:

H(p, q)=-\sum_{i=1}^{n} p\left(x_{i}\right) \log \left(q\left(x_{i}\right)\right)

其中p(x_i)是真实的概率分布,q(x_i)是分类器得出的预测概率分布。

毫无疑问,p(x_i)q(x_i)越接近说明分类器的性能越好。但用交叉熵来衡量两者的接近程度靠谱吗?这件事我一直没有仔细思考。

wait,衡量两个概率分布接近程度的不就是上面提到的KL散度吗?我们看一下KL散度的表达式:

\mathrm{KL}(p \| q)=-\int p(\boldsymbol{x}) \ln q(\boldsymbol{x}) \mathrm{d} \boldsymbol{x}-\left(-\int p(\boldsymbol{x}) \ln p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x}\right)

不难看出,第一项就是我们的交叉熵!而第二项,是数据真实概率分布的熵,对于给定问题是定值。因此在衡量p(x_i)q(x_i)接近程度的时候只需使交叉熵越小越好。

我们回过头看一下KL散度的定义:

考虑某个未知的分布p(x)。假定我们使用⼀个近似的分布q(x)对它进行了建模。如果我们使用q(x)建立一个编码体系,用来把x的值传给接收者,那么,由于我们使用q(x)而不是真实分布p(x),因此在具体化x的值(假定我们选择了⼀个高效的编码系统)时,我们需要⼀些附加的信息。我们需要的平均附加信息量(单位是nat)为KL散度。

这个定义套用在分类器模型上就是:

假定数据的真实概率分布为p(x)。我们使用⼀个分类器得到概率分布q(x)p(x)进行了拟合。如果我们使用q(x)建立一个编码体系,用来把x的值传给接收者,那么,由于我们使用q(x)而不是真实分布p(x),因此在具体化x的值(假定我们选择了⼀个高效的编码系统)时,我们需要⼀些附加的信息。我们需要的平均附加信息量(单位是nat)为KL散度。

这也就是说,从编码角度来说,交叉熵衡量的是分类器得到的对整个数据集的期望最短编码长度与实际的期望最短编码长度的差。因此交叉熵越好,分类器在数据上的表现就越好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容