信息熵

  信息量和信息熵的概念最早是出现在通信理论中的,其概念最早是由信息论鼻祖香农在其经典著作《A Mathematical Theory of Communication》中提出的。如今,这些概念不仅仅是通信领域中的基础概念,也被广泛的应用到了其他的领域中,比如机器学习。

  信息量用来度量一个信息的多少。和人们主观认识的信息的多少有些不同,这里信息的多少用信息的在一个语境中出现的概率来定义,并且和获取者对它的了解程度相关,概率越大认为它的信息量越小,概率越小认为它的信息量越大。用以下式子定义:

$I(x) = -\log p(x)$

  信息熵用来描述一个信源的不确定度,也是信源的信息量期望。它实际上是对这个信源信号进行编码的理论上的平均最小比特数(底数为2时)。

  式子定义如下(log 的底数可以取2、e等不同的值,只要底数相同,一般是用于相对而言的比较):

$\begin{aligned}H(X) &= E_{x\sim X}[I(x)]\\ &= E_{x\sim X}[-\log x] \displaystyle \\&= -\sum\limits_{x\in X}[p(x)\log p(x)]\end{aligned}$

  《Deep Learning》的解释是:它给出了对依据概率分布P生成的符号进行编码所需的比特数在平均意义上的下界。

  我的理解:信息(符号)出现概率越高,编码理应给它少一些比特数,和有较低的信息量相符合(由上面的信息量式子算出)。信息出现概率越低,编码时可以把它的优先级放后一些,也就是给它分配更长一些的码,和有较高的信息量相符合。反应了人对信息进行编码的长度和信息的信息量是成正相关的,因为它符合这样一个事实:概率低→定义信息量高,概率低→定义编码长度长。所以信息的信息量就可以在一定程度上度量信息需要编码的长度,信源分布的信息量期望(信息熵)也就度量了一个信源平均需要的编码长度。

  当然能发出信号的信源只是信息的一个语境而已。信息熵可以在很多语境下定义。

  比如:一篇文章的字母的信息熵,那语境$X$就是在这篇文章下的所有字母,$x$就是每个字母,$p(x)$就是每个字母在这篇文章(而不是整个英语体系中每个字母的频率)中出现的频率。

  又比如:小王在盒子里放了一个红球。小明知道盒子里的球色可能是红、黑、蓝三者之一,小红知道盒子里的球色是红、黑二者之一。那小明在这个游戏中所知道的信息的信息熵的语境$X$就是这三种可能性,得$H(X)  = 1.584$(以2为底)。同理,小红是二种可能性,得$H(X)  = 1.0$。如果这时候小王告诉他们:盒子里放的不是黑球。对于小明来说,可能性变成了二种,$H(X)  = 1.0$,和之前相比信息熵减少了,获得的信息量就是$1.584 - 1.0 = 0.584$。而对于小红,$H(X)$变为了0,获得信息量就是1.0。

  这里又要问了,比如对小明来说,这个0.584是哪里来的呢?能不能正向计算呢?不清楚。。。

  另外,接近确定的分布有较低的熵;接近均匀分布的概率分布有较高的熵。如图:

  可以看出,在信源中出现的消息的种数一定时,这些消息出现的概率全都相等时,有信源的信息熵最大。推出信息熵的范围:

$\displaystyle 0\le H(X) \le -\sum\limits^{n}\frac{1}{n}\log(\frac{1}{n}) = \log(n)$,$n$是不同信息数

相对熵(KL散度)

  相对熵原本在信息论中度量两个信源的信号信息量的分布差异。

  而在机器学习中直接把其中的信息量等概念忽略了,当做损失函数,用于比较真实和预测分布之间的差异。我感觉用别的式子来比较分布之间的差异也行,因为损失函数的目的只是为了减小模型预测分布和真实分布的差异而已。只要符合分布差异越大,函数值越大的式子应该都行。

定义

  式子定义如下(这里用期望的形式定义,底数用e):

  $\displaystyle D_{KL}(P||Q) = E_{x\sim P}[\log \frac{P(x)}{Q(x)}] = E_{x\sim P}[\log P(x) - \log Q(x)]$

  《Deep Learning》中的解释是:KL散度衡量的是,当我们用一种能使概率分布Q产生的消息的长度最小的编码,发送由分布P产生的消息时,所需要的额外信息量

  我的理解:

  1、用使得P分布产生的消息长度最小的编码,来发送P分布产生的消息时。对于某个符号$x$,它的编码的信息量是$-\log P(x)$,它的概率是$P(x)$,则P分布平均每个符号要编码的信息量就是$\sum\limits_{x\in P}[-P(x)\log P(x)] = H(P)$,就是P分布的信息熵。

  2、用使得Q分布产生的消息长度最小的编码,来发送P分布产生的消息时。对于某个符号$x$,它的编码的信息量是$-\log Q(x)$,它的概率是$P(x)$,则P分布平均每个符号要编码的信息量就是$\sum\limits_{x\in P}[-P(x)\log Q(x)] = H(P, Q)$,实际上是P和Q的交叉熵(后面提到)。

  3、那么额外信息量就是2和1之差了,所以有:

$\begin{aligned}\displaystyle D_{KL}(P||Q) &= \sum\limits_{x\in P}[-P(x)\log Q(x)] - \sum\limits_{x\in P}[-P(x)\log P(x)]\\&= E_{x\sim P}[\log P(x) - \log Q(x)] \\&= E_{x\sim P}[\log \frac{P(x)}{Q(x)}] \end{aligned}$

  显然当两个分布相同时,它们的KL散度为0.

非对称

  KL散度不是一个对称量,即对于某些$P$和$Q$:$D_{KL}(P||Q) \not= D_{KL}(Q||P)$。所以使用它们来做损失函数,最小化后的效果是不一样的。

  如下是《Deep Learning》中,使用$D_{KL}(P||Q)$ 和 $D_{KL}(Q||P)$最小化后拟合真实分布的比较图:

  直观理解上图:

  1、对于$D_{KL}(p||q)$,因为优化的分布是$q$而:

$\displaystyle D_{KL}(p||q) = \sum\limits_{x\in p}[-p(x)\log q(x)] - \sum\limits_{x\in p}[-p(x)\log p(x)]$

  其中后一项不变化,所以$q$需要尽可能地靠近$p$,就产生了一个平均,得到左图。

  2、对于$D_{KL}(q||p)$,因为优化的分布是$q$而:

$\displaystyle D_{KL}(q||p) = \sum\limits_{x\in q}[-q(x)\log p(x)] - \sum\limits_{x\in q}[-q(x)\log q(x)]$

  其中后一项会变化,所以$q$不但需要尽可能地靠近$p$,而且$q$分布的交叉熵也要尽可能地小,就使得$q$分布更加不平均(概率尽可能集中到一点),得到右图。

非负

  由Jenson不等式可证明KL散度非负,首先引出Jenson不等式:

  令非负函数$f(x)$,有:

$\displaystyle\int_{-\infty}^{\infty}f(x) dx = 1$

  如果$g(x)$是任意可测函数,并且$\varphi(x)$为下凸函数,那么有Jenson不等式如下:

$\displaystyle\varphi(\int_{-\infty}^{\infty}g(x)f(x)dx) \leq \int_{-\infty}^{\infty}\varphi(g(x))f(x)dx$

  转换成期望的形式就是:

$\displaystyle\varphi(E_{x\sim f(x)}g(x)) \leq E_{x\sim f(x)}\varphi(g(x))$

  在KL散度中,由于$-\log (x)$是严格下凸函数,且$\int p(x)dx = 1, \int q(x)dx = 1$,所以有:

\begin{aligned} D_{KL}(p||q) &= - \int p(x)\log \frac{q(x)}{p(x)}dx\\ &\leq -ln\int p(x)\frac{q(x)}{p(x)}dx\\ &= -ln\int q(x)dx = - ln1 = 0 \end{aligned}

JS散度

  JS散度同样度量两个概率分布的相似度,是基于KL散度的变体,解决了KL散度非对称的问题。JS散度是对称的,取值是0到1之间。定义如下:

$\displaystyle D_{JS}(P_1||P_2) = \frac{1}{2}D_{KL}(P_1||\frac{P_1+P_2}{2}) +  \frac{1}{2}D_{KL}(P_2||\frac{P_1+P_2}{2}) $

交叉熵

  如上面提到过,交叉熵式子定义:

$H(P, Q) = -E_{x\sim P(x)}\log Q(x)$

  由上面可知,假如$P$是真实分布,当使用$D_{KL}(P||Q)$作为损失函数时,因为只含$P$的那一项并不会随着拟合分布$Q$的改变而改变。所以这时候损失函数可以使用$H(P, Q)$来代替简化

  另外,由于$H(P, Q) = D_{KL}(P||Q) + H(P)$,可看出$H(P, Q)$非负且比H(P)大。

条件熵

  为了便于表达,和前面的交叉熵、相对熵等不太一样,条件熵$H(Y|X)$中的$X$和$Y$并不是分布,而是随机变量。$H(Y|X)$表示在已知随机变量 $X$的条件下随机变量 $Y$的不确定性。注意,这里的$X$并不是某个确定值,而是随机变量,所以在计算熵的时候要对所有$H(Y|X=x)$进行求和。所以条件熵定义如下:

$\begin{aligned}H(Y|X)&=\displaystyle\sum\limits_{x}P(X=x)H(Y|X=x)\\  &=\sum\limits_{x} P(X=x)\sum\limits_{y}P(Y=y|X=x)\log \frac{1}{P(Y=y|X=x)}\\ &=-\sum\limits_{x} \sum\limits_{y}P(X=x)P(Y=y|X=x)\log P(Y=y|X=x)\\ &=- \sum\limits_{x,y}P(Y=y,X=x)\log P(Y=y|X=x)\end{aligned}$

  实际上定义的就是在所有$X$的条件下,$Y$的混乱度的平均值

互信息

  互信息用来度量两个随机变量之间的相互依赖程度,或者说度量能从一个随机变量中获取的另一个随机变量的信息量。又或者直观地理解为,当一个随机变量已知时,另一个随机变量的不确定性的减少程度。比如:

  1、明天是否下雨的信息熵。

  2、在知道今天是否有晚霞的情况下,明天是否下雨的信息熵。

  这二者信息熵之差就是明天下雨与今天的晚霞这两个变量之间的依赖程度。如果把明天是否下雨设为$X$,今天是否有晚霞设为$Y$,那么二者的互信息定义如下:

\begin{aligned} I(X;Y) &= H(X) - H(X|Y)\\ & = -\sum\limits_{x\in \mathbb{X}}P(x)\log P(x) - \sum\limits_{y\in \mathbb{Y}}P(y)H(X|y)\\ & = -\sum\limits_{x\in \mathbb{X}}P(x)\log P(x) + \sum\limits_{y\in \mathbb{Y}}P(y)\sum\limits_{x\in\mathbb{X}}P(x|y)\log P(x|y)\\ & = -\sum\limits_{x\in \mathbb{X}}P(x)\log P(x) + \sum\limits_{y\in \mathbb{Y}}\sum\limits_{x\in\mathbb{X}}P(x,y)\left[\log P(x,y) - \log(y)\right]\\ & = -\sum\limits_{x\in \mathbb{X}}P(x)\log P(x) + \sum\limits_{y\in \mathbb{Y}}\sum\limits_{x\in\mathbb{X}}P(x,y)\log P(x,y) - \sum\limits_{y\in \mathbb{Y}}P(y)\log P(y)\\ & = H(Y) - H(Y|X) \end{aligned}

  也就是$X$的信息熵减去$X$和$Y$的条件熵。从倒数第二式可以看出互信息是对称的,所以互信息值也等于$Y$的信息熵减去$X$和$Y$的条件熵。

联合熵

  联合熵也是用随机变量而不是分布来表示,定义如下:

\begin{aligned} H(X,Y) = -\sum\limits_x\sum\limits_yP(x,y)\log_2P(x,y) \end{aligned}

  衡量随机变量$X$和随机变量$Y$的联合概率密度的信息熵大小。

参考资料

  1. 信息量和信息熵的理解

  2. 详解机器学习中的熵、条件熵、相对熵和交叉熵

  3. 《Deep Learning》

信息熵、相对熵(KL散度)、交叉熵、条件熵、互信息、联合熵相关推荐

  1. 【Pytorch神经网络理论篇】 21 信息熵与互信息:联合熵+条件熵+交叉熵+相对熵/KL散度/信息散度+JS散度

    1 信息熵 熵 (Entropy),信息熵:常被用来作为一个系统的信息含量的量化指标,从而可以进一步用来作为系统方程优化的目标或者参数选择的判据. 1.1 信息熵的性质 单调性,发生概率越高的事件,其 ...

  2. 信息论复习笔记(1):信息熵、条件熵,联合熵,互信息、交叉熵,相对熵

    文章目录 1.1 信息和信息的测量 1.1.1 什么是信息 1.1.1 信息怎么表示 1.2 信息熵 1.3 条件熵和联合熵 The Chain Rule (Relationship between ...

  3. 信息量、信息熵、KL散度、交叉熵

    一.信息量 定义: 香农(C. E. Shannon)信息论应用概率来描述不确定性.信息是用不确定性的量度定义的.一个消息的可能性愈小,其信息愈多:而消息的可能性愈大,则其信息量愈少:事件出现的概率小 ...

  4. [ML]熵、KL散度、信息增益、互信息-学习笔记

    [ML]熵.KL散度.信息增益.互信息-学习笔记 https://segmentfault.com/a/1190000000641079 转载于:https://www.cnblogs.com/zha ...

  5. 决策树基础—比特化Bits,信息熵,条件熵,联合熵

    决策树基础-比特化Bits,信息熵,条件熵,联合熵 比特化(Bits) 一般化的比特化 信息熵 条件熵 联合熵 知道了决策树的直观理解,接下来了解一些决策树要用到了知识 比特化(Bits) 假设我现在 ...

  6. ML:图像数据、字符串数据等计算相似度常用的十种方法(余弦相似性、皮尔逊、闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离、马氏距离、汉明距离、编辑距离、杰卡德相似系数、相对熵/KL散度、Helli

    ML:图像数据.字符串数据等计算相似度常用的十种方法(余弦相似性.皮尔逊.闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离.马氏距离.汉明距离.编辑距离.杰卡德相似系数.相对熵/KL散度.Helli ...

  7. 关于信息熵 ,KL散度,交叉熵,一文读懂(bushi)。

    也是看其他大佬的说法.比如这个信息熵是什么? - 知乎 大家都知道 ,对于一个概率分布,信息熵的公式是:  表示发生的概率. 定义公式我就不再赘述,已经有很多了.确实和我们的印象比较符合,一件事概率越 ...

  8. 最大熵模型(Maximum Etropy)—— 熵,条件熵,联合熵,相对熵,互信息及其关系,最大熵模型。。...

    引入1:随机变量函数的分布 给定X的概率密度函数为fX(x), 若Y = aX, a是某正实数,求Y得概率密度函数fY(y). 解:令X的累积概率为FX(x), Y的累积概率为FY(y). 则 FY( ...

  9. 信息熵、条件熵、联合熵、互信息和条件互信息

    目录 1. 信息熵 2. 联合熵 3. 条件熵 4. 互信息 5. 条件互信息 6. 参考文章 1. 信息熵 信息熵是用于度量信息量大小的指标. 设 XXX 是一个随机变量,则 XXX 的信息熵定义为 ...

  10. 信息论(熵、条件熵、联合熵、互信息)

    熵 熵用于描述一个随机变量的不确定性的大小,熵越大说明该随机变量的不确定性增加,包含的信息量越大(越是确定的事件所含有的信息量越小,必然事件的熵为0). H(X)=−∑x∈Xp(x)logp(x)(1 ...

最新文章

  1. Andrew Ng机器学习(二):逻辑回归
  2. Vue.js 组件注册
  3. mysql json invalid json text_MySQL 5.7新增加的json数据类型
  4. linux 删除mysql_MySQL— Linux下解压包方式安装
  5. WPF Grid动态显示或隐藏一列的一种方法
  6. python查找两个数组中相同的元素_匹配两个numpy数组以找到相同的元素
  7. python while循环例题_【学习笔记】python:5for循环与while循环(上)
  8. 推荐一个站点:里面有很多不错的长文
  9. ZK在ZUL页面使用HTML
  10. dfs应用,迷宫地图解救小哈
  11. cocoa touch框架
  12. 如何打造数字原生企业?易捷行云EasyStack有话要说
  13. 显示杂谈(2)为啥选择gamma2.2
  14. java语言实现视频音频采集_详解js的视频和音频采集
  15. 小程序头像和昵称填写能力用底部弹框界面实现
  16. Python:有趣的猜数字小游戏
  17. python123判断火车票座位_【Python】实现12306余票监控
  18. java计算利息_java银行计算利息
  19. 抽烟行为监测识别系统 yolov5
  20. 计算机学院课程实验报告怎么写,大学计算机课实验报告

热门文章

  1. 笔记本电脑连接蓝牙耳机自动断开,或者显示已配对但过几秒自动断开,蓝牙耳机连接不上笔记本电脑
  2. 计算机SCI 源代码,计算机类SCI检索源刊.doc
  3. word2003如何设置护眼模式_在word中开启保护眼睛模式的详细教程
  4. Pdf格式怎么转化为word?这些软件堪称神器,却不为大众所知?
  5. amlogic调试系列(一)-芯片型号列表
  6. python 遍历函数用法_python中enumerate函数遍历元素用法分析
  7. xlsx 文件导入导出 结合luckysheet
  8. php 微信永久登录,php微信登录
  9. 《春风十里不如你》身体骚动的魔性,精神成长的传记
  10. 无意间发现一个好用的视频转换gif图片的开源框架