相对熵与交叉熵_详解机器学习中的熵、条件熵、相对熵、交叉熵

目录

  • 信息熵

  • 条件熵

  • 相对熵

  • 交叉熵

  • 总结

一  信息熵 (information entropy)

熵 (entropy) 这一词最初来源于热力学。1948年,克劳德·爱尔伍德·香农将热力学中的熵引入信息论,所以也被称为香农熵 (Shannon entropy),信息熵 (information entropy)。本文只讨论信息熵。首先,我们先来理解一下信息这个概念。信息是一个很抽象的概念,百度百科将它定义为:指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。那信息可以被量化么?可以的!香农提出的“信息熵”概念解决了这一问题。

一条信息的信息量大小和它的不确定性有直接的关系。我们需要搞清楚一件非常非常不确定的事,或者是我们一无所知的事,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了解,我们就不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少。比如,有人说广东下雪了。对于这句话,我们是十分不确定的。因为广东几十年来下雪的次数寥寥无几。为了搞清楚,我们就要去看天气预报,新闻,询问在广东的朋友,而这就需要大量的信息,信息熵很高。再比如,中国男足进军2022年卡塔尔世界杯决赛圈。对于这句话,因为确定性很高,几乎不需要引入信息,信息熵很低。

考虑一个离散的随机变量 x,由上面两个例子可知,信息的量度应该依赖于概率分布 p(x),因此我们想要寻找一个函数 I(x),它是概率 p(x) 的单调函数,表达了信息的内容。怎么寻找呢?如果我们有两个不相关的事件 x和 y,那么观察两个事件同时发生时获得的信息量应该等于观察到事件各自发生时获得的信息之和,即:I(x,y)=I(x)+I(y)。

因为两个事件是独立不相关的,因此 p(x,y)=p(x)p(y)。根据这两个关系,很容易看出 I(x)一定与 p(x) 的对数有关 (因为对数的运算法则是 loga(mn)=logam+logan因此,我们有I(x)=−logp(x)。其中负号是用来保证信息量是正数或者零而 log函数基的选择是任意的(信息论中基常常选择为2,因此信息的单位为比特bits;而机器学习中基常常选择为自然常数,因此单位常常被称为奈特nats)。I(x)也被称为随机变量 x的自信息 (self-information),描述的是随机变量的某个事件发生所带来的信息量。图像如图:

ddfa54d408a8b3d7b96a5df31ab0916b.png

最后,我们正式引出信息熵。现在假设一个发送者想传送一个随机变量的值给接收者。那么在这个过程中,他们传输的平均信息量可以通过求 I(x)=−logp(x)关于概率分布 p(x) 的期望得到,即:

19c661a7cdb9773caa604a22638766eb.png

H(X) 就被称为随机变量 x的,它是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。从公式可得,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大,且 0≤H(X)≤logn。稍后证明。将一维随机变量分布推广到多维随机变量分布,则其联合熵 (Joint entropy) 为:

1ded319bef90b643e9b4091e9592b23e.png

(注意:熵只依赖于随机变量的分布,与随机变量取值无关,所以也可以将 X的熵记作 H(p);令0log0=0(因为某个取值概率可能为0))

那么这些定义有着什么样的性质呢?考虑一个随机变量 x。这个随机变量有4种可能的状态,每个状态都是等可能的。为了把 x 的值传给接收者,我们需要传输2比特的消息。H(X)=−4×(1/4)log2(1/4)=2 bits。现在考虑一个具有4种可能的状态 {a,b,c,d} 的随机变量,每个状态各自的概率为 (1/2,1/4,1/8,1/8)。这种情形下的熵为:

69990099d197b3ca6c78340221fd11b4.png

我们可以看到,非均匀分布比均匀分布的熵要小。现在让我们考虑如何把变量状态的类别传递给接收者。与之前一样,我们可以使用一个2比特的数字来完成这件事情。然而,我们可以利用非均匀分布这个特点,使用更短的编码来描述更可能的事件,使用更长的编码来描述不太可能的事件。我们希望这样做能够得到一个更短的平均编码长度。我们可以使用下面的编码串(哈夫曼编码):0、10、110、111来表示状态 {a,b,c,d}。传输的编码的平均长度就是:

53a4db05ceeb5a9a12bec4e6cf12778d.png

这个值与上方的随机变量的熵相等。熵和最短编码长度的这种关系是一种普遍的情形。Shannon 编码定理表明熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。因此,信息熵可以应用在数据压缩方面。可参考这篇文章讲的很详细了,我就不赘述了。(http://www.ruanyifeng.com/blog/2014/09/information-entropy.html)

证明0≤H(X)≤logn

利用拉格朗日乘子法证明:

因为 p(1)+p(2)+⋯+p(n)=1

所以有:

目标函数:f(p(1),p(2),…,p(n))=(p(1)logp(1)+p(2)logp(2)++p(n)logp(n))

约束条件:g(p(1),p(2),…,p(n),λ)=p(1)+p(2)+⋯+p(n)−1=0

1) 定义拉格朗日函数:

L(p(1),p(2),…,p(n),λ)=(p(1)logp(1)+p(2)logp(2)++p(n)logp(n))+λ(p(1)+p(2)++p(n)1)

2) L(p(1),p(2),…,p(n),λ)分别对 p(1),p(2),p(n),λ求偏导数,令偏导数为 0:

λ−log(e⋅p(1))=0

λ−log(e⋅p(2))=0

……

λ−log(e⋅p(n))=0

p(1)+p(2)+⋯+p(n)−1=0

3) 求出 p(1),p(2),…,p(n)值:解方程得,p(1)=p(2)=⋯=p(n)=1/n代入 f(p(1),p(2),…,p(n)) 中得到目标函数的极值为:

1c77f5b68430f130ec811ad048d01d9c.png

由此可证 logn为最大值。

   条件熵 (Conditional entropy)

条件熵 H(Y|X)表示在已知随机变量 X 的条件下随机变量 Y 的不确定性。条件熵 H(Y|X)定义为 X 给定条件下 Y 的条件概率分布的熵对 X 的数学期望:

834e949529c225bf0cb8a7eb8b62c7cc.png

条件熵 H(Y|X)相当于联合熵 H(X,Y)减去单独的熵 H(X),即H(Y|X)=H(X,Y)−H(X),证明如下:

771b0776d95bf02fedf688504376b16e.png

举个例子,比如环境温度是低还是高,和我穿短袖还是外套这两个事件可以组成联合概率分布 H(X,Y),因为两个事件加起来的信息量肯定是大于单一事件的信息量的。假设 H(X)对应着今天环境温度的信息量,由于今天环境温度和今天我穿什么衣服这两个事件并不是独立分布的,所以在已知今天环境温度的情况下,我穿什么衣服的信息量或者说不确定性是被减少了。当已知 H(X) 这个信息量的时候,H(X,Y) 剩下的信息量就是条件熵:H(Y|X)=H(X,Y)−H(X)

因此,可以这样理解,描述 X 和 Y 所需的信息是描述 X 自己所需的信息,加上给定 X的条件下具体化  Y 所需的额外信息。关于条件熵的例子可以看这篇文章,讲得很详细。(https://zhuanlan.zhihu.com/p/26551798)

三   相对熵 (Relative entropy),也称KL散度 (Kullback–Leibler divergence)

设 p(x)、q(x) 是 离散随机变量 X 中取值的两个概率分布,则 p 对 q 的相对熵是:

ddbaf37ed0569d797b9956e903fa865e.png

性质:

  •  如果 p(x) 和 q(x) 两个分布相同,那么相对熵等于0

  •  DKL(p||q)≠DKL(q||p),相对熵具有不对称性。大家可以举个简单例子算一下。

  •  DKL(p||q)≥0证明如下:(用Jensen不等式https://en.wikipedia.org/wiki/Jensen%27s_inequality)

f5d7b4df9bfa0a94d02d066684fd12f0.png

 因为:

d2a0f0f04d35af8c16edbeb11357c2f7.png

所以:

DKL(p||q)≥0

 总结:相对熵可以用来衡量两个概率分布之间的差异,上面公式的意义就是求 p 与 q 之间的对数差在 p 上的期望值。

四  交叉熵 (Cross entropy)

现在有关于样本集的两个概率分布 p(x) 和 q(x),其中 p(x) 为真实分布, q(x)非真实分布。如果用真实分布 p(x) 来衡量识别一个样本所需要编码长度的期望(平均编码长度)为:

346278e7ba84b70685732e892b6e17bc.png

如果使用非真实分布 q(x) 来表示来自真实分布 p(x) 的平均编码长度,则是:

9874d3b58a839e0639fd09bca72f6729.png

(因为用 q(x) 来编码的样本来自于分布 q(x) ,所以 H(p,q) 中的概率是 p(x))。此时就将 H(p,q) 称之为交叉熵。举个例子。考虑一个随机变量 x,真实分布p(x)=(1/2,1/4,1/8,1/8),非真实分布 q(x)=(1/4,1/4,1/4,1/4), 则H(p)=1.75 bits(最短平均码长),交叉熵:

43271b4473fbcd5da2cc6a5ec6d816cc.png

由此可以看出根据非真实分布 q(x) 得到的平均码长大于根据真实分布 p(x) 得到的平均码长。

我们再化简一下相对熵的公式。

ab6e635a49c06d38a2feefbc8c081785.png

有没有发现什么?

熵的公式:

 1c97d7fd1886d99e57095ffa338d7a27.png

交叉熵的公式:

badbe7d9630423bcbff2a623f41b5d7f.png

所以有:DKL(p||q)=H(p,q)−H(p)(当用非真实分布 q(x) 得到的平均码长比真实分布 p(x) 得到的平均码长多出的比特数就是相对熵)

又因为 DKL(p||q)≥0所以 H(p,q)≥H(p)(当 p(x)=q(x) 时取等号,此时交叉熵等于信息熵)并且当 H(p) 为常量时(注:在机器学习中,训练数据分布是固定的)最小化相对熵 DKL(p||q) 等价于最小化交叉熵 H(p,q) 也等价于最大化似然估计(具体参考Deep Learning 5.5)。在机器学习中,我们希望训练数据上模型学到的分布 P(model) 和真实数据的分布  P(real) 越接近越好所以我们可以使其相对熵最小。但是我们没有真实数据的分布,所以只能希望模型学到的分布 P(model) 和训练数据的分布 P(train) 尽量相同。假设训练数据是从总体中独立同分布采样的,那么我们可以通过最小化训练数据的经验误差来降低模型的泛化误差。即:

  • 希望学到的模型的分布和真实分布一致,P(model)≃P(real)

  • 但是真实分布不可知,假设训练数据是从真实数据中独立同分布采样的P(train)≃P(real)

  • 因此,我们希望学到的模型分布至少和训练数据的分布一致,P(train)≃P(model)

根据之前的描述,最小化训练数据上的分布  P(train)与最小化模型分布 P(model) 的差异等价于最小化相对熵,即 DKL(P(train)||P(model))。此时, P(train)就是DKL(p||q) 中的 p,即真实分布,P(model)就是 q。又因训练数据的分布 p 是给定的,所以求  DKL(p||q) 等价求 H(p,q)。得证,交叉熵可以用来计算学习模型分布与训练分布之间的差异。交叉熵广泛用于逻辑回归的Sigmoid和Softmax函数中作为损失函数使用。这篇文章先不说了。

5  总结

  • 信息熵是衡量随机变量分布的混乱程度,是随机分布各事件发生的信息量的期望值,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大;信息熵推广到多维领域,则可得到联合信息熵;条件熵表示的是在 X 给定条件下,Y 的条件概率分布的熵对 X的期望。

  • 相对熵可以用来衡量两个概率分布之间的差异。

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

或者:

  • 信息熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。

  • 相对熵是指用 q 来表示分布 p  额外需要的编码长度。

  • 交叉熵是指用分布 q 来表示本来表示分布 p 的平均编码长度。

1bc4f8bc9d33547e0db8950c400d68dd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《CDN 之我见》原理篇——CDN的由来与调度

CDN是将源站内容分发至全国所有的节点,从而缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性的技术。它能够有效解决网络带宽小、用户访问量大、网点分布不均等问题。 为了让大家更全面的了解CDN的原理、调度、缓存和安全等关键技术点&…

java实现apriori算法_各种排序算法的分析及java实现(一)

阅读本文约需要7分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了下用Navicat for Mysql导入.sql文件的相关知识,今天跟大家分享在 各种排序算法的分…

超越杭州、北京居首、广州晋级第一梯队……国内城市算力大起底!

戳蓝字“CSDN云计算”关注我们哦!近日,在2019中国人工智能计算大会(AICC2019)上,IDC与浪潮联合发布了《2019-2020中国人工智能计算力发展评估报告》。报告指出,计算力是承载和推动人工智能走向实际应用的基…

在阿里,我们如何管理代码分支?

摘要: 阿里有很多的研发团队,不同事业部使用的发布流程、分支策略并非整齐划一,但总体上看是比较规整的。其中有一种主流的发布模式以及对应的分支使用方式,称为“AoneFlow”。这套工作模式思路独特,在阿里以外的地方并…

linux杀掉80端口线程命令

80端口被其他程序占用, fuser -k -n tcp 80 查看端口是否启用 telnet ip地址 端口没有启动,显示拒绝: 端口启动,显示微笑:

.ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...

0.前言 在之前的几篇中,我们大概介绍了如何创建一个http://asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元。这一篇我们将介绍一下控制器与视图直接的关系。 1. 视图 这里的视图不是数据库里的视图,是一种展示技术。在http://asp.net …

为了让开发者写MaxCompute SQL更爽,DataWorks 增强SQL 编辑器功能

摘要: 众所周知,数据开发和分析的同学每天都要花大量时间写MaxCompute SQL;Dataworks作为数据开发的IDE直接影响着大家的开发效率,这次新上线的Dataworks我们在编辑体验上做了很多工作,在前端实现MaxCompute SQL和编辑…

看懂“大数据”,这一篇就够了!

戳蓝字“CSDN云计算”关注我们哦!来源 | 鲜枣课堂作者 | 小枣君近年来,大数据这个词的热度很高,受到公众的广泛关注。对于很多人来说,当他第一次听到“大数据”这个词,会自然而然从字面上去理解——认为大数据就是大量…

服务器漏洞处理_wildfly禁用https和8443端口

文章目录一、https和84431. 问题分析1.1. https1.2. 8443端口2. 思路预测3. 解决方案一、https和8443 1. 问题分析 1.1. https 从以上2个漏洞分析,都和8443端口有关,而8443是https的端口,由此分析,和https有关。 1.2. 8443端口…

阿里云MaxCompute被Forrester评为全球云端数据仓库领导者

摘要: 参考消息网3月19日报道 日前,全球权威调研机构佛瑞斯特研究公司(Forrester)发布《2018年一季度云端数据仓库》报告。报告对大数据服务商的主要功能、区域表现、细分市场和典型客户等进行了全面评估,最终AWS、阿里…

npoi 所有列调整为一页_别再浪费纸了,一张纸就能打印Word、Excel、PPT所有内容,真厉害...

前几天公司的行政小姐姐在整理打印的废纸,不整理不知道,一整理,一个星期浪费的打印纸有几千张!!!现在可是提倡环保啊~这不,现在已经规定每人的打印纸张了,杜绝浪费,从节约…

【HBase从入门到精通系列】如何避免HBase写入过快引起的各种问题

摘要: 首先我们简单回顾下整个写入流程 client api > RPC > server IPC > RPC queue > RPC handler > write WAL > write memstore > flush to filesystem 整个写入流程从客户端调用API开始,数据会通过protobuf编码成一个请求&…

怎么加载csv_python爬虫入门实战(四)!爬取动态加载的页面

今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享。(官方不会打我吧 )配置环境为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加。环境: python3 requests 。还要引入几个系统库。参考如…

再谈全局网HBase八大应用场景

摘要: HBase可以说是一个数据库,也可以说是一个存储。拥有双重属性的HBase天生就具备广阔的应用场景。在2.0中,引入了OffHeap降低了延迟,可以满足在线的需求。引入MOB,可以存储10M左右的对象,完全适应了对象…

文件标识符必须为双精度类型的整数值标量_数据类型

标识符在Java中,标识符多用于类名、方法、字段、变量和包名等,他的命名方式需遵循以下规则:1、标识符可以由字母、数字、__、$组成,但不能包含!、#、%、空格等其他特殊字符。2、标识符的命名最好做到见名知意。3、不能…

MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案

摘要: 摘要 在SQL Server备份专题分享中,前四期我们分享了:三种常见的数据库备份、备份策略的制定、如何查找备份链以及数据库的三种恢复模式与备份之间的关系。本次月报我们分享SQL Server如何利用文件组技术来实现数据库冷热数据隔离备份的…

检测到会话cookie中缺少HttpOnly属性

解决方案01:在会话cookie中添加HttpOnly属性 具体操作步骤如下: HttpServletResponse response2 (HttpServletResponse)response; response2.setHeader( "Set-Cookie", "namevalue; HttpOnly");解决方案02(建议使用&am…

刷抖音看到 Python 工程师的工资条后,我沉默了...

戳蓝字“CSDN云计算”关注我们哦!最近无意中刷抖音刷到了一个Python工程师的工资条然后我默默的打开看了然后我默默的关闭了emmm.....后悔为什么我当时没有坚持做开发相信每一个人都想拿着高工资做着轻松的工作而如今Python技术盛行大家都纷纷学Python我不能跟你确保…

怎么将sql语句转化成语法树_数据库如何解析执行SQL

阅读文本大概需要3分钟。0x01:数据库客户端发送查询SQL客户端将查询的select sql,按照mysql通信协议传输到数据库服务。数据库服务接受查询sql,执行sql前判断要执行的sql是否是查询语句。0x02:查询缓存先行MySQL在开启查询缓存的情…

佛系程序员的月薪五万指南

摘要: 大师:很简单,我这里有一份佛系月薪 5 万指南,我看你骨骼清奇、脑门光亮,一看就是将要大富大贵之人,这份指南可以助你快速实现小目标!程序员问大师…… 青年:大师,你…