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

信息论基本知识

  • 1、熵
  • 2、联和熵与条件熵
  • 3、互信息
  • 4、交叉熵与相对熵
  • 5、困惑度
  • 6、总结

1、熵

熵也被称为自信息,描述一个随机变量的不确定性的数量。熵越大,表明不确定性越大,所包含的信息量也越大,就说明很难去预测事件行为或者正确估值。
熵的公式定义:
X为一个离散型随机变量,其概率分布是p(x)=P(X=x),x ∈\in∈ R,R为x取值空间,则X的熵 H(x) = — ∑x∈Rp(x)log2p(x)\displaystyle\sum_{x \in R} p(x)log_2p(x)x∈R∑​p(x)log2​p(x) 公式(1),单位是比特(bit)。
举例:

假设a,b,c,d,e,f 6个字符在一条语句中随机出现,每个字符出现的概率分别为:18、14、18、14、18和18\frac{1}{8}、\frac{1}{4}、\frac{1}{8}、\frac{1}{4}、\frac{1}{8}和\frac{1}{8}81​、41​、81​、41​、81​和81​。那么,每个字符的熵为多少?

H( p ) = — ∑x∈{a,b,c,d,e,f}p(x)log2p(x)\displaystyle\sum_{x \in \{a,b,c,d,e,f\}} p(x)log_2p(x)x∈{a,b,c,d,e,f}∑​p(x)log2​p(x) = -[ 4×18log218+2×14log2144\times\frac{1}{8}log_2\frac{1}{8}+2\times\frac{1}{4}log_2\frac{1}{4}4×81​log2​81​+2×41​log2​41​] = 2.5(bit)
这里计算将相同概率的字符合并计算,结果表明什么呢?
结果说明传输一个字符平均只需要2.5个比特:

字符 a b c d e f
编码 100 00 101 01 110 111

2、联和熵与条件熵

联和熵描述一对随机变量平均所需要的信息量。
公式定义:
随机变量X,Y~p(x,y),X,Y的联和熵 H(X,Y)=—∑x∈X∑y∈Yp(x)logp(x,y)H(X,Y) = —\displaystyle\sum_{x\in X} \displaystyle\sum_{y\in Y} p(x)logp(x,y)H(X,Y)=—x∈X∑​y∈Y∑​p(x)logp(x,y) 公式(2)

与之联系密切的条件熵指的是:给定X的情况下,Y的条件熵为:
H(Y∣X)=∑x∈Xp(x)H(Y∣X=x)=∑x∈Xp(x)[−∑y∈Yp(y∣x)logp(y∣x)]=—∑x∈X∑y∈Yp(x,y)logp(y∣x)H(Y|X) = \displaystyle\sum_{x\in X} p(x)H(Y|X=x)=\displaystyle\sum_{x\in X} p(x) [-\displaystyle\sum_{y\in Y} p(y|x)logp(y|x)]=—\displaystyle\sum_{x\in X} \displaystyle\sum_{y\in Y} p(x,y)logp(y|x)H(Y∣X)=x∈X∑​p(x)H(Y∣X=x)=x∈X∑​p(x)[−y∈Y∑​p(y∣x)logp(y∣x)]=—x∈X∑​y∈Y∑​p(x,y)logp(y∣x) 公式(3)
将以上公式(1)化简可以得到 H(X,Y)=H(X)+H(Y∣X)H(X,Y) =H(X) +H(Y|X)H(X,Y)=H(X)+H(Y∣X) 公式(4),被称为熵的连锁规则。
推广到一般情况,有H(X1,X2,⋅⋅⋅,Xn)=H(X1)+H(X2∣X1)+H(X3∣X1,X2)+⋅⋅⋅+H(Xn∣X1,⋅⋅⋅,Xn−1)H(X_1,X_2,···,X_n) =H(X_1) +H(X_2|X_1)+H(X_3|X_1,X_2)+···+H(X_n|X_1,···,X_{n-1})H(X1​,X2​,⋅⋅⋅,Xn​)=H(X1​)+H(X2​∣X1​)+H(X3​∣X1​,X2​)+⋅⋅⋅+H(Xn​∣X1​,⋅⋅⋅,Xn−1​)

3、互信息

熵的连锁规则H(X,Y)=H(X)+H(Y∣X)=H(Y)+H(X∣Y)H(X,Y) =H(X) +H(Y|X)=H(Y) +H(X|Y)H(X,Y)=H(X)+H(Y∣X)=H(Y)+H(X∣Y),所以H(X)−H(X∣Y)=H(Y)−H(Y∣X)H(X) - H(X|Y)=H(Y)-H(Y|X)H(X)−H(X∣Y)=H(Y)−H(Y∣X),这个差就成为互信息,记作I(X;Y)I(X;Y)I(X;Y) 。

在图中I(X;Y)反映的是已知Y的值后X的不确定性的减少量。在图中I(X;Y)反映的是已知Y的值后X的不确定性的减少量。在图中I(X;Y)反映的是已知Y的值后X的不确定性的减少量。简而言之,Y的值透露了多少关于X的信息量。
因为H(X|X)=0,所以H(X)=H(X)-H(X|X)=I(X;X),这公式推导说明了熵也成为自信息的概念,也说明两个完全相互依赖的变量之间的互信息并不是一个常量,而是取决定于它们的熵。
实际应用: 互信息描述了两个随机变量之间的统计相关性,平均互信息是非负的,在NLP中用来判断两个对象之间的关系,比如:根据主题类别和词汇之间的互信息进行特征提取。另外在词汇聚类、汉语自动分词、词义消岐、文本分类等问题有着重要用途。

4、交叉熵与相对熵

相对熵简称KL差异或KL距离,衡量相同时间空间里两个概率分布相对差异的测度。两个概率分布p(x)和q(x)的相对熵定义为D(p∣∣q)=∑x∈Xp(x)log2p(x)q(x)D(p||q) = \displaystyle\sum_{x \in X} p(x)log_2\frac{p(x)}{q(x)}D(p∣∣q)=x∈X∑​p(x)log2​q(x)p(x)​
另外,0log(0/q)=0,plog(p/0)=∞0log(0/q)=0,plog(p/0)=\infty0log(0/q)=0,plog(p/0)=∞.期望值为D(p∣∣q)=Ep(logp(x)q(x))D(p||q)=E_p(log\frac{p(x)}{q(x)})D(p∣∣q)=Ep​(logq(x)p(x)​)

根据公式可知,当两个随机分布完全相同时,即p=q,其相对熵为0。当两个随机分布差别增加,相对熵的期望值也增大。
相对熵与互信息的联系如下证明:

交叉熵就是机器学习中经常提到的一种熵的计算。它到底是什么呢?

交叉熵是衡量估计模型与真实概率分布之间之间差异情况。
如果一个随机变量X~p(x),q(x)p(x),q(x)p(x),q(x)为用于近似p(x)p(x)p(x)的概率分布,则实际p与模型q之间的交叉熵定义为:
H(X,q)=H(X)+D(p∣∣q)=−∑xp(x)logq(x)=Ep(log1q(x))H(X,q)=H(X)+D(p||q)=-\displaystyle\sum_xp(x)logq(x)=E_p(log\frac{1}{q(x)})H(X,q)=H(X)+D(p∣∣q)=−x∑​p(x)logq(x)=Ep​(logq(x)1​)

这里我们定义语言L=(X)L=(X)L=(X)~p(x)p(x)p(x)与其模型q的交叉熵为:

H(L,q)=−lim⁡n→∞1n∑x1np(x1n)logq(x1n)H(L,q)=-\lim_{n \to \infty}\frac{1}{n}\displaystyle\sum_{x_1^n}p(x_1^n)logq(x_1^n)H(L,q)=−n→∞lim​n1​x1n​∑​p(x1n​)logq(x1n​)
在理想的状态下,可以将L与q模型的交叉熵简化为:
H(L,q)=−lim⁡n→∞1nlogq(x1n)H(L,q)=-\lim_{n \to \infty}\frac{1}{n}logq(x_1^n)H(L,q)=−n→∞lim​n1​logq(x1n​)

在设计模型q时候,目的是使交叉熵最小,这样模型的表现更好,从而使模型更接近最真实的概率分布p(x)p(x)p(x),一般的,当样本足够大时候,上面计算近似为:H(L,q)=−1Nlogq(x1N)H(L,q)=-\frac{1}{N}logq(x_1^N)H(L,q)=−N1​logq(x1N​)

5、困惑度

在设计语言模型,通常用困惑度(perplexityperplexityperplexity)来代替交叉熵衡量语言模型的好坏。

假设语言L样本l1n=l1…ln,则Ll_1^n=l_1\dots l_n,则Ll1n​=l1​…ln​,则L的困惑度PPq=2−1nlogq(l1n)=[q(l1n)]−1nPP_q=2^{-\frac{1}{n}logq(l_1^n)}=[q(l_1^n)]^{-\frac{1}{n}}PPq​=2−n1​logq(l1n​)=[q(l1n​)]−n1​

所以,寻找困惑度最小的模型成为模型设计的任务,通常指的是模型对于测试数据的困惑度。

6、总结

在信息论的熵部分,我们学到了什么呢?开始说到,这是NLP基础,也是入门机器学习的重要理论部分。

  1. (自信息):描述一个随机变量的不确定性的数量。熵越大,表明不确定性越大,所包含的信息量也越大,就说明很难去预测事件行为或者正确估值。
  2. 联和熵:描述一对随机变量平均所需要的信息量。
  3. 条件熵:给定X的情况下,通过联和熵计算Y的条件熵,类似于条件概率思想。由此引出互信息概念。
  4. 相对熵:简称KL差异或KL距离,衡量相同时间空间里两个概率分布相对差异的测度,与互信息密切相关。
  5. 交叉熵:衡量估计模型与真实概率分布之间之间差异情况。

学习之后的一些记录,发现这部分知识在其他方面经常提及到,却不知其原理知识,因此做了一个简单的总结备忘,与尔共享!

我的博客园:熵、联和熵与条件熵、交叉熵与相对熵是什么呢?详细解读这里有!
我的CSDN博客:熵、联和熵与条件熵、交叉熵与相对熵是什么呢?来这里有详细解读!

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

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

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

  2. 机器学习常见损失函数,二元交叉熵,类别交叉熵,MSE,稀疏类别交叉熵

    一 损失函数介绍 损失函数用于描述模型预测值与真实值的差距大小.一般有有两种常见的算法--均值平方差(MSE)和交叉熵.下面来分别介绍每个算法的具体内容. 1 均值平方差 均值平方差(Mean Squ ...

  3. pytorch_lesson10 二分类交叉熵损失函数及调用+多分类交叉熵损失函数及调用

    注:仅仅是学习记录笔记,搬运了学习课程的ppt内容,本意不是抄袭!望大家不要误解!纯属学习记录笔记!!!!!! 文章目录 一.机器学习中的优化思想 二.回归:误差平方和SSE 三.二分类交叉熵损失函数 ...

  4. 损失函数-交叉熵的推导和二分类交叉熵

    交叉熵 期望: 期望就是所有随机变量的均值. E(X)=X1*P(X1)+X2*P(X2)+X3*P(X3) 熵: 熵表示所有信息量的期望. 信息量如何计算呢? 概率值取Log,然后加个负号,就是信息 ...

  5. dice系数 交叉熵_一文搞懂交叉熵损失

    本文从信息论和最大似然估计得角度推导交叉熵作为分类损失函数的依据. 从熵来看交叉熵损失 信息量 信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小. 设\(X ...

  6. 交叉熵以及通过Python实现softmax_交叉熵(tensorflow验证)

    文章目录 交叉熵(Cross Entropy) 信息论 相对熵 交叉熵 机器学习中的交叉熵 为什么要用交叉熵做损失函数? 分类问题中的交叉熵 softmax softmax_cross_entropy ...

  7. 交叉熵损失函数分类_BCE和CE交叉熵损失函数的区别

    首先需要说明的是PyTorch里面的BCELoss和CrossEntropyLoss都是交叉熵,数学本质上是没有区别的,区别在于应用中的细节. BCE适用于0/1二分类,计算公式就是 " - ...

  8. 熵 Entropy -- 香农熵、相对熵、交叉熵、条件熵

    快速概览: 香农熵 -- 熵的定义 交叉熵 -- 一般可做为分类模型的损失函数 (交叉熵是由相对熵转化过来的,交叉熵 = 相对熵 - 熵 ),对于采样的数据(训练集,熵H 是定值,故交叉熵 和 相对熵 ...

  9. 最大交叉熵matlab实现,交叉熵算法

    交叉熵损失函数_计算机软件及应用_IT/计算机_专业资料.1.从方差代价函数说起... 演化算法 [C], 王斌; 李元香 4.一种求解抛物型方程的 Monte Carlo 并行算法 [C], 刘芳芳 ...

  10. 为什么需要交叉熵代价函数

    为什么需要交叉熵代价函数 人类却能够根据明显的犯错快速地学习到正确的东西.相反,在我们的错误不是很好地定义的时候,学习的过程会变得更加缓慢.但神经网络却不一定如此,这种行为看起来和人类学习行为差异很大 ...

最新文章

  1. js如何将数据放在一个内置窗口里面_Java 爬虫遇上数据异步加载,试试这两种办法!...
  2. 布隆过滤器 redis_使用基于 Redis 的 Java 布隆过滤器
  3. (四十三)java版spring cloud+spring boot+redis多租户社交电子商务平台-eureka集群整合config配置中心...
  4. ·记2014.5.16的一件小事
  5. html mint ui,vue mint-ui初次使用总结
  6. 1036 跟奥巴马一起编程 (15 分)(c++)C++
  7. SchemaCrawler 9.3 发布
  8. 社交网络图中结点的“重要性”计算 (30 分)【最高效解法】
  9. 收发一体超声波测距离传感器模块_一文了解超声波液位计
  10. 敏捷开发般若敏捷系列之八:敏捷的未来会怎样?
  11. 从0开始学习 GitHub 系列之「团队合作利器 Branch」
  12. 矩阵分析(二):子空间之间的代数关系-无交连、正交与正交补
  13. 低版本VC2010打开高版本VC2012的方法
  14. 如何查看电脑系统版本
  15. 《小狗钱钱》读书笔记
  16. bolb layer
  17. 数据结构实验课_实验四 队列
  18. SEO优化影响谷歌排名的因素
  19. Excel COUNT COUNTA区别
  20. 对于Osmdroid源码资源的简单研究

热门文章

  1. 2022年6月语音合成(TTS)和语音识别(ASR)论文月报
  2. 7.3 pgfplots点集
  3. [雪峰磁针石博客]python3标准库-中文版2:内置函数
  4. uos命令_UOS与Deepin OS区别详解
  5. Android 8.0 手机亮灭屏
  6. 使用rsync实现文件同步
  7. vue点tab不刷新页面_如何使tab页切换,页面不刷新
  8. windows10安装更新很慢ndows,Windows 10升级太慢了?这里有俩窍门
  9. 图解Activity启动流程
  10. oracle中substr () in,Oracle中的substr()函数使用详解及应用