转载自:https://charlesliuyx.github.io/2017/09/11/%E4%BB%80%E4%B9%88%E6%98%AF%E4%BF%A1%E6%81%AF%E7%86%B5%E3%80%81%E4%BA%A4%E5%8F%89%E7%86%B5%E5%92%8C%E7%9B%B8%E5%AF%B9%E7%86%B5/

【阅读时间】10min - 13min
【内容简介】使用一个现实中直观的例子详解信息熵、交叉熵及相对熵的核心概念,读完后,希望能帮助你建立起这三个概念的固有直觉,不再疑惑

要完成题目的最终解释,必须从这个神奇的概念开始讲起

什么是熵 - Entropy

词源 - 最初来源于热力学

Entropy来源于希腊语,原意:内向,即:一个系统不受外部干扰时往内部稳定状态发展的特性。定义的其实是一个热力学的系统变化的趋势

ΔS=QT=热量温度(1-1)(1-1)ΔS=QT=热量温度
1923年,德国科学家普朗克来中国讲学用到entropy这个词,胡刚复教授看到这个公式,创造了“熵”字,因为“火”和热量有关,定义式又是热量比温度,相当自洽

信息论

信息论中,熵是接受的每条消息中包含的信息的平均值。又被称为信息熵、信源熵、平均自信息量。可以被理解为不确定性的度量,熵越大,信源的分布越随机

1948年,由克劳德·爱尔伍德·香农将热力学中的熵引入信息论,所以也叫做:香农熵

生态学

在生态学中,熵表示生物多样性的指标

广义的定义

熵是描述一个系统的无序程度的变量;同样的表述还有,熵是系统混乱度的度量,一切自发的不可逆过程都是从有序无序的变化过程,向熵增的方向进行

我们接下来要讨论的信息熵 交叉熵 相对熵 更多的着眼于信息论的角度,换句话说,更加关注概率和不确定性

什么是信息熵、交叉熵、相对熵

可以将对熵的理解从简单到复杂依次分解成三个层次来理解

如何衡量不确定事物的发生?

数学是一种工具,使用数学来描述现实中的各种事物是一个数学家本质的工作目标。而现实中不确定性,或者说不太确定是否会发生的事件必须要找到一种抽象的符号化公式化的手段去表示。

比如天气情况,假设可能有【阴、晴、雨、雪】四种情况,使用概率符号表示 P=[p1,p2,p3,p4]P=[p1,p2,p3,p4],接下来自然而然的思考:那么,什么条件(情况)会影响这些值呢?

假设有一下三种描述,或者说条件

  • 今天是晴天,所以明天可能也是晴天
  • 天气预报说明天下雨
  • 9月12日苹果公司举行发布会

那么这三个描述中,很明显,第二条的信息量更大,因为它可以使得不确定事件发生在 p3p3 的概率更大。类似的,第三条对判断毫无帮助,信息量为0。注意,信息量不等于信息熵,如果是这样,那么直接用概率来衡量就可以了,不需要在重新定义一个概念

其实信息熵是信息量的期望(均值),它不是针对每条信息,而是针对整个不确定性结果集而言,信息熵越大,事件不确定性就越大。单条信息只能从某种程度上影响结果集概率的分布

考虑到信息冗余,信息量存储下来究竟需要多大空间

我们已经有了 P=[p1,p2,p3,p4]P=[p1,p2,p3,p4] 来表示天气情况,那么用计算机来存储每天的天气,那该如何编码呢?

常见的做法是,4个不同的信息,只需要2bit就能做到,00 01 11 10,假设我们在南方城市,肯定要把00编码成雨天,这样可以节省存储空间,至于为什么能节省存储空间,这就要讨论编码方式。可以简单的理解为,如果一串信息一串0很多,可以通过编码压缩这一群0来节省空间

使用一个公式来计算记录n天数据需要的存储空间:Sn

Sn=n×4∑i=1(Pi×F(Pi))(2-1)(2-1)Sn=n×∑i=14(Pi×F(Pi))

PiPi 表示第i个事件发生的概率;F(Pi)F(Pi) 表示存储空间的存储因子

如何确定这个函数 F(Pi)F(Pi) 的形式?考虑这个函数需要满足条件:概率大的事件对应小的存储空间,说人话,就是成反比,你的数学功底不错的话,脑海中第一反应出来满足这个条件最直观是反比例函数,说人话, 1Pi1Pi 。

之后我们发现这个公式中有个除法非常讨厌,我们想着去掉它,脑海中第一反应出来的满足这个条件的一定是取对数,至于为什么取对数,那说道就很多,取对数是指数的逆操作

  • 对数操作可以让原本不符合正态分布的模型符合正态分布,比如随着模型自变量的增加,因变量的方差也增大的模型取对数后会更加稳定
  • 取对数操作可以rescale(原谅我,这里思前想后还是感觉一个英文单词更加生动)其实本质来说都是因为第一点。说人话版本,人不喜欢乘法,对数可以把乘法变加法

那么我们结束清楚之后,就很容易就可以定义出
F(Pi)=loga(1Pi)(2-2)(2-2)F(Pi)=loga⁡(1Pi)
a作为底数,可以取2(处理2bit数据),10(万金油),e(处理正态分布相关的数据)

结合对信息熵的定义(第一节最后的粗体字)然后把(2-2)带入(2-1),就会发现,哦!看着有点眼熟啊
H(P)=∑iP(i)loga1P(i)=−∑iP(i)logaP(i)(2-3)(2-3)H(P)=∑iP(i)loga1P(i)=−∑iP(i)logaP(i)
这这这,就是信息熵的定义式吧?总结就发现,信息熵其实从某种意义上反映了信息量存储下来需要多少存储空间

总结为:根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性(比如编码),而这个代价的大小就是信息熵

理解基于信息熵的交叉熵和相对熵

因为是我们用2bit模式存储,为了计算方便,这里取a = 2

先计算刚刚有关天气问题 P=[p1,p2,p3,p4]P=[p1,p2,p3,p4] :【阴、晴、雨、雪】的信息熵,假设我们对天气的概率一无所知,那么四种天气的发生概率为等概率(服从平均分布),即 P=[14,14,14,14]P=[14,14,14,14] ,带入公式2-3,得到 H(P)=2H(P)=2 ,存储信息需要的空间 Sn=2nSn=2n

继续思考,假设我们考虑天气的城市是一个地处中国南方雨季的城市,那么阴天和雨天的概率从经验角度(先验概率)来看大于晴天雪天,把这种分布记为 Q=[14,18,12,18]Q=[14,18,12,18],带入公式2-3,信息熵 H(Q)=1.75H(Q)=1.75,存储信息需要的空间 Sn=1.75nSn=1.75n

直观的来考虑上面不同的两种情况,明显当事件的不确定性变小时候,我们可以改变存储策略(00 雨天 01 阴天),再通过编码,节省存储空间。信息熵的大小就是用来度量这个不确定大小的

关于编码的方式,这里提一下,哈夫曼树与哈夫曼编码 ,有兴趣的读者可以去研究一下

交叉熵的由来

我们把这个问题再扩展一下

天气【阴、晴、雨、雪】 信息熵
P=[14,14,14,14]P=[14,14,14,14] H(P)=2H(P)=2
Q=[14,18,12,18]Q=[14,18,12,18] H(Q)=1.75H(Q)=1.75
Z=[18,116,34,116]Z=[18,116,34,116] H(Z)=78+log243=1.29H(Z)=78+log2⁡43=1.29
W=[0,0,1,0]W=[0,0,1,0] H(W)=0H(W)=0

接下来,假定在确定性更大的概率分布情况下,用更不确定的存储策略来计算,比如使用 PP 的概率乘上 QQ 的存储因子,套用公式2-3
H(P,Q)=∑iP(i)loga1Q(i)(3-1)(3-1)H(P,Q)=∑iP(i)loga⁡1Q(i)
顾名思义,看公式3-1的形式,就不难发现,这就是所谓的交叉熵,计算可得

交叉熵 P Q Z W
P H(P,P)=2H(P,P)=2 H(P,Q)=2.25H(P,Q)=2.25 H(P,Z)=114+14log243=2.85H(P,Z)=114+14log2⁡43=2.85 +inf
Q H(Q,P)=2H(Q,P)=2 H(Q,Q)=1.75H(Q,Q)=1.75 H(Q,Z)=74+12log243=1.96H(Q,Z)=74+12log2⁡43=1.96 +inf
Z H(Z,P)=2H(Z,P)=2 H(Z,Q)=1.375H(Z,Q)=1.375 H(Z,Z)=78+log243=1.29H(Z,Z)=78+log2⁡43=1.29 +inf
W H(W,P)=2H(W,P)=2 H(W,Q)=1H(W,Q)=1 H(W,Z)=log243=0.415H(W,Z)=log2⁡43=0.415 H(W,W)=0H(W,W)=0

上表直观的展现的交叉熵的数值表现,PQZW依次不确定性越来越低,极端情况的W不确定性为0,即是确定的

交叉熵,用来高衡量在给定的真实分布下,使用非真实分布指定的策略消除系统的不确定性所需要付出努力的大小

总的来说,我们的目的是:让熵尽可能小,即存储空间小(消除系统的不确定的努力小)。(不要问为什么想要存储空间小,这都是钱更是效率和时间)

通过上表我们发现一个规律,为了让熵小,解决方案是:是用确定性更大的概率乘以确定性更小的存储因子,比如不确定性越大的概率分布,如P概率分布,其信息熵越大;基于同一真实(确定性)分布的情况下,套用不确定性更大的存储因子,如P的存储因子,得出的交叉熵越大

在机器学习中,即用测试结果集(样本结果集)的概率乘以训练出来的结果集存储因子,而在不断的训练过程中,我们要做的就是通过不断调整参数,降低这个值,使得模型更加的稳定,不确定性越来越小,即突出需要表征的数值的特点(白话文也就是分类的效果更好)

相对熵的由来

有了信息熵和交叉熵后,相对熵是用来衡量两个概率分布之间的差异,记为 D(P||Q)=H(P,Q)−H(P)D(P||Q)=H(P,Q)−H(P),也称之为KL散度
DKL(P||Q)=∑iP(i)logaP(i)Q(i)DKL(P||Q)=∑iP(i)loga⁡P(i)Q(i)
当 P(i)=Q(i)P(i)=Q(i) 的时候,该值为0,深度学习过程也是一个降低该值的过程,该值越低,训练出来的概率Q越接近样本集概率P,即越准确,或者可以理解为相对熵一把标尺,用来衡量两个函数是否相似,一样就是0,当然,这种解释十分牵强,但是更直观

关于底数 aa 的选择问题,其实和概率分布的情况是分不开的。比如使用2进制编码,那么所能表示的不同情况的数量,∑Ni=02i∑i=0N2i,我们知道,指数函数变化率变化很大,不好分析,稳定性差。对数操作可以乘法变加法,指数放下来,是十分好用的数学工具(其实是一种变换域的思想,这种思想在整个信息论,统计学中处处可见)

比如使用 ln()ln() 的时候,对应的分布,其实是正态分布,很好理解,正太分布的底数是 ee

Last updated: 2017-10-07 01:02:53
https://charlesliuyx.github.io/2017/09/11/什么是信息熵、交叉熵和相对熵/

【直观详解】信息熵、交叉熵和相对熵相关推荐

  1. 【知识建设】信息熵、条件熵、互信息、交叉熵及相对熵(KL散度)

    一.信息熵 1. 定义 衡量一个随机变量 X X X的信息量,用 H H H表示 根据这个定义,这应该是个不确定的值(随机变量是变化的),而数学上使用期望来将这种不确定性量化: H = ∑ x ∈ X ...

  2. 信息熵/交叉熵/相对熵

    参考致敬: 如何通俗的解释交叉熵与相对熵? https://www.zhihu.com/question/41252833 一文彻底搞懂信息熵.相对熵.交叉熵和条件熵(含例子) https://blo ...

  3. 熵、联和熵与条件熵、交叉熵与相对熵是什么呢?来这里有详细解读!

    熵是一个很常见的名词,在物理上有重要的评估意义,自然语言处理的预备知识中,熵作为信息论的基本和重点知识,在这里我来记录一下学习的总结,并以此与大家分享. 信息论基本知识 1.熵 2.联和熵与条件熵 3 ...

  4. 熵,信息熵,香农熵,微分熵,交叉熵,相对熵

    2019-07-13 https://blog.csdn.net/landstream/article/details/82383503 https://blog.csdn.net/pipisorry ...

  5. 《信息熵,联合熵,条件熵,交叉熵,相对熵》

    一:自信息 二:信息熵 三:联合熵 四:条件熵 五:交叉熵 六:相对熵(KL散度) 七:总结

  6. 理解熵(信息熵,交叉熵,相对熵)

    Highlights: 1)信息熵:编码方案完美时,最短平均编码长度的是多少. 2)交叉熵:编码方案不一定完美时(由于对概率分布的估计不一定正确),平均编码长度的是多少. 平均编码长度 = 最短平均编 ...

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

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

  8. matlab图像信息熵交叉熵,【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)...

    首先先强烈推荐一篇外文博客Visual Information Theory这个博客的博主colah是个著名的计算机知识科普达人,以前很是著名的那篇LSTM讲解的文章也是他写的.这篇文章详细讲解了信息 ...

  9. 通俗的解释交叉熵与相对熵

    一.交叉熵 (1):离散表示: (2):连续表示: 两项中 H(p)是 p的信息熵,后者是p和q的相对熵: 二.相对熵 (1):离散表示: (2):连续表示: 三.二者关系 转载于:https://w ...

  10. 交叉熵、相对熵(KL散度)、JS散度和Wasserstein距离(推土机距离)

    目录: 信息量 熵 相对熵(KL散度) 交叉熵 JS散度 推土机理论 Wasserstein距离 WGAN中对JS散度,KL散度和推土机距离的描述 信息量: 任何事件都会承载着一定的信息量,包括已经发 ...

最新文章

  1. 基于约束的SQL攻击
  2. Java数组,Wat!
  3. GitHub#C#:在终端里面显示一个UI窗口(TerminalGfx)
  4. panel中html怎么写,在Panel上绘制Html表?
  5. 你敲键盘的声音,出卖了你 | 附开源代码
  6. 自称世界上最权威监控软件FlexiSpy被黑删库,怎么做到的?
  7. 数据库中select 查询详解
  8. vscode下载C/C++手动下载 VSIX安装
  9. 东南大学计算机考研面试题,东南大学复试常问问题今天的模拟面试总结
  10. 计算机用固态硬盘无法启动不了,windows10系统安装固态硬盘开启AHCI后开不了机怎么办...
  11. Java~大厂面试八股文~强烈推荐视频
  12. 7.awd不死马权限维持及变种
  13. C# - Entity Framework 对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性
  14. 基于springboot实现学校线上教学平台管理系统【源码+论文】
  15. 杭电OJ 1034(C++)
  16. internet信息服务器连接怎么办,internet已连接但无法上网怎么办
  17. 软件测试里面关于网络抓包的学习笔记思考
  18. Intellij IDEA免费版方法 (吃土学生最佳选择!!)
  19. lisp类似常青藤菜单_盘点10大影响力编程语言,你学对了吗?
  20. thunderbird mail config

热门文章

  1. Selenium-WebDriver驱动对照表
  2. 第七章读书笔记《深入理解计算机系统》
  3. jQuery jQuery on()方法
  4. 教程-脚本之Python
  5. SQLSERVER2005的安装目录结构(上)
  6. 数据库事务日志已满的解决办法
  7. DataGrid + JS 的應用示例
  8. 通过IP获取相应所在地的地址
  9. SSMS 18.0运行时闪退
  10. Java面试题超详细讲解系列之八【SQL优化篇】