全文共 4351 字,23 幅图,

预计阅读时间 22 分钟。

本文被以下三份资料所启发,纯纯的致敬!

  • [Christopher Colah] - Visual Information Theory

  • [Aurélien Géron] - A Short Introduction to Entropy, Cross-Entropy and KL-Divergence

  • [Luis Serrano] - Shannon Entropy and Information Gain

这次还拿马赛克队的哈登来举例

1

主题:物理概念的熵

熵(entropy)是物理中的一个概念。如下图,水有三种状态:固态、液态和气态,分别以冰、水和水蒸气的形式存在。

它们具有不同的熵值:

  • 冰中的分子位置固定,处于稳定状态,因此冰具有低熵值

  • 水中的分子相对可以进行一些移动,因此水具有中熵值

  • 水蒸气中的分子几乎可以移动到任何地方,因此水蒸气具有高熵值

现在你大体有个感觉,越不稳定的东西具有的熵值越大

世界处处充满不确定性,从不确定到确定肯定是得到了额外的信息。从计算机专业术语来讲,比特(BIT, Binary Digit)是衡量信息的单位。

讲到这里小孩可能听不懂了,那么就先不严谨的认为,比特可用 0 或 1 代表,而

传递 1 比特信息 = 将不确定性减半

2

主题:等概率事件的信息量

从物理切换到体育,假设马赛克队的哈登每次进攻,50% 机会投篮,50% 的机会灌篮,如下图所示。

如果我预测他会投篮,或他会灌篮

=>

我都把两种情况减少到了一种情况,

=>

我将不确定性减半

=>

我发出 1 比特的信息

计算公式

log2(2) = log2(1/50%) = 1

咦?信息(1 比特)和概率(50%)联系起来了。

类比一下:

  • 2 种情况,每种发生的概率是 1/2 = 1/21,预测任意一种情况发出 1 比特信息

  • 4 种情况,每种发生的概率是 1/4 = 1/22,预测任意一种情况发出 2 比特信息

  • 8 种情况,每种发生的概率是 1/8 = 1/23,预测任意一种情况发出 3 比特信息

    ...

  • 2N 种情况,每种发生的概率是 1/2N,预测任意一种情况发出 N 比特信息

3

主题:不等概率事件的信息量

等概率发生的事件理解起来容易,那如果哈登每次进攻,75% 机会投篮,25% 的机会灌篮呢?如下图所示。

这时我们可以把它等价想象成有四个事件,3 个投篮事件和 1 个灌篮事件。

那么

  • 如果我预测投篮,相当于把 4 个事件的不确定性变成到 3 个事件的不确定性,放缩程度是 4/3,也正好是 1/75%,这时我发出了 log2(4/3) = 0.42 个比特信息

  • 如果我预测灌篮,相当于把 4 个事件的不确定性编程到 1 个事件的确定性,放缩程度是 4/1,也正好是 1/25%,这时我发出了 log2(4) = 2 个比特信息

如果平均来看,

75%×0.42 + 25%×20.81

我发出的信息量是 0.81 比特。

4

主题:熵 = 平均信息量

现在我们可以归纳一下,对于有 p 概率发生的事件,预测该事件发生等价于发出 log2(1/p) 比特信息,因为 log2(1/x) = - log2(x),我们可以将信息量写成

信息量 = - log2(p)

考虑到所有事件,平均信息量的公式为(期望公式)

平均信息量 = -∑i pi×log2(pi)

平均信息量就是信息论中的熵!用符号 H(p) 表示(粗体 p 代表 p1, p2, ..., pn),因此我们有

H(p) = -∑i pi×log2(pi)

5

主题:等概率事件编码

某天我在客户那边做项目,看不了 NBA 直播,只能通过在美国的朋友小明发短信直播,他会告诉我哈登每次进攻的手段:三分、上篮、灌篮、两分。

但是小明用二进制密码和我交流,我收到的短信是下面这样子的:

0 1 0 0 1 0 0 0

为了理解短信的真实含义,我需要一个解码表,如下:

这样,我就可以把小明传的密码分段,然后将每段密码在解码表中找到对应的动作,因此 01001000 就解码成上篮三分灌篮三分

假设哈登两分、三分、上篮、灌篮这四个动作是等概率发生,那面我们可以给编码长度(横轴)和动作频率(纵轴)做一个可视化,如下图。

图中彩色面积之和就表示每次短信说一个动作所需要的密码的期望长度,显然在这种情况下,期望长度为 2 比特。

6

主题:不等概率事件编码

如果哈登进攻手段(两分、三分、上篮、灌篮)不是等概率发生呢?我们知道哈登最喜欢投三分(1/2 时间),再就是上篮(1/4 时间),而投两分(1/8 时间)和上篮(1/8 时间)比较少。

每个动作我们还是用长度为 2 的密码编码时,那么最后得到的期望长度还是 2 比特,如下图所示。

你要知道从小明美国从发短信很贵啊,按编码长度收钱的,他可以做的更好一点么(即编码更短一些)?先看下图。

现在每次短信的期望密码长度变成了 1.75 比特,好过 2 比特。

其实我们做法很简单,就

  • 对于频率高的动作(三分),我们用短编码(0)

  • 对于频率低的动作(两分),我们用短编码(111)

因此上面上篮三分灌篮三分的编码为 10 0 111 100

问题来了,当解码的时候,我怎么把这一串编码拆分为对应到每个动作的一个个编码呢?如果每个动作的编码长度都一样,我那还可以等分,但现在每个每个动作的编码长度都不一样。

别问,问就是下节告诉你(尽管不情愿)!

7

主题:信息论

正式了解一下编码:

  • 长度为 1 的编码有 2 个:{0, 1}

  • 长度为 2 的编码有 4 = 22 个:{00, 01, 10, 11}

    ...

  • 长度为 N 的编码有 2N 个:{太多了,不想写了}

每次只要加 1 比特,编码种数就翻倍。如下图。

如果每个编码长度相等,那么一串编码就有唯一的解码方式。比如 01101110 就可以解码成 01-10-11-10,简单。

如果每个编码长度不相等,那么一串编码可以用同解码方法,比如 01101110 可以解码成以下两种(其实有很多种)

  • 0 - 11 - 01 - 110

  • 01 - 110 - 111 - 0

这样不就乱套了,必须采取限制,有个规则叫 prefix codes,就是任何编码都不能是其他编码的前缀。举例

  • 如果你用了 0,你就不能再用以 0 开头的其他编码,如 01, 001, 011 ...

  • 如果你用了 01,你就不能再用以 01 开头的其他编码,如 011, 011111 ...

从上图可知

  • 如果你用了 0,你失去了 1/2 的编码空间了

  • 如果你用了 01,你失去了 1/4 的编码空间了

这就是代价,这需要权衡,当你对一个动作用了短编码,你就需要对其他动作用个长编码。

下图就是一种编码,而且是最优编码(这个就不证明了,需要用到拉格朗日算子,目测没有小孩可以懂)。

这样我们就给每一个进攻动作一个密码:

  • 两分 - 0

  • 三分 - 10

  • 上篮 - 110

  • 灌篮 - 111

用上面一串密码来编码不会有任何歧义了。

8

主题:复习一下熵

现在我们知道最优编码长度就是熵(通常上面一节解释,希望现在可以秒懂熵的公式)。

无论怎么修改编码,如果一个随机事件的概率定下来了,那么用于交流该事件用的平均编码长度不会低于基于该事件分布的熵。

  • 如果很确定会发生什么事,那么就根本没有发送信息的必要。

  • 如果某件事有 2 种可能,概率分别为 50%,那么只需要发送 1 比特。

  • 如果有 64 种可能,每种发生的可能性都一样,那么平均需要 6 比特。

实际上,如果这些可能性中,每件事发生的概率相对集中,那么所需要的平均编码长度就更短,而如果概率相对分散,那么需要的平均编码长度就更长。均匀分布需要的平均编码长度最长。

9

主题:交叉熵

小明通过研究哈登的历史进攻动作发生频率(三分 1/2,上篮 1/4,灌篮和两分 1/8),做了一套编码(定义为哈登编码),每次传递一次信息只用 1.75 比特。

现在我又想让小明告诉我威少的下一个进攻动作,还可以用哈登编码来传递信息吗?威少的历史进攻动作发生频率如下:

  • 三分 1/8

  • 上篮 1/2

  • 灌篮 1/4

  • 二分 1/8

下图对比一下哈登和威少的进攻动作频率图。

这样,如果用哈登编码来发送威少动作分布的信息,得到信息平均编码长度就叫做交叉熵

反过来,如果用威少编码来发送哈登动作分布的信息,得到信息平均编码长度就也叫做交叉熵

正规定义:使用专门为另一个分布制作的密码表来发送某个分布中事件的信息,此时信息的平均编码长度定义为交叉熵(cross-entropy)。

把哈登动作分布称为 p 分布,把威少动作分布称为 q 分布,那么 p 分布对 q 分布的交叉熵公式如下

而 q 分布对 p 分布的交叉熵公式如下(把 p 和 q 位置反过来)

熵和交叉熵的总结在下图。

根据上面公式计算各种熵和交叉熵,得到

  • 用哈登编码传递哈登进攻信息 H(p) = 1.75 比特

  • 用哈登编码传递威少进攻信息 Hp(q) = 2.25 比特

  • 用威少编码传递威少进攻信息 H(q) = 1.75 比特

  • 用威少编码传递哈登进攻信息 Hq(p) = 2.375 比特

我们发现两个规律:

  1. 小于交叉熵(符合熵是最优编码的结论)

    1. H(p) = Hp(p)< Hq(p)

    2. H(q) = Hq(q) < Hp(q)

  2. 交叉熵不对称(不直观,接受吧少年)

  3. Hq(p) ≠ Hp(q)

熵比交叉熵要小,那两者之间的差距是什么?看下节。

10

主题:KL 散度

Kullback-Leibler 散度(KL 散度)是熵与交叉熵之间的差值。称之为散度而不是距离是因为距离是对称的,而散度可以是不对称的。

回到我们的场景,把哈登动作分布称为 p 分布,把威少动作分布称为 q 分布,那么 p 分布对 q 分布的 KL 散度定义为

而 q 分布对 p 分布的 KL 散度定义为

上面 log2(q(x)/p(x)) 或 log2(p(x)/q(x)) 实际上是描述编码每个进攻动作时两种不同的编码之间的长度差异。

分布 p 和 q 差别越大,那么之间的 KL 散度 KLq(p) 和 KLp(q) 也就越大。

总结

最后看看湖人队的麦基,他进攻手段只有灌篮,如下图所示。

我不需要做什么预测(不需要发出任何信息),因此麦基 100% 会灌篮,根据公式我们有

H(p) = - 0×log20 - 1×log21 = 0

我们知道 log21 = 0,而且需要定义 log20 = 0。

如果某件事本身越不确定,而当你知道发生了什么时,你得到的信息也就越多。


交叉熵,即使用针对另一分布制作的密码表对某个分布内的事件进行通讯时的长度,其组成分为两部分:

  1. 使用针对本分布密码表进行通讯时所需的最短平均编码长度,即

  2. 因使用针对其他分布的密码表而导致的多出的部分,即 KL 散度

数学表达式如下:

交叉熵p(q) = 熵(q) + 散度p(q)

交叉熵q(p) = 熵(p) + 散度q(p)


最后提一下机器学习用的熵公式里面的对数都是以 e 为底,即 ln(),它和以 2 为底的对数只差一个大于零的常数项,我们有

ln(x) = log2(x) / log2e = c×log2(x)

因此在做极值问题时,不会对结果有什么影响。

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(pdf更新到25集)备注:加入本站微信群或者qq群,请回复“加群”获取一折本站知识星球优惠券,请回复“知识星球”

喜欢文章,点个在看

AI入门:通俗讲解熵、交叉熵和 KL 散度相关推荐

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

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

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

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

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

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

  4. 交叉熵损失函数优缺点_如何简单通俗的理解交叉熵损失函数?

    前面小编给大家简单介绍过损失函数,今天给大家继续分享交叉熵损失函数,直接来看干货吧. 一.交叉熵损失函数概念 交叉熵损失函数CrossEntropy Loss,是分类问题中经常使用的一种损失函数.公式 ...

  5. 熵,交叉熵,散度理解较为清晰

    20210511 https://blog.csdn.net/qq_35455503/article/details/105714287 交叉熵和散度 自己给自己编码肯定是最小的 其他的编码都会比这个 ...

  6. 一文理清楚:熵,条件熵,KL散度(相对熵),交叉熵,联合熵,信息增益,信息增益比,GINI系数

    熵 熵是表示随机变量不确定性的度量. 设 X X X是一个有N个取值有限的随机变量,其概率分布为: P ( X = i ) = p i , i = 1 , 2... N P(X=i)=p_i , i= ...

  7. 信息论常见概念:熵、互信息、KL散度和信息增益

    文章目录 信息论在机器学习中的常见概念 1. 信息量 2. 熵 3. 联合熵 4. 条件熵 5. 相对熵 6. 互信息 7. 信息增益 公式与推导 信息论在机器学习中的常见概念 信息的不确定度表示. ...

  8. NLP入门 | 通俗讲解Subword Models

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:芙蕖,Datawhale优秀学习者,东北石油大学 对于英文来说,文 ...

  9. 熵、交叉熵、相对熵(KL 散度)意义及其关系

  10. AI理论知识基础(26)-相对熵,KL散度

    相对熵(relative entropy),又被称为 KL散度.Kullback-Leibler散度(Kullback-Leibler divergence)或信息散度(information div ...

最新文章

  1. Linux服务器安装python3.6.1 运行爬虫
  2. Ubuntu12.04Beta版我在用的软件
  3. 网页 html 全图片排版,HTML5-网页排版划分
  4. OpenJudge 2796: 数字求和
  5. 如何查询Linux内核版本
  6. Android应用性能优化之优化列表头像过度绘制[一]
  7. 顺序队列为空的条件_C语言实现顺序队列
  8. 构建LVS+Keepalived高可用群集
  9. centos7 RPM包之rpm命令
  10. python实现 stft_Python中的可逆STFT和ISTFT
  11. buuctf XCTF October 2019 Twice SQL Injection 二次注入原理+题解
  12. kiv8测量方法_室内门标准及测量方法
  13. Centos7 Samba Win10配置解决问题【全攻略】:你没有权限访问,请与管理员联系。。。
  14. MTK机器原始OTA更新方法
  15. Q:python编码
  16. 【原创】Unity3D 模仿《魔兽世界》的第三人称角色控制器
  17. Factory Method vs Abstract Factory
  18. 计算机的变化作文,我的变化作文
  19. matlab mcr安装图标,MCR 安装文档--matlab 2010b
  20. iPhone以旧换新折抵价 苹果XS用户一眨眼亏了550元

热门文章

  1. 用户故事与敏捷方法阅读笔记03
  2. 团队开发项目--校园知网 nabcd 需求分析
  3. 百度API地图的标注不居中显示,而显示在左上角
  4. B计划 第四周(开学第一周)
  5. asp.net mvc cookie超时返回登录页面问题
  6. Python练习-基于socket的FTPServer
  7. Linux及安全课程——相关链接总结
  8. SQL2000: MMC 不能打开文件
  9. 学习笔记:linuxsocket通信基础
  10. 数据结构一:链表(循环链表)