相对熵与交叉熵_熵、KL散度、交叉熵

公众号关注 “ML_NLP”设为 “星标”,重磅干货,第一时间送达!

26b2f029b8fa727788645148011ff93f.png

机器学习算法与自然语言处理出品

@公众号原创专栏作者 思婕的便携席梦思

单位 | 哈工大SCIR实验室

KL散度 = 交叉熵 - 熵

  1. 1. 熵(Entropy)

抽象解释:熵用于计算一个随机变量的信息量。对于一个随机变量X,X的熵就是它的信息量,也就是它的不确定性。
形象例子:有两个随机变量X和Y,或者说两个事件,X表示“投一枚硬币,落地时,哪一面朝上”;Y表示“太阳从哪个方向升起”。对于随机变量X,“正面朝上”和“反面朝上”的概率各为0.5;对于随机变量Y,“太阳从东边升起”的概率为1,从另外三个方向升起的概率为0。由此可以看出,事件X的不确定性大于事件Y,因此事件X的熵也就大于事件Y。
那么具体该如何计算熵呢?
熵的数学定义为:

631f5621aeaf2a44cf1032722fb3d533.png


举个例子,依旧是投硬币的那个事件:
我们令

f4705f08704abb65bd1f3ddcd317d075.png


那么它的熵为:

a4673ae3b71f0d8f2b0a16d65efd0b0f.png


从编码的角度理解熵
对于任意一个离散型随机变量,我们都可以对其进行编码。例如我们可以把字符看出一个离散型随机变量。
根据shannon的信息论,给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是X,对x∈X,其出现概率为P(x),那么其最优编码(哈夫曼编码)平均需要的比特数等于这个字符集的熵。

  1. 1. KL散度(Kullback-Leibler divergence)

抽象解释:KL散度用于计算两个随机变量的差异程度。相对于随机变量X,随机变量Y有多大的不同?这个不同的程度就是KL散度。KL散度又称为信息增益,相对熵。需要注意的是KL散度是不对称的,就是说:X关于Y的KL散度 不等于 Y关于X的KL散度。
形象例子:
X表示“不透明的袋子里有2红2白五个球,随机抓一个球,球的颜色”事件,
Y表示“不透明的袋子里有3红2白五个球,随机抓一个球,球的颜色”事件,
Z表示“不透明的袋子里有1红1白两个球,随机抓一个球,球的颜色”事件。
由于在事件X和Z中,都是P(红)=0.5 P(白)=0.5;而在事件Y中P(红)=0.6 P(白)=0.4,所以我们认为:相对于事件X,事件Y的差异程度小于事件Z。
那么该如何具体计算KL散度呢?
KL散度的数学定义为:
对于离散型随机变量,我们定义A和B的KL散度为:

aafee7bbd87e3a02f29ced61872dc9b4.png


对于离散型随机变量,我们定义A和B的KL散度为:

c7c9ddf941fd50b71d9bd0c4e6bf6b31.png


从编码的角度理解KL散度
在同样的字符集上,假设存在另一个概率分布Q(X)。如果用概率分布P(X)的最优编码(即字符x的编码长度等于log[1/P(x)]),来为符合分布Q(X)的字符编码,那么表示这些字符就会比理想情况多用一些比特数。KL-divergence就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离。

  1. 1. 交叉熵(Cross-Entropy)

抽象解释:我所理解的交叉熵的含义,与KL散度是类似的,都是用于度量两个分布或者说两个随机变量、两个事件不同的程度。
具体例子:与KL散度类似
交叉熵的数学定义:

b2ff3a7966ccafa918b132faa814d2cd.png


比较熵、KL散度和交叉熵的数学定义会发现:
KL散度 = 交叉熵 - 熵
从编码的角度理解交叉熵熵的意义是:对一个随机变量A编码所需要的最小字节数,也就是使用哈夫曼编码根据A的概率分布对A进行编码所需要的字节数;KL散度的意义是:使用随机变量B的最优编码方式对随机变量A编码所需要的额外字节数,具体来说就是使用哈夫曼编码却根据B的概率分布对A进行编码,所需要的编码数比A编码所需要的最小字节数多的数量;交叉熵的意义是:使用随机变量B的最优编码方式对随机变量A编码所需要的字节数,具体来说就是使用哈夫曼编码却根据B的概率分布对A进行编码,所需要的编码数。

912dc63ddbad40ac456efab716cc2792.png

推荐阅读:

【长文详解】从Transformer到BERT模型

赛尔译文 | 从头开始了解Transformer

百闻不如一码!手把手教你用Python搭一个Transformer

ca80e6ed94b146f15baeb3a1c9151554.png

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

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

相关文章

动手实现一个带自动微分的深度学习框架

动手实现一个带自动微分的深度学习框架 转自:Automatic Differentiation Tutorial 参考代码:https://github.com/borgwang/tinynn-autograd (主要看 core/tensor.py 和 core/ops.py) 目录 简介自动求导设计自动求导实现一个例子总结参考资料 简介 梯度…

git安装后找不见版本_结果发现git版本为1.7.4,(git --version)而官方提示必须是1.7.10及以后版本...

结果发现git版本为1.7.4,(git --version)而官方提示必须是1.7.10及以后版本升级增加ppasudo apt-add-repository ppa:git-core/ppasudo apt-get updatesudo apt-get install git如果本地已经安装过Git,可以使用升级命令:sudo apt-get dist-upgradeapt命令…

随机数生成算法:K进制逐位生成+拒绝采样

随机数生成算法:K进制逐位生成拒绝采样 转自:【宫水三叶】k 进制诸位生成 拒绝采样 基本分析 给定一个随机生成 1 ~ 7 的函数,要求实现等概率返回 1 ~ 10 的函数。 首先需要知道,在输出域上进行定量整体偏移,仍然满…

深入理解NLP Subword算法:BPE、WordPiece、ULM

深入理解NLP Subword算法:BPE、WordPiece、ULM 本文首发于微信公众号【AI充电站】,感谢大家的赞同、收藏和转发(▽) 转自:深入理解NLP Subword算法:BPE、WordPiece、ULM 前言 Subword算法如今已经成为了一个重要的NLP模型性能提升…

http 错误 404.0 - not found_电脑Regsvr32 用法和错误消息的说明

​ 对于那些可以自行注册的对象链接和嵌入 (OLE) 控件,例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件,您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。Regsvr32.exe 的用法RegSvr32.exe 具有以下命令行选项: Regs…

mysql error 1449_MySql错误:ERROR 1449 (HY000)

笔者系统为 mac ,不知怎的,Mysql 竟然报如下错误:ERROR 1449 (HY000): The user specified as a definer (mysql.infoschemalocalhost) does not exist一时没有找到是什么操作导致的这个错误。然后经过查询,参考文章解决了问题。登…

MobileNet 系列:从V1到V3

MobileNet 系列:从V1到V3 转自:轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3 自从2017年由谷歌公司提出,MobileNet可谓是轻量级网络中的Inception,经历了一代又一代的更新。成为了学习轻…

mysql 查询表的key_mysql查询表和字段的注释

1,新建表以及添加表和字段的注释.create table auth_user(ID INT(19) primary key auto_increment comment 主键,NAME VARCHAR(300) comment 姓名,CREATE_TIME date comment 创建时间)comment 用户信息表;2,修改表/字段的注释.alter table auth_user comment 修改后的表注…

mysql 高级知识点_这是我见过最全的《MySQL笔记》,涵盖MySQL所有高级知识点!...

作为运维和编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的。MySQL 作为主流的数据库,是各大厂面试官百问不厌的知识点,但是需要了解到什么程度呢?仅仅停留在 建库、创表、增删查改…

teechart mysql_TeeChart 的应用

TeeChart 是一个很棒的绘图控件,不过由于里面没有注释,网上相关的资料也很少,所以在应用的时候只能是一点点的试。为了防止以后用到的时候忘记,我就把自己用到的东西都记录下来,以便以后使用的时候查询。1、进制缩放图…

NLP新宠——浅谈Prompt的前世今生

NLP新宠——浅谈Prompt的前世今生 转自:NLP新宠——浅谈Prompt的前世今生 作者:闵映乾,中国人民大学信息学院硕士,目前研究方向为自然语言处理。 《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in…

mysql key_len_浅谈mysql explain中key_len的计算方法

mysql的explain命令可以分析sql的性能,其中有一项是key_len(索引的长度)的统计。本文将分析mysql explain中key_len的计算方法。1、创建测试表及数据CREATE TABLE member (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,age tinyint(…

requestfacade 这个是什么类?_Java 的大 Class 到底是什么?

作者在之前工作中,面试过很多求职者,发现有很多面试者对Java的 Class 搞不明白,理解的不到位,一知半解,一到用的时候,就不太会用。想写一篇关于Java Class 的文章,没有那么多专业名词&#xff0…

初学机器学习:直观解读KL散度的数学概念

初学机器学习:直观解读KL散度的数学概念 转自:初学机器学习:直观解读KL散度的数学概念 译自:https://towardsdatascience.com/light-on-math-machine-learning-intuitive-guide-to-understanding-kl-divergence-2b382ca2b2a8 解读…

php mysql读取数据查询_PHP MySQL 读取数据

PHP MySQL 读取数据从 MySQL 数据库读取数据SELECT 语句用于从数据表中读取数据:SELECT column_name(s) FROM table_name我们可以使用 * 号来读取所有数据表中的字段:SELECT * FROM table_name如需学习更多关于 SQL 的知识,请访问我们的 SQL 教程。使用 …

MySQL应用安装_mysql安装和应用

1.下载mysql安装包2.安装mysql,自定义->修改路径3.配置mysql,选择自定义->server模式->500访问量->勾选控制台->设置gbk->设置密码和允许root用户远程登录等等。以管理员权限,在控制台输入:net start MySQL, 启…

mysql 商品规格表_商品规格分析

产品表每次更新商品都会变动的,ID不能用,可是购物车还是用了,这就导致每次保存商品,哪怕什么都没有改动,也会导致用户的购物车失效。~~~其实可以考虑不是每次更新商品就除所有的SKU,毕竟有时什么都没修改呢…

mysql维表的代理键字段_mysql多维数据仓库指南--第三篇第12章(2)

宾夕法尼亚州地区客户维在本节我将用宾夕法尼亚州地区客户的子集维度来解释第二种维度子集的类型。我也将向你说明如何测试该子集维度。相对的,一个向上钻取的维包含了它基础维的所有更高级别的数据。而一个特定子集维度则选择了它基础维的某个特定的数据集合。列表…

huggingface NLP工具包教程1:Transformers模型

huggingface NLP工具包教程1:Transformers模型 原文:TRANSFORMER MODELS 本课程会通过 Hugging Face 生态系统中的一些工具包,包括 Transformers, Datasets, Tokenizers, Accelerate 和 Hugging Face Hub。…

mysql日期比较timestamp_Mysql中的Datetime和Timestamp比较(转载)

mysql中用于表示时间的三种类型date, datetime, timestamp (如果算上int的话,四种) 比较容易混淆,下面就比较一下这三种类型的异同相同点都可以用于表示时间都呈字符串显示不同点1.顾名思义,date只表示YYYY-MM-DD形式的日期,datet…